From 4bb95ca2a5c9231cebfec9ecb38bfd4cf8b33da5 Mon Sep 17 00:00:00 2001 From: ryoncook Date: Fri, 14 Jan 2022 10:58:24 -0600 Subject: [PATCH] Transfering from old repo --- .browserslistrc | 17 + .editorconfig | 16 + .gitignore | 45 + Diagram.drawio | 1 + README.md | 27 + angular.json | 115 + karma.conf.js | 44 + package-lock.json | 12914 ++++++++++++++++ package.json | 49 + src/app/app-routing.module.ts | 15 + src/app/app.component.html | 5 + src/app/app.component.scss | 0 src/app/app.component.spec.ts | 25 + src/app/app.component.ts | 14 + src/app/app.module.ts | 43 + .../auth-button/auth-button.component.html | 9 + .../auth-button/auth-button.component.scss | 5 + .../auth-button/auth-button.component.spec.ts | 28 + .../auth-button/auth-button.component.ts | 14 + .../homepage/homepage.component.html | 10 + .../homepage/homepage.component.scss | 0 .../homepage/homepage.component.spec.ts | 63 + .../components/homepage/homepage.component.ts | 16 + .../components/navbar/navbar.component.html | 25 + .../components/navbar/navbar.component.scss | 22 + .../navbar/navbar.component.spec.ts | 59 + src/app/components/navbar/navbar.component.ts | 17 + .../saved-player/saved-player.component.html | 49 + .../saved-player/saved-player.component.scss | 3 + .../saved-player.component.spec.ts | 183 + .../saved-player/saved-player.component.ts | 48 + .../components/splayer/splayer.component.html | 65 + .../components/splayer/splayer.component.scss | 14 + .../splayer/splayer.component.spec.ts | 324 + .../splayer/splayer.component.test2.spec.ts | 99 + .../components/splayer/splayer.component.ts | 337 + .../user-profile/user-profile.component.html | 78 + .../user-profile.component.nullAuth.spec.ts | 95 + .../user-profile/user-profile.component.scss | 3 + .../user-profile.component.spec.ts | 303 + .../user-profile/user-profile.component.ts | 138 + src/app/models/auth/auth.model.ts | 4 + src/app/models/hero/hero.model.ts | 4 + src/app/models/match/match.model.ts | 23 + src/app/models/s-player/splayer.model.ts | 10 + src/app/services/auth0.service.spec.ts | 35 + src/app/services/auth0.service.ts | 15 + src/app/services/opendota.service.spec.ts | 48 + src/app/services/opendota.service.ts | 25 + src/app/services/save-player.service.spec.ts | 147 + src/app/services/save-player.service.ts | 166 + src/app/services/stratz.service.spec.ts | 67 + src/app/services/stratz.service.ts | 41 + src/assets/.gitkeep | 0 src/assets/Dire_icon.png | Bin 0 -> 23228 bytes src/assets/Radiant_icon.png | Bin 0 -> 27819 bytes src/assets/heroes/Abaddon.png | Bin 0 -> 1235 bytes src/assets/heroes/Alchemist.png | Bin 0 -> 1473 bytes src/assets/heroes/Ancient Apparition.png | Bin 0 -> 1851 bytes src/assets/heroes/Anti-Mage.png | Bin 0 -> 1599 bytes src/assets/heroes/Arc Warden.png | Bin 0 -> 2251 bytes src/assets/heroes/Axe.png | Bin 0 -> 855 bytes src/assets/heroes/Bane.png | Bin 0 -> 1441 bytes src/assets/heroes/Batrider.png | Bin 0 -> 900 bytes src/assets/heroes/Beastmaster.png | Bin 0 -> 1656 bytes src/assets/heroes/Bloodseeker.png | Bin 0 -> 1267 bytes src/assets/heroes/Bounty Hunter.png | Bin 0 -> 1550 bytes src/assets/heroes/Brewmaster.png | Bin 0 -> 2386 bytes src/assets/heroes/Bristleback.png | Bin 0 -> 1981 bytes src/assets/heroes/Broodmother.png | Bin 0 -> 1084 bytes src/assets/heroes/Centaur Warrunner.png | Bin 0 -> 1924 bytes src/assets/heroes/Chaos Knight.png | Bin 0 -> 1600 bytes src/assets/heroes/Chen.png | Bin 0 -> 1610 bytes src/assets/heroes/Clinkz.png | Bin 0 -> 1531 bytes src/assets/heroes/Clockwerk.png | Bin 0 -> 1480 bytes src/assets/heroes/Crystal Maiden.png | Bin 0 -> 2579 bytes src/assets/heroes/Dark Seer.png | Bin 0 -> 1218 bytes src/assets/heroes/Dazzle.png | Bin 0 -> 1155 bytes src/assets/heroes/Death Prophet.png | Bin 0 -> 1625 bytes src/assets/heroes/Disruptor.png | Bin 0 -> 1752 bytes src/assets/heroes/Doom.png | Bin 0 -> 1689 bytes src/assets/heroes/Dragon Knight.png | Bin 0 -> 1498 bytes src/assets/heroes/Drow Ranger.png | Bin 0 -> 1626 bytes src/assets/heroes/Earth Spirit.png | Bin 0 -> 2194 bytes src/assets/heroes/Earthshaker.png | Bin 0 -> 1247 bytes src/assets/heroes/Elder Titan.png | Bin 0 -> 1858 bytes src/assets/heroes/Ember Spirit.png | Bin 0 -> 1367 bytes src/assets/heroes/Enchantress.png | Bin 0 -> 1898 bytes src/assets/heroes/Enigma.png | Bin 0 -> 1074 bytes src/assets/heroes/Faceless Void.png | Bin 0 -> 1470 bytes src/assets/heroes/Grimstroke.png | Bin 0 -> 964 bytes src/assets/heroes/Gyrocopter.png | Bin 0 -> 1388 bytes src/assets/heroes/Huskar.png | Bin 0 -> 1446 bytes src/assets/heroes/Invoker.png | Bin 0 -> 2440 bytes src/assets/heroes/Io.png | Bin 0 -> 2980 bytes src/assets/heroes/Jakiro.png | Bin 0 -> 1552 bytes src/assets/heroes/Juggernaut.png | Bin 0 -> 833 bytes src/assets/heroes/Keeper of the Light.png | Bin 0 -> 1511 bytes src/assets/heroes/Kunkka.png | Bin 0 -> 1546 bytes src/assets/heroes/Legion Commander.png | Bin 0 -> 2465 bytes src/assets/heroes/Leshrac.png | Bin 0 -> 1074 bytes src/assets/heroes/Lich.png | Bin 0 -> 1242 bytes src/assets/heroes/Lifestealer.png | Bin 0 -> 1645 bytes src/assets/heroes/Lina.png | Bin 0 -> 2020 bytes src/assets/heroes/Lion.png | Bin 0 -> 1639 bytes src/assets/heroes/Lone Druid.png | Bin 0 -> 1682 bytes src/assets/heroes/Luna.png | Bin 0 -> 1993 bytes src/assets/heroes/Lycan.png | Bin 0 -> 1649 bytes src/assets/heroes/Magnus.png | Bin 0 -> 1727 bytes src/assets/heroes/Medusa.png | Bin 0 -> 2796 bytes src/assets/heroes/Meepo.png | Bin 0 -> 1454 bytes src/assets/heroes/Mirana.png | Bin 0 -> 1581 bytes src/assets/heroes/Morphling.png | Bin 0 -> 1877 bytes src/assets/heroes/Naga Siren.png | Bin 0 -> 1651 bytes src/assets/heroes/Nature's Prophet.png | Bin 0 -> 1714 bytes src/assets/heroes/Necrophos.png | Bin 0 -> 1210 bytes src/assets/heroes/Night Stalker.png | Bin 0 -> 1247 bytes src/assets/heroes/Nyx Assassin.png | Bin 0 -> 1629 bytes src/assets/heroes/Ogre Magi.png | Bin 0 -> 2121 bytes src/assets/heroes/Omniknight.png | Bin 0 -> 1843 bytes src/assets/heroes/Oracle.png | Bin 0 -> 1450 bytes src/assets/heroes/Outworld Destroyer.png | Bin 0 -> 1576 bytes src/assets/heroes/Phantom Assassin.png | Bin 0 -> 1770 bytes src/assets/heroes/Phantom Lancer.png | Bin 0 -> 1587 bytes src/assets/heroes/Phoenix.png | Bin 0 -> 2100 bytes src/assets/heroes/Puck.png | Bin 0 -> 1830 bytes src/assets/heroes/Pudge.png | Bin 0 -> 2134 bytes src/assets/heroes/Pugna.png | Bin 0 -> 1272 bytes src/assets/heroes/Queen of Pain.png | Bin 0 -> 1235 bytes src/assets/heroes/Razor.png | Bin 0 -> 1384 bytes src/assets/heroes/Riki.png | Bin 0 -> 1449 bytes src/assets/heroes/Rubick.png | Bin 0 -> 1624 bytes src/assets/heroes/Sand King.png | Bin 0 -> 1303 bytes src/assets/heroes/Shadow Demon.png | Bin 0 -> 1407 bytes src/assets/heroes/Shadow Fiend.png | Bin 0 -> 2016 bytes src/assets/heroes/Shadow Shaman.png | Bin 0 -> 1732 bytes src/assets/heroes/Silencer.png | Bin 0 -> 1151 bytes src/assets/heroes/Skywrath Mage.png | Bin 0 -> 1619 bytes src/assets/heroes/Slardar.png | Bin 0 -> 1636 bytes src/assets/heroes/Slark.png | Bin 0 -> 1561 bytes src/assets/heroes/Sniper.png | Bin 0 -> 2003 bytes src/assets/heroes/Spectre.png | Bin 0 -> 1511 bytes src/assets/heroes/Spirit Breaker.png | Bin 0 -> 1841 bytes src/assets/heroes/Storm Spirit.png | Bin 0 -> 1390 bytes src/assets/heroes/Sven.png | Bin 0 -> 1581 bytes src/assets/heroes/Techies.png | Bin 0 -> 1578 bytes src/assets/heroes/Templar Assassin.png | Bin 0 -> 2081 bytes src/assets/heroes/Terrorblade.png | Bin 0 -> 1676 bytes src/assets/heroes/Tidehunter.png | Bin 0 -> 1707 bytes src/assets/heroes/Timbersaw.png | Bin 0 -> 1472 bytes src/assets/heroes/Tinker.png | Bin 0 -> 1265 bytes src/assets/heroes/Tiny.png | Bin 0 -> 2321 bytes src/assets/heroes/Treant Protector.png | Bin 0 -> 1817 bytes src/assets/heroes/Troll Warlord.png | Bin 0 -> 1375 bytes src/assets/heroes/Tusk.png | Bin 0 -> 1506 bytes src/assets/heroes/Underlord.png | Bin 0 -> 5147 bytes src/assets/heroes/Undying.png | Bin 0 -> 1466 bytes src/assets/heroes/Ursa.png | Bin 0 -> 1538 bytes src/assets/heroes/Vengeful Spirit.png | Bin 0 -> 2148 bytes src/assets/heroes/Venomancer.png | Bin 0 -> 1823 bytes src/assets/heroes/Viper.png | Bin 0 -> 1471 bytes src/assets/heroes/Visage.png | Bin 0 -> 2191 bytes src/assets/heroes/Warlock.png | Bin 0 -> 1500 bytes src/assets/heroes/Weaver.png | Bin 0 -> 1606 bytes src/assets/heroes/Windranger.png | Bin 0 -> 2405 bytes src/assets/heroes/Winter Wyvern.png | Bin 0 -> 2324 bytes src/assets/heroes/Witch Doctor.png | Bin 0 -> 1307 bytes src/assets/heroes/Wraith King.png | Bin 0 -> 1775 bytes src/assets/heroes/Zeus.png | Bin 0 -> 1800 bytes src/assets/heroes/hero 112.png | Bin 0 -> 133 bytes src/environments/environment.prod.ts | 3 + src/environments/environment.ts | 16 + src/favicon.ico | Bin 0 -> 21227 bytes src/index.html | 13 + src/main.ts | 12 + src/polyfills.ts | 65 + src/styles.scss | 1 + src/test.ts | 25 + tsconfig.app.json | 16 + tsconfig.json | 31 + tsconfig.spec.json | 18 + 181 files changed, 16122 insertions(+) create mode 100644 .browserslistrc create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 Diagram.drawio create mode 100644 README.md create mode 100644 angular.json create mode 100644 karma.conf.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/app/app-routing.module.ts create mode 100644 src/app/app.component.html create mode 100644 src/app/app.component.scss create mode 100644 src/app/app.component.spec.ts create mode 100644 src/app/app.component.ts create mode 100644 src/app/app.module.ts create mode 100644 src/app/components/auth-button/auth-button.component.html create mode 100644 src/app/components/auth-button/auth-button.component.scss create mode 100644 src/app/components/auth-button/auth-button.component.spec.ts create mode 100644 src/app/components/auth-button/auth-button.component.ts create mode 100644 src/app/components/homepage/homepage.component.html create mode 100644 src/app/components/homepage/homepage.component.scss create mode 100644 src/app/components/homepage/homepage.component.spec.ts create mode 100644 src/app/components/homepage/homepage.component.ts create mode 100644 src/app/components/navbar/navbar.component.html create mode 100644 src/app/components/navbar/navbar.component.scss create mode 100644 src/app/components/navbar/navbar.component.spec.ts create mode 100644 src/app/components/navbar/navbar.component.ts create mode 100644 src/app/components/saved-player/saved-player.component.html create mode 100644 src/app/components/saved-player/saved-player.component.scss create mode 100644 src/app/components/saved-player/saved-player.component.spec.ts create mode 100644 src/app/components/saved-player/saved-player.component.ts create mode 100644 src/app/components/splayer/splayer.component.html create mode 100644 src/app/components/splayer/splayer.component.scss create mode 100644 src/app/components/splayer/splayer.component.spec.ts create mode 100644 src/app/components/splayer/splayer.component.test2.spec.ts create mode 100644 src/app/components/splayer/splayer.component.ts create mode 100644 src/app/components/user-profile/user-profile.component.html create mode 100644 src/app/components/user-profile/user-profile.component.nullAuth.spec.ts create mode 100644 src/app/components/user-profile/user-profile.component.scss create mode 100644 src/app/components/user-profile/user-profile.component.spec.ts create mode 100644 src/app/components/user-profile/user-profile.component.ts create mode 100644 src/app/models/auth/auth.model.ts create mode 100644 src/app/models/hero/hero.model.ts create mode 100644 src/app/models/match/match.model.ts create mode 100644 src/app/models/s-player/splayer.model.ts create mode 100644 src/app/services/auth0.service.spec.ts create mode 100644 src/app/services/auth0.service.ts create mode 100644 src/app/services/opendota.service.spec.ts create mode 100644 src/app/services/opendota.service.ts create mode 100644 src/app/services/save-player.service.spec.ts create mode 100644 src/app/services/save-player.service.ts create mode 100644 src/app/services/stratz.service.spec.ts create mode 100644 src/app/services/stratz.service.ts create mode 100644 src/assets/.gitkeep create mode 100644 src/assets/Dire_icon.png create mode 100644 src/assets/Radiant_icon.png create mode 100644 src/assets/heroes/Abaddon.png create mode 100644 src/assets/heroes/Alchemist.png create mode 100644 src/assets/heroes/Ancient Apparition.png create mode 100644 src/assets/heroes/Anti-Mage.png create mode 100644 src/assets/heroes/Arc Warden.png create mode 100644 src/assets/heroes/Axe.png create mode 100644 src/assets/heroes/Bane.png create mode 100644 src/assets/heroes/Batrider.png create mode 100644 src/assets/heroes/Beastmaster.png create mode 100644 src/assets/heroes/Bloodseeker.png create mode 100644 src/assets/heroes/Bounty Hunter.png create mode 100644 src/assets/heroes/Brewmaster.png create mode 100644 src/assets/heroes/Bristleback.png create mode 100644 src/assets/heroes/Broodmother.png create mode 100644 src/assets/heroes/Centaur Warrunner.png create mode 100644 src/assets/heroes/Chaos Knight.png create mode 100644 src/assets/heroes/Chen.png create mode 100644 src/assets/heroes/Clinkz.png create mode 100644 src/assets/heroes/Clockwerk.png create mode 100644 src/assets/heroes/Crystal Maiden.png create mode 100644 src/assets/heroes/Dark Seer.png create mode 100644 src/assets/heroes/Dazzle.png create mode 100644 src/assets/heroes/Death Prophet.png create mode 100644 src/assets/heroes/Disruptor.png create mode 100644 src/assets/heroes/Doom.png create mode 100644 src/assets/heroes/Dragon Knight.png create mode 100644 src/assets/heroes/Drow Ranger.png create mode 100644 src/assets/heroes/Earth Spirit.png create mode 100644 src/assets/heroes/Earthshaker.png create mode 100644 src/assets/heroes/Elder Titan.png create mode 100644 src/assets/heroes/Ember Spirit.png create mode 100644 src/assets/heroes/Enchantress.png create mode 100644 src/assets/heroes/Enigma.png create mode 100644 src/assets/heroes/Faceless Void.png create mode 100644 src/assets/heroes/Grimstroke.png create mode 100644 src/assets/heroes/Gyrocopter.png create mode 100644 src/assets/heroes/Huskar.png create mode 100644 src/assets/heroes/Invoker.png create mode 100644 src/assets/heroes/Io.png create mode 100644 src/assets/heroes/Jakiro.png create mode 100644 src/assets/heroes/Juggernaut.png create mode 100644 src/assets/heroes/Keeper of the Light.png create mode 100644 src/assets/heroes/Kunkka.png create mode 100644 src/assets/heroes/Legion Commander.png create mode 100644 src/assets/heroes/Leshrac.png create mode 100644 src/assets/heroes/Lich.png create mode 100644 src/assets/heroes/Lifestealer.png create mode 100644 src/assets/heroes/Lina.png create mode 100644 src/assets/heroes/Lion.png create mode 100644 src/assets/heroes/Lone Druid.png create mode 100644 src/assets/heroes/Luna.png create mode 100644 src/assets/heroes/Lycan.png create mode 100644 src/assets/heroes/Magnus.png create mode 100644 src/assets/heroes/Medusa.png create mode 100644 src/assets/heroes/Meepo.png create mode 100644 src/assets/heroes/Mirana.png create mode 100644 src/assets/heroes/Morphling.png create mode 100644 src/assets/heroes/Naga Siren.png create mode 100644 src/assets/heroes/Nature's Prophet.png create mode 100644 src/assets/heroes/Necrophos.png create mode 100644 src/assets/heroes/Night Stalker.png create mode 100644 src/assets/heroes/Nyx Assassin.png create mode 100644 src/assets/heroes/Ogre Magi.png create mode 100644 src/assets/heroes/Omniknight.png create mode 100644 src/assets/heroes/Oracle.png create mode 100644 src/assets/heroes/Outworld Destroyer.png create mode 100644 src/assets/heroes/Phantom Assassin.png create mode 100644 src/assets/heroes/Phantom Lancer.png create mode 100644 src/assets/heroes/Phoenix.png create mode 100644 src/assets/heroes/Puck.png create mode 100644 src/assets/heroes/Pudge.png create mode 100644 src/assets/heroes/Pugna.png create mode 100644 src/assets/heroes/Queen of Pain.png create mode 100644 src/assets/heroes/Razor.png create mode 100644 src/assets/heroes/Riki.png create mode 100644 src/assets/heroes/Rubick.png create mode 100644 src/assets/heroes/Sand King.png create mode 100644 src/assets/heroes/Shadow Demon.png create mode 100644 src/assets/heroes/Shadow Fiend.png create mode 100644 src/assets/heroes/Shadow Shaman.png create mode 100644 src/assets/heroes/Silencer.png create mode 100644 src/assets/heroes/Skywrath Mage.png create mode 100644 src/assets/heroes/Slardar.png create mode 100644 src/assets/heroes/Slark.png create mode 100644 src/assets/heroes/Sniper.png create mode 100644 src/assets/heroes/Spectre.png create mode 100644 src/assets/heroes/Spirit Breaker.png create mode 100644 src/assets/heroes/Storm Spirit.png create mode 100644 src/assets/heroes/Sven.png create mode 100644 src/assets/heroes/Techies.png create mode 100644 src/assets/heroes/Templar Assassin.png create mode 100644 src/assets/heroes/Terrorblade.png create mode 100644 src/assets/heroes/Tidehunter.png create mode 100644 src/assets/heroes/Timbersaw.png create mode 100644 src/assets/heroes/Tinker.png create mode 100644 src/assets/heroes/Tiny.png create mode 100644 src/assets/heroes/Treant Protector.png create mode 100644 src/assets/heroes/Troll Warlord.png create mode 100644 src/assets/heroes/Tusk.png create mode 100644 src/assets/heroes/Underlord.png create mode 100644 src/assets/heroes/Undying.png create mode 100644 src/assets/heroes/Ursa.png create mode 100644 src/assets/heroes/Vengeful Spirit.png create mode 100644 src/assets/heroes/Venomancer.png create mode 100644 src/assets/heroes/Viper.png create mode 100644 src/assets/heroes/Visage.png create mode 100644 src/assets/heroes/Warlock.png create mode 100644 src/assets/heroes/Weaver.png create mode 100644 src/assets/heroes/Windranger.png create mode 100644 src/assets/heroes/Winter Wyvern.png create mode 100644 src/assets/heroes/Witch Doctor.png create mode 100644 src/assets/heroes/Wraith King.png create mode 100644 src/assets/heroes/Zeus.png create mode 100644 src/assets/heroes/hero 112.png create mode 100644 src/environments/environment.prod.ts create mode 100644 src/environments/environment.ts create mode 100644 src/favicon.ico create mode 100644 src/index.html create mode 100644 src/main.ts create mode 100644 src/polyfills.ts create mode 100644 src/styles.scss create mode 100644 src/test.ts create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.spec.json diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..427441d --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,17 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# For the full list of supported browsers by the Angular framework, please see: +# https://angular.io/guide/browser-support + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +last 1 Chrome version +last 1 Firefox version +last 2 Edge major versions +last 2 Safari major versions +last 2 iOS major versions +Firefox ESR +not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line. diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..59d9a3a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..de51f68 --- /dev/null +++ b/.gitignore @@ -0,0 +1,45 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events*.json + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db diff --git a/Diagram.drawio b/Diagram.drawio new file mode 100644 index 0000000..884d4df --- /dev/null +++ b/Diagram.drawio @@ -0,0 +1 @@ +7VhNc5swEP01PjYDyHbtY/3RJDNNpzM+tDllZNggNYJ1hbBNf31XWBgIiSfpJGMOOaF92tXHeyvtiAGbJ/tLzTfiBiNQg8CL9gO2GASBH7AhfSxSHJCJPzkAsZaRc6qBlfwLDvQcmssIspajQVRGbtpgiGkKoWlhXGvctd3uUbVn3fAYOsAq5KqL/pSREW4XI6/Gr0DGoprZ91xPwitnB2SCR7hrQGw5YHONaA6tZD8HZcmreDnEfX2m97gwDal5ScDd3SyOM5g9/FlNZ3mWX+Ek/FSpkZmi2jFERIAzURuBMaZcLWt0pjFPI7DDemTVPt8QNwT6BP4GYwqnJs8NEiRMolwv7KX5ZcMvRs66dYPZ9mLfNIrKSI0uGkHWvK3Gs0YdVlpV3GF/dlPP8uagDHMdwimyRi4BuY7BnHIcH/WlgwGYAK2IAjUobuS2vRLuMjQ++tUiUsPp+ApNbXxfNPX/S1Ovj5pOz6rp6EPTt9e0cQ+fQdNqmVuucjfVFQ1dVqTHYu+ENLDa8HLfOyq1baG4knFK7ZC4An1kcwvawP40n93duwDG3Ppc5fanrpDt6jroTxwmGjVw7L0XYeMOYd/5ds11L+gat+l6iq3gCbaG78VWMPy4Ml5+ZUxfemWws14Z084J+KF4Ab04AcFnr3UCWHD2I+B1b1jQ2AeyhuPekcU6ZN1wEwp6ffWAr8fJNfTPzle3Gl3SBZASlGf2RHqC5rS8AU+uqXte92QCc3qIBt4a7NLWCsp3re0BrkNRvlStoxHc0Od6cTGwmxvzxHKdrjP7WZEKzcGosatjNu5isNNyhWlckmVE6QFSH96o5VxCZgZ1cdERmvQybW0zo/EB5qhoeWyRYmqrxr1U6hHUyQGrvqR39RfXkcgoKkvOU8nULkNvUZ3b2TNi3ew5+jSz5/icf0X6kFm/6su+xr8RtvwH \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..b02764b --- /dev/null +++ b/README.md @@ -0,0 +1,27 @@ +# EZDotaUI + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.1.1. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. diff --git a/angular.json b/angular.json new file mode 100644 index 0000000..64f599a --- /dev/null +++ b/angular.json @@ -0,0 +1,115 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "EZDota-UI": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + }, + "@schematics/angular:application": { + "strict": true + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/EZDota-UI", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.scss", + "node_modules/bootstrap/dist/css/bootstrap.min.css" + ], + "scripts": [ + "node_modules/jquery/dist/jquery.min.js", + "node_modules/bootstrap/dist/js/bootstrap.min.js" + ] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "500kb", + "maximumError": "1mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "outputHashing": "all" + }, + "development": { + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "configurations": { + "production": { + "browserTarget": "EZDota-UI:build:production" + }, + "development": { + "browserTarget": "EZDota-UI:build:development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "EZDota-UI:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.scss" + ], + "scripts": [] + } + } + } + } + }, + "defaultProject": "EZDota-UI" +} diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 0000000..9fcdf09 --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,44 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + jasmine: { + // you can add configuration options for Jasmine here + // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html + // for example, you can disable the random execution with `random: false` + // or set a specific seed with `seed: 4321` + }, + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + jasmineHtmlReporter: { + suppressAll: true // removes the duplicated traces + }, + coverageReporter: { + dir: require('path').join(__dirname, './coverage/EZDota-UI'), + subdir: '.', + reporters: [ + { type: 'html' }, + { type: 'text-summary' } + ] + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..c1ce66c --- /dev/null +++ b/package-lock.json @@ -0,0 +1,12914 @@ +{ + "name": "ezdota-ui", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.1201.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1201.4.tgz", + "integrity": "sha512-hGO5NrZxV8Z7sILwokt7H+1sMf+5tJS9PJszvYlIBSzG0LBkOwwLQDb4MD42ATXFru57SXNqMZDVKoi1kTgxAw==", + "dev": true, + "requires": { + "@angular-devkit/core": "12.1.4", + "rxjs": "6.6.7" + } + }, + "@angular-devkit/build-angular": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-12.1.4.tgz", + "integrity": "sha512-9kMdnaU2dr8o7gJpuBsEHLUpa6huF8uZQEd1+jhKfByEY/xTQo8qztvmbhFhrSfDvdYRygNHItpt3pYEoCEOig==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1201.4", + "@angular-devkit/build-optimizer": "0.1201.4", + "@angular-devkit/build-webpack": "0.1201.4", + "@angular-devkit/core": "12.1.4", + "@babel/core": "7.14.6", + "@babel/generator": "7.14.5", + "@babel/helper-annotate-as-pure": "7.14.5", + "@babel/plugin-proposal-async-generator-functions": "7.14.7", + "@babel/plugin-transform-async-to-generator": "7.14.5", + "@babel/plugin-transform-runtime": "7.14.5", + "@babel/preset-env": "7.14.7", + "@babel/runtime": "7.14.6", + "@babel/template": "7.14.5", + "@discoveryjs/json-ext": "0.5.3", + "@jsdevtools/coverage-istanbul-loader": "3.0.5", + "@ngtools/webpack": "12.1.4", + "ansi-colors": "4.1.1", + "babel-loader": "8.2.2", + "browserslist": "^4.9.1", + "cacache": "15.2.0", + "caniuse-lite": "^1.0.30001032", + "circular-dependency-plugin": "5.2.2", + "copy-webpack-plugin": "9.0.0", + "core-js": "3.15.1", + "critters": "0.0.10", + "css-loader": "5.2.6", + "css-minimizer-webpack-plugin": "3.0.1", + "find-cache-dir": "3.3.1", + "glob": "7.1.7", + "https-proxy-agent": "5.0.0", + "inquirer": "8.1.1", + "jest-worker": "27.0.2", + "karma-source-map-support": "1.4.0", + "less": "4.1.1", + "less-loader": "10.0.0", + "license-webpack-plugin": "2.3.20", + "loader-utils": "2.0.0", + "mini-css-extract-plugin": "1.6.2", + "minimatch": "3.0.4", + "open": "8.2.1", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "6.0.1", + "postcss": "8.3.5", + "postcss-import": "14.0.2", + "postcss-loader": "6.1.0", + "postcss-preset-env": "6.7.0", + "raw-loader": "4.0.2", + "regenerator-runtime": "0.13.7", + "resolve-url-loader": "4.0.0", + "rxjs": "6.6.7", + "sass": "1.35.1", + "sass-loader": "12.1.0", + "semver": "7.3.5", + "source-map": "0.7.3", + "source-map-loader": "3.0.0", + "source-map-support": "0.5.19", + "style-loader": "2.0.0", + "stylus": "0.54.8", + "stylus-loader": "6.1.0", + "terser": "5.7.0", + "terser-webpack-plugin": "5.1.3", + "text-table": "0.2.0", + "tree-kill": "1.2.2", + "tslib": "2.3.0", + "webpack": "5.44.0", + "webpack-dev-middleware": "5.0.0", + "webpack-dev-server": "3.11.2", + "webpack-merge": "5.8.0", + "webpack-subresource-integrity": "1.5.2" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + } + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.1201.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1201.4.tgz", + "integrity": "sha512-Hq+mDUe4xIyq4939JZaUkptsM89WnZOk8Qel6mS0T/bxMX/qs+nuGD5o+xDKkuayogbiTrLmyZBib0/90eSXEA==", + "dev": true, + "requires": { + "source-map": "0.7.3", + "tslib": "2.3.0", + "typescript": "4.3.4" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "dev": true + }, + "typescript": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.4.tgz", + "integrity": "sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew==", + "dev": true + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.1201.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1201.4.tgz", + "integrity": "sha512-eMmbyHyWJZMQ1tfwVdja/iAk/eXJFYrF8b27gDV9gGI7MGB3KJ93AhkbPbcvlw4Hhx4+6M11GfeXzbwH0q9pnQ==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1201.4", + "rxjs": "6.6.7" + } + }, + "@angular-devkit/core": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.1.4.tgz", + "integrity": "sha512-KOzGD8JbP/7EeUwPiU5x+fo3ZEQ5R4IVW5WoH92PaO3mdpqXC7UL2MWLct8PUe9il9nqJMvrBMldSSvP9PCT2w==", + "dev": true, + "requires": { + "ajv": "8.6.0", + "ajv-formats": "2.1.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + } + }, + "@angular-devkit/schematics": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.1.4.tgz", + "integrity": "sha512-yD3y3pK/K5piOgvALFoCCiPp4H8emNa3yZL+vlpEpewVLpF1MM55LeTxc0PI5s0uqtOGVnvcbA5wYgMm3YsUEA==", + "dev": true, + "requires": { + "@angular-devkit/core": "12.1.4", + "ora": "5.4.1", + "rxjs": "6.6.7" + } + }, + "@angular/animations": { + "version": "12.2.12", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.12.tgz", + "integrity": "sha512-RoBFfEfQ/obvILFwKUrZipEAkBYTIS4aHQ76+W3v2YWKaWVHKjBM3xGOik2ION2IIUIuqui3FCYOu7HVLTjCQA==", + "requires": { + "tslib": "^2.2.0" + } + }, + "@angular/cli": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-12.1.4.tgz", + "integrity": "sha512-LpyhyqWe3bFcuH3MrXeYoIPI1htjwG1b5ehETfq4qsMvNmuFON6QI+F7EWEpX7lItVQc2bES+ogasTZsZue/uw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1201.4", + "@angular-devkit/core": "12.1.4", + "@angular-devkit/schematics": "12.1.4", + "@schematics/angular": "12.1.4", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.1", + "debug": "4.3.1", + "ini": "2.0.0", + "inquirer": "8.1.1", + "jsonc-parser": "3.0.0", + "npm-package-arg": "8.1.5", + "npm-pick-manifest": "6.1.1", + "open": "8.2.1", + "ora": "5.4.1", + "pacote": "11.3.4", + "resolve": "1.20.0", + "semver": "7.3.5", + "symbol-observable": "4.0.0", + "uuid": "8.3.2" + } + }, + "@angular/common": { + "version": "12.2.12", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.12.tgz", + "integrity": "sha512-i1VUoGYYx3tMEpmGQvaLt6x4C/MWDxUPATKJwnawLbHDLfAHkyXiCASmcMtaNt1EvOd/uN/J2ONVpF6J49CnMQ==", + "requires": { + "tslib": "^2.2.0" + } + }, + "@angular/compiler": { + "version": "12.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.12.tgz", + "integrity": "sha512-MoeLdKxahBhx/neHvu4AAg6QHvifjjy63vGPsivQUhl3054d/fw0xnLSaRHOS4kP+/loYOrnEEqog1ehTYnyew==", + "requires": { + "tslib": "^2.2.0" + } + }, + "@angular/compiler-cli": { + "version": "12.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.12.tgz", + "integrity": "sha512-zIL6GnoIzNWNiip9sjvwzhL6lGg8lj0W1bKodmL6BINqPUPNdRR++VliUKr/o9DRBDEP7A0F+m2kmYJoN4p2FA==", + "dev": true, + "requires": { + "@babel/core": "^7.8.6", + "@babel/types": "^7.8.6", + "canonical-path": "1.0.0", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.11.0", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "source-map": "^0.6.1", + "sourcemap-codec": "^1.4.8", + "tslib": "^2.2.0", + "yargs": "^17.0.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 + } + } + }, + "@angular/core": { + "version": "12.2.12", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.12.tgz", + "integrity": "sha512-DdZbhyVvwlYO5aLZi5IxJRflZ55Sae72cJAIK4+I5yTrVEf8iDwMZwnRhsv5rOwdEk12Zs8Ppb9JkpaFWium9Q==", + "requires": { + "tslib": "^2.2.0" + } + }, + "@angular/forms": { + "version": "12.2.12", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.12.tgz", + "integrity": "sha512-qZKN1igKaeoFqs7ETiVOBJz4KZo9SmDuUrTbkylrYe9I6wHOsmjZSW49M4Lq5dsczl12kTxc3m83RIsRPZAw6Q==", + "requires": { + "tslib": "^2.2.0" + } + }, + "@angular/platform-browser": { + "version": "12.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.12.tgz", + "integrity": "sha512-HzHQUxKSh4n6tNIW4BcR0yJRs7NiAeuSXTEHs5+1Zmf2NVTYh4E4U+IkRUwzlrdzDoUEP/Fd3yP/M71LGm7aTg==", + "requires": { + "tslib": "^2.2.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "12.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.12.tgz", + "integrity": "sha512-uVbRxZP2fI86U8LqQ80RIzY5qHvGW2Koywylj7kNpfPhwMBSGpG91IjOZtrKUXF4jYJWZ3h2GGv7RFtRilvuNg==", + "requires": { + "tslib": "^2.2.0" + } + }, + "@angular/router": { + "version": "12.2.12", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.12.tgz", + "integrity": "sha512-unuUJyj3CHj29jmyCaluou1sajZDnZgDJ/3vNCif4md1sC5MuY/XkqecTgvSwze17kkpxCGjjn2dlWFRp+yExw==", + "requires": { + "tslib": "^2.2.0" + } + }, + "@auth0/auth0-angular": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@auth0/auth0-angular/-/auth0-angular-1.8.0.tgz", + "integrity": "sha512-45KQRgebEmo5nF/JGsoaOj7dEUoQ/B/y+wAsqrQwAz8Z9hUX/GPZi5lltfnCVLeSAb7mPJiJvjJYNJMj7d3Q+w==", + "requires": { + "@auth0/auth0-spa-js": "^1.16.0", + "tslib": "^2.0.0" + } + }, + "@auth0/auth0-spa-js": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@auth0/auth0-spa-js/-/auth0-spa-js-1.19.2.tgz", + "integrity": "sha512-K/9p9VzG4YGFeVUbjLm7PFC4FF3FLI29pzv1SVmJAt9CsfnQQU11IiGV4Af1VjEgue09UfIO8knp6lKKAJDCnw==", + "requires": { + "abortcontroller-polyfill": "^1.7.3", + "browser-tabs-lock": "^1.2.15", + "core-js": "^3.18.2", + "es-cookie": "^1.3.2", + "fast-text-encoding": "^1.0.3", + "promise-polyfill": "^8.2.0", + "unfetch": "^4.2.0" + }, + "dependencies": { + "core-js": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.19.1.tgz", + "integrity": "sha512-Tnc7E9iKd/b/ff7GFbhwPVzJzPztGrChB8X8GLqoYGdEOG8IpLnK1xPyo3ZoO3HsK6TodJS58VGPOxA+hLHQMg==" + } + } + }, + "@babel/code-frame": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", + "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.0" + } + }, + "@babel/compat-data": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.0.tgz", + "integrity": "sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==", + "dev": true + }, + "@babel/core": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", + "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helpers": "^7.14.6", + "@babel/parser": "^7.14.6", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz", + "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==", + "dev": true, + "requires": { + "@babel/types": "^7.14.5" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.0.tgz", + "integrity": "sha512-9KuleLT0e77wFUku6TUkqZzCEymBdtuQQ27MhEKzf9UOOJu3cYj98kyaDAzxpC7lV6DGiZFuC8XqDsq8/Kl6aQ==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.0.tgz", + "integrity": "sha512-S7iaOT1SYlqK0sQaCi21RX4+13hmdmnxIEAnQUB/eh7GeAnRjOUgTYpLkUOiRXzD+yog1JxP0qyAQZ7ZxVxLVg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.0.tgz", + "integrity": "sha512-XLwWvqEaq19zFlF5PTgOod4bUA+XbkR4WLQBct1bkzmxJGB0ZEJaoKF4c8cgH9oBtCDuYJ8BP5NB9uFiEgO5QA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + } + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "regexpu-core": "^4.7.1" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + } + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.4.tgz", + "integrity": "sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "dependencies": { + "@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + } + } + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", + "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", + "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "dependencies": { + "@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + } + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.0.tgz", + "integrity": "sha512-MLM1IOMe9aQBqMWxcRw8dcb9jlM86NIw7KA0Wri91Xkfied+dE0QuBFSBjMNvqzmS0OSIDsMNC24dBEkPUi7ew==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + } + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", + "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.0.tgz", + "integrity": "sha512-VVMGzYY3vkWgCJML+qVLvGIam902mJW0FvT7Avj1zEe0Gn7D93aWdLblYARTxEw+6DhZmtzhBM2zv0ekE5zg1g==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "dependencies": { + "@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + } + } + } + }, + "@babel/helpers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.0.tgz", + "integrity": "sha512-dVRM0StFMdKlkt7cVcGgwD8UMaBfWJHl3A83Yfs8GQ3MO0LHIIIMvK7Fa0RGOGUQ10qikLaX6D7o5htcQWgTMQ==", + "dev": true, + "requires": { + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "dependencies": { + "@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + } + } + } + }, + "@babel/highlight": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", + "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", + "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", + "dev": true + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz", + "integrity": "sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz", + "integrity": "sha512-mCF3HcuZSY9Fcx56Lbn+CGdT44ioBMMvjNVldpKtj8tpniETdLjnxdHI1+sDWXIM1nNt+EanJOZ3IG9lzVjs7A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz", + "integrity": "sha512-mAy3sdcY9sKAkf3lQbDiv3olOfiLqI51c9DR9b19uMoR2Z6r5pmGl7dfNFqEvqOyqbf1ta4lknK4gc5PJn3mfA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz", + "integrity": "sha512-QGSA6ExWk95jFQgwz5GQ2Dr95cf7eI7TKutIXXTb7B1gCLTCz5hTjFTQGfLFBBiC5WSNi7udNwWsqbbMh1c4yQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz", + "integrity": "sha512-CjI4nxM/D+5wCnhD11MHB1AwRSAYeDT+h8gCdcVJZ/OK7+wRzFsf7PFPWVpVpNRkHMmMkQWAHpTq+15IXQ1diA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz", + "integrity": "sha512-kouIPuiv8mSi5JkEhzApg5Gn6hFyKPnlkO0a9YSzqRurH8wYzSlf6RJdzluAsbqecdW5pBvDJDfyDIUR/vLxvg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz", + "integrity": "sha512-pbW0fE30sVTYXXm9lpVQQ/Vc+iTeQKiXlaNRZPPN2A2VdlWyAtsUrsQ3xydSlDW00TFMK7a8m3cDTkBF5WnV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz", + "integrity": "sha512-3bnHA8CAFm7cG93v8loghDYyQ8r97Qydf63BeYiGgYbjKKB/XP53W15wfRC7dvKfoiJ34f6Rbyyx2btExc8XsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz", + "integrity": "sha512-FAhE2I6mjispy+vwwd6xWPyEx3NYFS13pikDBWUAFGZvq6POGs5eNchw8+1CYoEgBl9n11I3NkzD7ghn25PQ9Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.0.tgz", + "integrity": "sha512-LU/+jp89efe5HuWJLmMmFG0+xbz+I2rSI7iLc1AlaeSMDMOGzWlc5yJrMN1d04osXN4sSfpo4O+azkBNBes0jg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-compilation-targets": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz", + "integrity": "sha512-kicDo0A/5J0nrsCPbn89mTG3Bm4XgYi0CZtvex9Oyw7gGZE3HXGD0zpQNH+mo+tEfbo8wbmMvJftOwpmPy7aVw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz", + "integrity": "sha512-Y4rFpkZODfHrVo70Uaj6cC1JJOt3Pp0MdWSwIKtb8z1/lsjl9AmnB7ErRFV+QNGIfcY1Eruc2UMx5KaRnXjMyg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz", + "integrity": "sha512-IvHmcTHDFztQGnn6aWq4t12QaBXTKr1whF/dgp9kz84X6GUcwq9utj7z2wFCUfeOup/QKnOlt2k0zxkGFx9ubg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz", + "integrity": "sha512-3jQUr/HBbMVZmi72LpjQwlZ55i1queL8KcDTQEkAHihttJnAPrcvG9ZNXIfsd2ugpizZo595egYV6xy+pv4Ofw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + } + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz", + "integrity": "sha512-ti7IdM54NXv29cA4+bNNKEMS4jLMCbJgl+Drv+FgYy0erJLAxNAIXcNjNjrRZEcWq0xJHsNVwQezskMFpF8N9g==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.0.tgz", + "integrity": "sha512-vIFb5250Rbh7roWARvCLvIJ/PtAU5Lhv7BtZ1u24COwpI9Ypjsh+bZcKk6rlIyalK+r0jOc1XQ8I4ovNxNrWrA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", + "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz", + "integrity": "sha512-V14As3haUOP4ZWrLJ3VVx5rCnrYhMSHN/jX7z6FAt5hjRkLsb0snPCmJwSOML5oxkKO4FNoNv7V5hw/y2bjuvg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz", + "integrity": "sha512-27n3l67/R3UrXfizlvHGuTwsRIFyce3D/6a37GRxn28iyTPvNXaW4XvznexRh1zUNLPjbLL22Id0XQElV94ruw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz", + "integrity": "sha512-HUxMvy6GtAdd+GKBNYDWCIA776byUQH8zjnfjxwT1P1ARv/wFu8eBDpmXQcLS/IwRtrxIReGiplOwMeyO7nsDQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + } + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz", + "integrity": "sha512-63l1dRXday6S8V3WFY5mXJwcRAnPYxvFfTlt67bwV1rTyVTM5zrp0DBBb13Kl7+ehkCVwIZPumPpFP/4u70+Tw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz", + "integrity": "sha512-Q7tBUwjxLTsHEoqktemHBMtb3NYwyJPTJdM+wDwb0g8PZ3kQUIzNvwD5lPaqW/p54TXBc/MXZu9Jr7tbUEUM8Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz", + "integrity": "sha512-FXlDZfQeLILfJlC6I1qyEwcHK5UpRCFkaoVyA1nk9A1L1Yu583YO4un2KsLBsu3IJb4CUbctZks8tD9xPQubLw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz", + "integrity": "sha512-LIe2kcHKAZOJDNxujvmp6z3mfN6V9lJxubU4fJIGoQCkKe3Ec2OcbdlYP+vW++4MpxwG0d1wSDOJtQW5kLnkZQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz", + "integrity": "sha512-OwYEvzFI38hXklsrbNivzpO3fh87skzx8Pnqi4LoSYeav0xHlueSoCJrSgTPfnbyzopo5b3YVAJkFIcUpK2wsw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz", + "integrity": "sha512-5QKUw2kO+GVmKr2wMYSATCTTnHyscl6sxFRAY+rvN7h7WB0lcG0o4NoV6ZQU32OZGVsYUsfLGgPQpDFdkfjlJQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz", + "integrity": "sha512-lBzMle9jcOXtSOXUpc7tvvTpENu/NuekNJVova5lCCWCV9/U1ho2HH2y0p6mBg8fPm/syEAbfaaemYGOHCY3mg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz", + "integrity": "sha512-gQDlsSF1iv9RU04clgXqRjrPyyoJMTclFt3K1cjLmTKikc0s/6vE3hlDeEVC71wLTRu72Fq7650kABrdTc2wMQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz", + "integrity": "sha512-WRpw5HL4Jhnxw8QARzRvwojp9MIE7Tdk3ez6vRyUk1MwgjJN0aNpRoXainLR5SgxmoXx/vsXGZ6OthP6t/RbUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz", + "integrity": "sha512-rWFhWbCJ9Wdmzln1NmSCqn7P0RAD+ogXG/bd9Kg5c7PKWkJtkiXmYsMBeXjDlzHpVTJ4I/hnjs45zX4dEv81xw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz", + "integrity": "sha512-Dzi+NWqyEotgzk/sb7kgQPJQf7AJkQBWsVp1N6JWc1lBVo0vkElUnGdr1PzUBmfsCCN5OOFya3RtpeHk15oLKQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.16.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz", + "integrity": "sha512-yuGBaHS3lF1m/5R+6fjIke64ii5luRUg97N2wr+z1sF0V+sNSXPxXDdEEL/iYLszsN5VKxVB1IPfEqhzVpiqvg==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.15.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz", + "integrity": "sha512-nx4f6no57himWiHhxDM5pjwhae5vLpTK2zCnDH8+wNLJy0TVER/LJRHl2bkt6w9Aad2sPD5iNNoUpY3X9sTGDg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz", + "integrity": "sha512-LogN88uO+7EhxWc8WZuQ8vxdSyVGxhkh8WTC3tzlT8LccMuQdA81e9SGV6zY7kY2LjDhhDOFdQVxdGwPyBCnvg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz", + "integrity": "sha512-fhjrDEYv2DBsGN/P6rlqakwRwIp7rBGLPbrKxwh7oVt5NNkIhZVOY2GRV+ULLsQri1bDqwDWnU3vhlmx5B2aCw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz", + "integrity": "sha512-fds+puedQHn4cPLshoHcR1DTMN0q1V9ou0mUjm8whx9pGcNvDrVVrgw+KJzzCaiTdaYhldtrUps8DWVMgrSEyg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.16.0" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.0.tgz", + "integrity": "sha512-XgnQEm1CevKROPx+udOi/8f8TiGhrUWiHiaUCIp47tE0tpFDjzXNTZc9E5CmCwxNjXTWEVqvRfWZYOTFvMa/ZQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz", + "integrity": "sha512-XLldD4V8+pOqX2hwfWhgwXzGdnDOThxaNTgqagOcpBgIxbUvpgU2FMvo5E1RyHbk756WYgdbS0T8y0Cj9FKkWQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.0.tgz", + "integrity": "sha512-JAvGxgKuwS2PihiSFaDrp94XOzzTUeDeOQlcKzVAyaPap7BnZXK/lvMDiubkPTdotPKOIZq9xWXWnggUMYiExg==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz", + "integrity": "sha512-Dgs8NNCehHSvXdhEhln8u/TtJxfVwGYCgP2OOr5Z3Ar+B+zXicEOKNTyc+eca2cuEOMtjW6m9P9ijOt8QdqWkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.5.tgz", + "integrity": "sha512-fPMBhh1AV8ZyneiCIA+wYYUH1arzlXR1UMcApjvchDhfKxhy2r2lReJv8uHEyihi4IFIGlr1Pdx7S5fkESDQsg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.2", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.0.tgz", + "integrity": "sha512-iVb1mTcD8fuhSv3k99+5tlXu5N0v8/DPm2mO3WACLG6al1CGZH7v09HJyUb1TtYl/Z+KrM6pHSIJdZxP5A+xow==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz", + "integrity": "sha512-Ao4MSYRaLAQczZVp9/7E7QHsCuK92yHRrmVNRe/SlEJjhzivq0BSn8mEraimL8wizHZ3fuaHxKH0iwzI13GyGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz", + "integrity": "sha512-/ntT2NljR9foobKk4E/YyOSwcGUXtYWv5tinMK/3RkypyNBNdhHUaq6Orw5DWq9ZcNlS03BIlEALFeQgeVAo4Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz", + "integrity": "sha512-Rd4Ic89hA/f7xUSJQk5PnC+4so50vBoBfxjdQAdvngwidM8jYIBVxBZ/sARxD4e0yMXRbJVDrYf7dyRtIIKT6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz", + "integrity": "sha512-++V2L8Bdf4vcaHi2raILnptTBjGEFxn5315YU+e8+EqXIucA+q349qWngCLpUYqqv233suJ6NOienIVUpS9cqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.0.tgz", + "integrity": "sha512-VFi4dhgJM7Bpk8lRc5CMaRGlKZ29W9C3geZjt9beuzSUrlJxsNwX7ReLwaL6WEvsOf2EQkyIJEPtF8EXjB/g2A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz", + "integrity": "sha512-jHLK4LxhHjvCeZDWyA9c+P9XH1sOxRd1RO9xMtDVRAOND/PczPqizEtVdx4TQF/wyPaewqpT+tgQFYMnN/P94A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/preset-env": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.7.tgz", + "integrity": "sha512-itOGqCKLsSUl0Y+1nSfhbuuOlTs0MJk2Iv7iSH+XT/mR8U1zRLO7NjWlYXB47yhK4J/7j+HYty/EhFZDYKa/VA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.14.7", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-async-generator-functions": "^7.14.7", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/plugin-proposal-class-static-block": "^7.14.5", + "@babel/plugin-proposal-dynamic-import": "^7.14.5", + "@babel/plugin-proposal-export-namespace-from": "^7.14.5", + "@babel/plugin-proposal-json-strings": "^7.14.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", + "@babel/plugin-proposal-numeric-separator": "^7.14.5", + "@babel/plugin-proposal-object-rest-spread": "^7.14.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-private-methods": "^7.14.5", + "@babel/plugin-proposal-private-property-in-object": "^7.14.5", + "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.14.5", + "@babel/plugin-transform-async-to-generator": "^7.14.5", + "@babel/plugin-transform-block-scoped-functions": "^7.14.5", + "@babel/plugin-transform-block-scoping": "^7.14.5", + "@babel/plugin-transform-classes": "^7.14.5", + "@babel/plugin-transform-computed-properties": "^7.14.5", + "@babel/plugin-transform-destructuring": "^7.14.7", + "@babel/plugin-transform-dotall-regex": "^7.14.5", + "@babel/plugin-transform-duplicate-keys": "^7.14.5", + "@babel/plugin-transform-exponentiation-operator": "^7.14.5", + "@babel/plugin-transform-for-of": "^7.14.5", + "@babel/plugin-transform-function-name": "^7.14.5", + "@babel/plugin-transform-literals": "^7.14.5", + "@babel/plugin-transform-member-expression-literals": "^7.14.5", + "@babel/plugin-transform-modules-amd": "^7.14.5", + "@babel/plugin-transform-modules-commonjs": "^7.14.5", + "@babel/plugin-transform-modules-systemjs": "^7.14.5", + "@babel/plugin-transform-modules-umd": "^7.14.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7", + "@babel/plugin-transform-new-target": "^7.14.5", + "@babel/plugin-transform-object-super": "^7.14.5", + "@babel/plugin-transform-parameters": "^7.14.5", + "@babel/plugin-transform-property-literals": "^7.14.5", + "@babel/plugin-transform-regenerator": "^7.14.5", + "@babel/plugin-transform-reserved-words": "^7.14.5", + "@babel/plugin-transform-shorthand-properties": "^7.14.5", + "@babel/plugin-transform-spread": "^7.14.6", + "@babel/plugin-transform-sticky-regex": "^7.14.5", + "@babel/plugin-transform-template-literals": "^7.14.5", + "@babel/plugin-transform-typeof-symbol": "^7.14.5", + "@babel/plugin-transform-unicode-escapes": "^7.14.5", + "@babel/plugin-transform-unicode-regex": "^7.14.5", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.2", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "core-js-compat": "^3.15.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", + "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/traverse": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", + "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.0", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", + "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + } + }, + "@csstools/convert-colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", + "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", + "dev": true + }, + "@discoveryjs/json-ext": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz", + "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==", + "dev": true + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jsdevtools/coverage-istanbul-loader": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz", + "integrity": "sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA==", + "dev": true, + "requires": { + "convert-source-map": "^1.7.0", + "istanbul-lib-instrument": "^4.0.3", + "loader-utils": "^2.0.0", + "merge-source-map": "^1.1.0", + "schema-utils": "^2.7.0" + } + }, + "@ng-bootstrap/ng-bootstrap": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-10.0.0.tgz", + "integrity": "sha512-Sz+QaxjuyJYJ+zyUbf0TevgcgVesCPQiiFiggEzxKjzY5R+Hvq3YgryLdXf2r/ryePL+C3FXCcmmKpTM5bfczQ==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@ngtools/webpack": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.1.4.tgz", + "integrity": "sha512-hXc8dTnRfDB7o1Pd7a07aw0rjGmVLXU28+cTHQJliosgD3obcjfZ4QPA0k97vlQMtqVJawuShRfyiUKrpsJf8Q==", + "dev": true, + "requires": { + "enhanced-resolve": "5.8.2" + } + }, + "@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" + } + }, + "@npmcli/git": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", + "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "dependencies": { + "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" + } + } + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@npmcli/node-gyp": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", + "dev": true + }, + "@npmcli/promise-spawn": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", + "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "dev": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz", + "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^7.1.0", + "read-package-json-fast": "^2.0.1" + } + }, + "@schematics/angular": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.1.4.tgz", + "integrity": "sha512-xGqgGI6GWk4EFdKis8FmSESxoLgjnLQbaRE1t1KZCkSKJzqkOj0R9wiDrtZfcrbPxIkLL+3fAk2ThwwPznT6yw==", + "dev": true, + "requires": { + "@angular-devkit/core": "12.1.4", + "@angular-devkit/schematics": "12.1.4", + "jsonc-parser": "3.0.0" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" + }, + "@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==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/component-emitter": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", + "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==", + "dev": true + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", + "dev": true + }, + "@types/eslint": { + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.2.tgz", + "integrity": "sha512-KubbADPkfoU75KgKeKLsFHXnU4ipH7wYg0TRT33NK3N3yiu7jlFAAoygIWBV+KbuHx/G+AvuGX6DllnK35gfJA==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "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==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-jwt": { + "version": "0.0.42", + "resolved": "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-0.0.42.tgz", + "integrity": "sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==", + "requires": { + "@types/express": "*", + "@types/express-unless": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.26", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.26.tgz", + "integrity": "sha512-zeu3tpouA043RHxW0gzRxwCHchMgftE8GArRsvYT0ByDMbn19olQHx5jLue0LxWY6iYtXb7rXmuVtSkhy9YZvQ==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/express-unless": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.2.tgz", + "integrity": "sha512-Q74UyYRX/zIgl1HSp9tUX2PlG8glkVm+59r7aK4KGKzC5jqKIOX6rrVLRQrzpZUQ84VukHtRoeAuon2nIssHPQ==", + "requires": { + "@types/express": "*" + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/jasmine": { + "version": "3.6.11", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.11.tgz", + "integrity": "sha512-S6pvzQDvMZHrkBz2Mcn/8Du7cpr76PlRJBAoHnSDNbulULsH5dp0Gns+WRyNX5LHejz/ljxK4/vIHK/caHt6SQ==", + "dev": true + }, + "@types/jquery": { + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.8.tgz", + "integrity": "sha512-cXk6NwqjDYg+UI9p2l3x0YmPa4m7RrXqmbK4IpVVpRJiYXU/QTo+UZrn54qfE1+9Gao4qpYqUnxm5ZCy2FTXAw==", + "requires": { + "@types/sizzle": "*" + } + }, + "@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==" + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "@types/node": { + "version": "12.20.37", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.37.tgz", + "integrity": "sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA==" + }, + "@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==" + }, + "@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==" + }, + "@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==", + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==" + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/webpack-sources": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.9.tgz", + "integrity": "sha512-bvzMnzqoK16PQIC8AYHNdW45eREJQMd6WG/msQWX5V2+vZmODCOPb4TJcbgRljTZZTwTM4wUMcsI8FftNA7new==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "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 + } + } + }, + "@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 + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "abortcontroller-polyfill": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz", + "integrity": "sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", + "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", + "dev": true + }, + "adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + } + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.4.tgz", + "integrity": "sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz", + "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==", + "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-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-formats": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.0.tgz", + "integrity": "sha512-USH2jBb+C/hIpwD2iRjp0pe0k+MvzG0mlSn/FIdCgQhUb9ALPRjt2KIQdfZDS9r0ZIeUAg7gOu9KL0PFqGqr5Q==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "angular-bootstrap-toasts": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/angular-bootstrap-toasts/-/angular-bootstrap-toasts-1.2.0.tgz", + "integrity": "sha512-iJwL8vLI2vSLM/0qL3UN+kEKv8EI0ZeeJ9vF7bL43gGd6f0ke/yo3xJSSjMwKobU2J8y+X5sZB0jSR0MriXHXA==", + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "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 + }, + "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" + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "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 + }, + "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" + } + }, + "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" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "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" + } + }, + "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" + } + } + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "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 + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "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 + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "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" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "auth0": { + "version": "2.37.0", + "resolved": "https://registry.npmjs.org/auth0/-/auth0-2.37.0.tgz", + "integrity": "sha512-6Kz/+7d3PRb1zKR6O7CVt0EHAu+dphLFbJcvCEn7z9mUyjM0kJp/RnkALfFLfVzmSsaWeBqQNi2uZmdjReCjzQ==", + "requires": { + "axios": "^0.21.4", + "es6-promisify": "^6.1.1", + "form-data": "^3.0.1", + "jsonwebtoken": "^8.5.1", + "jwks-rsa": "^1.12.1", + "lru-memoizer": "^2.1.4", + "rest-facade": "^1.13.1", + "retry": "^0.13.1" + }, + "dependencies": { + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + } + } + }, + "autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "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 + } + } + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + }, + "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.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "requires": { + "follow-redirects": "^1.14.0" + } + }, + "babel-loader": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "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" + } + }, + "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" + } + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz", + "integrity": "sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.4", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", + "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.16.2" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.3.tgz", + "integrity": "sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.4" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "base64-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.1.tgz", + "integrity": "sha512-vFIUq7FdLtjZMhATwDul5RZWv2jpXQ09Pd6jcVEOvIsqCWTRFD/ONHNfyOS8dA/Ippi5dsIgpyKWKZaAKZltbA==", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "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 + }, + "bignumber": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bignumber/-/bignumber-1.1.0.tgz", + "integrity": "sha1-5qsKdD2l8+oBjlwXWX0SH3howVk=" + }, + "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 + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "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" + } + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "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 + } + } + }, + "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 + }, + "bootstrap": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.1.tgz", + "integrity": "sha512-0dj+VgI9Ecom+rvvpNZ4MUZJz8dcX7WCX+eTID9+/8HgOkv3dsRzi8BGeZJCQU6flWQVYxwTQnEZFrmJSEO7og==" + }, + "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" + } + }, + "browser-tabs-lock": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/browser-tabs-lock/-/browser-tabs-lock-1.2.15.tgz", + "integrity": "sha512-J8K9vdivK0Di+b8SBdE7EZxDr88TnATing7XoLw6+nFkXMQ6sVBh92K3NQvZlZU91AIkFRi0w3sztk5Z+vsswA==", + "requires": { + "lodash": ">=4.17.21" + } + }, + "browserslist": { + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", + "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001274", + "electron-to-chromium": "^1.3.886", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "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-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "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 + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "cacache": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz", + "integrity": "sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==", + "dev": true, + "requires": { + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "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": "1.2.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-1.2.2.tgz", + "integrity": "sha1-Gsp8TRlTWaLOmVV5NDPG5VQlEfI=", + "requires": { + "sentence-case": "^1.1.1", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "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.30001275", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001275.tgz", + "integrity": "sha512-ihJVvj8RX0kn9GgP43HKhb5q9s2XQn4nEQhdldEJvZhCsuiB2XOq6fAMYQZaN6FPWfsr2qU0cdL0CSbETwbJAg==", + "dev": true + }, + "canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", + "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" + } + }, + "change-case": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-2.3.1.tgz", + "integrity": "sha1-LE/ePwY7tB0AzWjg1aCdthy+iU8=", + "requires": { + "camel-case": "^1.1.1", + "constant-case": "^1.1.0", + "dot-case": "^1.1.0", + "is-lower-case": "^1.1.0", + "is-upper-case": "^1.1.0", + "lower-case": "^1.1.1", + "lower-case-first": "^1.0.0", + "param-case": "^1.1.0", + "pascal-case": "^1.1.0", + "path-case": "^1.1.0", + "sentence-case": "^1.1.1", + "snake-case": "^1.1.0", + "swap-case": "^1.1.0", + "title-case": "^1.1.0", + "upper-case": "^1.1.1", + "upper-case-first": "^1.1.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "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" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "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 + }, + "circular-dependency-plugin": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", + "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "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-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-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "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" + } + }, + "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" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.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.1", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.1.tgz", + "integrity": "sha512-4LBMSt09vR0uLnPVkOUBnmxgoaeN4ewRbx801wY/bXcltXfpR/G46OdWn96XpYmCWuYvO46aBZP4NgX8HpNAcw==", + "dev": true + }, + "colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "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 + }, + "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": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "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": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "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 + } + } + }, + "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": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "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 + } + } + }, + "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 + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "constant-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-1.1.2.tgz", + "integrity": "sha1-jsLKW6ND4Aqjjb9OIA/VrJB+/WM=", + "requires": { + "snake-case": "^1.1.0", + "upper-case": "^1.1.1" + } + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "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, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "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 + }, + "cookiejar": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz", + "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" + }, + "copy-anything": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz", + "integrity": "sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==", + "dev": true, + "requires": { + "is-what": "^3.12.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.0.tgz", + "integrity": "sha512-k8UB2jLIb1Jip2nZbCz83T/XfhfjX6mB1yLJNYKrpYi7FQimfOoFv/0//iT6HV1K8FwUB5yUbCcnpLebJXJTug==", + "dev": true, + "requires": { + "fast-glob": "^3.2.5", + "glob-parent": "^6.0.0", + "globby": "^11.0.3", + "normalize-path": "^3.0.0", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1" + }, + "dependencies": { + "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-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 + }, + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "core-js": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.1.tgz", + "integrity": "sha512-h8VbZYnc9pDzueiS2610IULDkpFFPunHwIpl8yRwFahAEEdSpHlTy3h3z3rKq5h11CaUdBEeRViu9AYvbxiMeg==", + "dev": true + }, + "core-js-compat": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.1.tgz", + "integrity": "sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g==", + "dev": true, + "requires": { + "browserslist": "^4.17.6", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "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 + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "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" + } + }, + "critters": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.10.tgz", + "integrity": "sha512-p5VKhP1803+f+0Jq5P03w1SbiHtpAKm+1EpJHkiPxQPq0Vu9QLZHviJ02GRrWi0dlcJqrmzMWInbwp4d22RsGw==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "css": "^3.0.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "pretty-bytes": "^5.3.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" + } + } + } + }, + "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": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^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 + } + } + }, + "css-blank-pseudo": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", + "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + }, + "dependencies": { + "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 + } + } + }, + "css-color-names": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", + "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==", + "dev": true + }, + "css-declaration-sorter": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.3.tgz", + "integrity": "sha512-SvjQjNRZgh4ULK1LDJ2AduPKUKxIqmtU7ZAyi47BTV+M90Qvxr9AB6lKlLbDUfXqI9IQeYA8LbAsCZPpJEV3aA==", + "dev": true, + "requires": { + "timsort": "^0.3.0" + } + }, + "css-has-pseudo": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", + "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^5.0.0-rc.4" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "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" + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.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 + } + } + }, + "css-loader": { + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.6.tgz", + "integrity": "sha512-0wyN5vXMQZu6BvjbrPdUJvkCzGEO24HC7IS7nW4llc6BBFC+zwR9CKtYGv63Puzsg10L/o12inMY5/2ByzfD6w==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.15", + "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.1.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.5" + }, + "dependencies": { + "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-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 + }, + "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 + }, + "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" + } + } + } + }, + "css-minimizer-webpack-plugin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.0.1.tgz", + "integrity": "sha512-RGFIv6iZWUPO2T1vE5+5pNCSs2H2xtHYRdfZPiiNH8Of6QOn9BeFnZSoHiQMkmsxOO/JkPe4BpKfs7slFIWcTA==", + "dev": true, + "requires": { + "cssnano": "^5.0.0", + "jest-worker": "^27.0.2", + "p-limit": "^3.0.2", + "postcss": "^8.2.9", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1" + }, + "dependencies": { + "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-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 + }, + "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 + }, + "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" + } + }, + "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-parse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", + "dev": true, + "requires": { + "css": "^2.0.0" + }, + "dependencies": { + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.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 + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + } + } + }, + "css-prefers-color-scheme": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", + "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + }, + "dependencies": { + "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 + } + } + }, + "css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + } + }, + "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 + }, + "cssdb": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", + "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", + "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.0.9", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.9.tgz", + "integrity": "sha512-Y4olTKBKsPKl5izpcXHRDiB/1rVdbIDM4qVXgEKBt466kYT42SEEsnCYOQFFXzEkUYV8pJNCII9JKzb8KfDk+g==", + "dev": true, + "requires": { + "cssnano-preset-default": "^5.1.5", + "is-resolvable": "^1.1.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-default": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.5.tgz", + "integrity": "sha512-fF00UI+d3PWkGfMd62geqmoUe5h+LOhGE2GH4Fqq3beNKdCU1LWwLUyIcu4/A72lWv0737cHey5zhhWw3rW0sA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^2.0.1", + "postcss-calc": "^8.0.0", + "postcss-colormin": "^5.2.1", + "postcss-convert-values": "^5.0.2", + "postcss-discard-comments": "^5.0.1", + "postcss-discard-duplicates": "^5.0.1", + "postcss-discard-empty": "^5.0.1", + "postcss-discard-overridden": "^5.0.1", + "postcss-merge-longhand": "^5.0.2", + "postcss-merge-rules": "^5.0.2", + "postcss-minify-font-values": "^5.0.1", + "postcss-minify-gradients": "^5.0.3", + "postcss-minify-params": "^5.0.1", + "postcss-minify-selectors": "^5.1.0", + "postcss-normalize-charset": "^5.0.1", + "postcss-normalize-display-values": "^5.0.1", + "postcss-normalize-positions": "^5.0.1", + "postcss-normalize-repeat-style": "^5.0.1", + "postcss-normalize-string": "^5.0.1", + "postcss-normalize-timing-functions": "^5.0.1", + "postcss-normalize-unicode": "^5.0.1", + "postcss-normalize-url": "^5.0.2", + "postcss-normalize-whitespace": "^5.0.1", + "postcss-ordered-values": "^5.0.2", + "postcss-reduce-initial": "^5.0.1", + "postcss-reduce-transforms": "^5.0.1", + "postcss-svgo": "^5.0.3", + "postcss-unique-selectors": "^5.0.1" + } + }, + "cssnano-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", + "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", + "dev": true + }, + "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" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "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" + } + }, + "date-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", + "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", + "dev": true + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "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": "3.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", + "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==" + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.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==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "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 + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "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-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "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.2.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", + "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", + "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": "1.1.2", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-1.1.2.tgz", + "integrity": "sha1-HnOCaQDeKNbeVIC8HeMdCEKwa+w=", + "requires": { + "sentence-case": "^1.1.2" + } + }, + "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" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "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.3.887", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.887.tgz", + "integrity": "sha512-QQUumrEjFDKSVYVdaeBmFdyQGoaV+fCSMyWHvfx/u22bRHSTeBQYt6P4jMY+gFd4kgKB9nqk7RMtWkDB49OYPA==", + "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 + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "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" + } + }, + "engine.io": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.0.0.tgz", + "integrity": "sha512-Ui7yl3JajEIaACg8MOUwWvuuwU7jepZqX3BKs1ho7NQRuP4LhN4XIykXhp8bEy+x/DhA0LBZZXYSCkZDqrwMMg==", + "dev": true, + "requires": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.0", + "ws": "~8.2.3" + } + }, + "engine.io-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.1.tgz", + "integrity": "sha512-j4p3WwJrG2k92VISM0op7wiq60vO92MlF3CRGxhKHy9ywG1/Dkc72g0dXeDQ+//hrcDn8gqQzoEkdO9FN0d9AA==", + "dev": true, + "requires": { + "base64-arraybuffer": "~1.0.1" + } + }, + "enhanced-resolve": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz", + "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "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" + } + }, + "es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "es-cookie": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/es-cookie/-/es-cookie-1.3.2.tgz", + "integrity": "sha512-UTlYYhXGLOy05P/vKVT2Ui7WtC7NiRzGtJyAKKn32g5Gvcjn7KAClLPWlipCtxIus934dFg9o9jXiBL0nP+t9Q==" + }, + "es-module-lexer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz", + "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==", + "dev": true + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promisify": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz", + "integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==" + }, + "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 + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "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 + }, + "eventsource": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "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" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "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" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "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.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "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 + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "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 + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "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.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "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" + } + }, + "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 + }, + "fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "fast-text-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", + "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==" + }, + "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" + } + }, + "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" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "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-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "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" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", + "dev": true + }, + "follow-redirects": { + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", + "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "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" + } + }, + "formidable": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", + "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==" + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "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": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.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==" + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "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 + }, + "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==", + "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" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "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.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "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": "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" + } + }, + "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 + }, + "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 + }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "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 + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "dependencies": { + "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" + } + }, + "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 + } + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + }, + "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.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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" + } + }, + "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": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "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.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "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-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "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 + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", + "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", + "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": 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" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "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 + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "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==" + }, + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true + }, + "inquirer": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.1.tgz", + "integrity": "sha512-hUDjc3vBkh/uk1gPfMAD/7Z188Q8cvTGl0nxwaCdwSbzFh6ZKkZh+s2ozVxbE5G9ZNRyeY0+lgbAIOUFsFf98w==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.3.0", + "run-async": "^2.4.0", + "rxjs": "^6.6.6", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "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" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "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 + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "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==", + "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-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "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-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + }, + "is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "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==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "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-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "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-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-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "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-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-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "dev": true + }, + "is-lower-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz", + "integrity": "sha1-fhR75HaNxGbbO/shzGCzHmrWk5M=", + "requires": { + "lower-case": "^1.1.0" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + }, + "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-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "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-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "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==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" + }, + "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-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", + "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", + "foreach": "^2.0.5", + "has-tostringtag": "^1.0.0" + } + }, + "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-upper-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz", + "integrity": "sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8=", + "requires": { + "upper-case": "^1.1.0" + } + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "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 + }, + "isbinaryfile": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", + "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", + "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 + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.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": "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" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "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 + } + } + }, + "istanbul-reports": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", + "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jasmine-core": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.7.1.tgz", + "integrity": "sha512-DH3oYDS/AUvvr22+xUBW62m1Xoy7tUlY1tsxKEJvl5JeJ7q8zd1K5bUwiOxdH+erj6l2vAMM3hV25Xs9/WrmuQ==", + "dev": true + }, + "jest-worker": { + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.2.tgz", + "integrity": "sha512-EoBdilOTTyOgmHXtw/cPc+ZrCA0KJMrkXzkrPGNwLmnvvlN1nj7MPrxpT7m+otSv2e1TLaVffzDnE/LB14zJMg==", + "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" + } + } + } + }, + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "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 + }, + "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": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "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 + }, + "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 + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "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" + } + }, + "jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jwks-rsa": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-1.12.3.tgz", + "integrity": "sha512-cFipFDeYYaO9FhhYJcZWX/IyZgc0+g316rcHnDpT2dNRNIE/lMOmWKKqp09TkJoYlNFzrEVODsR4GgXJMgWhnA==", + "requires": { + "@types/express-jwt": "0.0.42", + "axios": "^0.21.1", + "debug": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "jsonwebtoken": "^8.5.1", + "limiter": "^1.1.5", + "lru-memoizer": "^2.1.2", + "ms": "^2.1.2", + "proxy-from-env": "^1.1.0" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "karma": { + "version": "6.3.7", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.7.tgz", + "integrity": "sha512-EEkswZhOx3EFt1ELlVECeOXHONbHSGw6fkbeMxvCSkLD77X38Kb1d/Oup2Re9ep/tSoa1He3YIBf3Hp+9EsKtg==", + "dev": true, + "requires": { + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "colors": "^1.4.0", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.3.0", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.2.0", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.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 + }, + "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" + } + }, + "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" + } + } + } + }, + "karma-chrome-launcher": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "dev": true, + "requires": { + "which": "^1.2.1" + } + }, + "karma-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.0.3.tgz", + "integrity": "sha512-atDvLQqvPcLxhED0cmXYdsPMCQuh6Asa9FMZW1bhNqlVEhJoB9qyZ2BY1gu7D/rr5GLGb5QzYO4siQskxaWP/g==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.1", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.0", + "minimatch": "^3.0.4" + } + }, + "karma-jasmine": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz", + "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==", + "dev": true, + "requires": { + "jasmine-core": "^3.6.0" + } + }, + "karma-jasmine-html-reporter": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", + "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", + "dev": true + }, + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "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 + }, + "less": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz", + "integrity": "sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw==", + "dev": true, + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^2.5.2", + "parse-node-version": "^1.0.1", + "source-map": "~0.6.0", + "tslib": "^1.10.0" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true + }, + "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, + "optional": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "less-loader": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-10.0.0.tgz", + "integrity": "sha512-JjioAkw9qyavL0BzMPUOHJa0a20fh+ipq/MNZH4OkU8qERsCMeZIWRE0FDBIx2O+cFguvY01vHh/lmBA9LyWDg==", + "dev": true, + "requires": { + "klona": "^2.0.4" + } + }, + "license-webpack-plugin": { + "version": "2.3.20", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.20.tgz", + "integrity": "sha512-AHVueg9clOKACSHkhmEI+PCC9x8+qsQVuKECZD3ETxETK5h/PCv5/MUzyG1gm8OMcip/s1tcNxqo9Qb7WhjGsg==", + "dev": true, + "requires": { + "@types/webpack-sources": "^0.1.5", + "webpack-sources": "^1.2.0" + } + }, + "lilconfig": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", + "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==", + "dev": true + }, + "limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "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==" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "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=" + }, + "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" + } + } + } + }, + "log4js": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", + "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", + "dev": true, + "requires": { + "date-format": "^3.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.1", + "rfdc": "^1.1.4", + "streamroller": "^2.2.4" + } + }, + "loglevel": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", + "dev": true + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" + }, + "lower-case-first": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz", + "integrity": "sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E=", + "requires": { + "lower-case": "^1.1.2" + } + }, + "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==", + "requires": { + "yallist": "^4.0.0" + } + }, + "lru-memoizer": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.1.4.tgz", + "integrity": "sha512-IXAq50s4qwrOBrXJklY+KhgZF+5y98PDaNo0gi/v2KQBFLyWr+JyFvijZXkGKjQj/h9c0OwoE+JZbwUXce76hQ==", + "requires": { + "lodash.clonedeep": "^4.5.0", + "lru-cache": "~4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "integrity": "sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=", + "requires": { + "pseudomap": "^1.0.1", + "yallist": "^2.0.0" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "dev": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.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 + }, + "mem": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz", + "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^3.1.0" + }, + "dependencies": { + "mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "dev": true + } + } + }, + "memfs": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.3.0.tgz", + "integrity": "sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg==", + "dev": true, + "requires": { + "fs-monkey": "1.0.3" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "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" + } + }, + "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" + } + } + } + }, + "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=" + }, + "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": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" + }, + "mime-db": { + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" + }, + "mime-types": { + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "requires": { + "mime-db": "1.50.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": "1.6.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", + "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "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-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 + }, + "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 + }, + "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" + } + } + } + }, + "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.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.5.tgz", + "integrity": "sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "dev": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "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==" + }, + "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 + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true, + "optional": true + }, + "nanoid": { + "version": "3.1.30", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", + "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "needle": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", + "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "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 + }, + "ngb-toast": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/ngb-toast/-/ngb-toast-0.0.6.tgz", + "integrity": "sha512-JVqZ+i7c852RbuT51o/KZBy00tRbqw7FmJjKybEHkjF0l/5Nx4ixIrZgofQQH+tC03Au31pi6yomKMrXUsQaTg==", + "requires": { + "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "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-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, + "node-gyp": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "dependencies": { + "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" + } + } + } + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "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-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", + "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-packlist": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", + "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", + "dev": true, + "requires": { + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", + "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", + "dev": true, + "requires": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + } + }, + "npm-registry-fetch": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", + "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", + "dev": true, + "requires": { + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + } + }, + "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" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~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" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "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-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.1.tgz", + "integrity": "sha512-If7BjFlpkzzBeV1cqgT3OSWT3azyoxDGajR+iGnFBfVV2EWyDyWaZZW2ERDjUaY2QM8i5jI3Sj7mhsM4DDAqWA==" + }, + "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==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "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.2.1", + "resolved": "https://registry.npmjs.org/open/-/open-8.2.1.tgz", + "integrity": "sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + }, + "dependencies": { + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "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" + } + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "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": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.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" + }, + "dependencies": { + "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-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": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "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 + }, + "pacote": { + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.4.tgz", + "integrity": "sha512-RfahPCunM9GI7ryJV/zY0bWQiokZyLqaSNHXtbNSoLb7bwTvBbJBEyCJ01KWs4j1Gj7GmX8crYXQ1sNX6P2VKA==", + "dev": true, + "requires": { + "@npmcli/git": "^2.0.1", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.8.2", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^11.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + } + }, + "param-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-1.1.2.tgz", + "integrity": "sha1-3LCRpDwlm5Io8cNB57akTqC/l0M=", + "requires": { + "sentence-case": "^1.1.2" + } + }, + "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" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "parse5-html-rewriting-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", + "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", + "dev": true, + "requires": { + "parse5": "^6.0.1", + "parse5-sax-parser": "^6.0.1" + } + }, + "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" + } + }, + "parse5-sax-parser": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", + "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + } + }, + "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": "1.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-1.1.2.tgz", + "integrity": "sha1-Pl1kogBDgwp8STRMLXS0G+DJyZs=", + "requires": { + "camel-case": "^1.1.1", + "upper-case-first": "^1.1.0" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-1.1.2.tgz", + "integrity": "sha1-UM5roNO+090LXCqcRVNpdDRAlRQ=", + "requires": { + "sentence-case": "^1.1.2" + } + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "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-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "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 + }, + "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.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.5.tgz", + "integrity": "sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==", + "dev": true, + "requires": { + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" + } + }, + "postcss-attribute-case-insensitive": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", + "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^6.0.2" + }, + "dependencies": { + "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 + } + } + }, + "postcss-calc": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", + "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-color-functional-notation": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", + "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-color-gray": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", + "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", + "dev": true, + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-color-hex-alpha": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", + "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", + "dev": true, + "requires": { + "postcss": "^7.0.14", + "postcss-values-parser": "^2.0.1" + }, + "dependencies": { + "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 + } + } + }, + "postcss-color-mod-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", + "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", + "dev": true, + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-color-rebeccapurple": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", + "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-colormin": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.1.tgz", + "integrity": "sha512-VVwMrEYLcHYePUYV99Ymuoi7WhKrMGy/V9/kTS0DkCoJYmmjdOMneyhzYUxcNgteKDVbrewOkSM7Wje/MFwxzA==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-convert-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz", + "integrity": "sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-custom-media": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", + "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + }, + "dependencies": { + "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 + } + } + }, + "postcss-custom-properties": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", + "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", + "dev": true, + "requires": { + "postcss": "^7.0.17", + "postcss-values-parser": "^2.0.1" + }, + "dependencies": { + "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 + } + } + }, + "postcss-custom-selectors": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", + "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "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" + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.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 + } + } + }, + "postcss-dir-pseudo-class": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", + "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "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" + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.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 + } + } + }, + "postcss-discard-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", + "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", + "dev": true + }, + "postcss-discard-duplicates": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", + "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", + "dev": true + }, + "postcss-discard-empty": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", + "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", + "dev": true + }, + "postcss-discard-overridden": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", + "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", + "dev": true + }, + "postcss-double-position-gradients": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", + "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", + "dev": true, + "requires": { + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-env-function": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", + "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-focus-visible": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", + "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "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 + } + } + }, + "postcss-focus-within": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", + "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "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 + } + } + }, + "postcss-font-variant": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz", + "integrity": "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "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 + } + } + }, + "postcss-gap-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", + "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "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 + } + } + }, + "postcss-image-set-function": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", + "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-import": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.0.2.tgz", + "integrity": "sha512-BJ2pVK4KhUyMcqjuKs9RijV5tatNzNa73e/32aBVE/ejYPe37iH+6vAu9WvqUkB5OAYgLHzbSvzHnorybJCm9g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-initial": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz", + "integrity": "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "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 + } + } + }, + "postcss-lab-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", + "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", + "dev": true, + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-loader": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.1.0.tgz", + "integrity": "sha512-yA/cXBfACkthZNA2hQxOnaReVfQ6uLmvbEDQzNafpbK40URZJvP/28dL1DG174Gvz3ptkkHbbwDBCh+gXR94CA==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "semver": "^7.3.5" + } + }, + "postcss-logical": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", + "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "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 + } + } + }, + "postcss-media-minmax": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", + "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "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 + } + } + }, + "postcss-merge-longhand": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", + "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", + "dev": true, + "requires": { + "css-color-names": "^1.0.1", + "postcss-value-parser": "^4.1.0", + "stylehacks": "^5.0.1" + } + }, + "postcss-merge-rules": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", + "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^2.0.1", + "postcss-selector-parser": "^6.0.5", + "vendors": "^1.0.3" + } + }, + "postcss-minify-font-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", + "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-minify-gradients": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.3.tgz", + "integrity": "sha512-Z91Ol22nB6XJW+5oe31+YxRsYooxOdFKcbOqY/V8Fxse1Y3vqlNRpi1cxCqoACZTQEhl+xvt4hsbWiV5R+XI9Q==", + "dev": true, + "requires": { + "colord": "^2.9.1", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-minify-params": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", + "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.0", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", + "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "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 + }, + "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-nesting": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", + "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "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 + } + } + }, + "postcss-normalize-charset": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", + "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", + "dev": true + }, + "postcss-normalize-display-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", + "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-positions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", + "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", + "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-string": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", + "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", + "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", + "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-url": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", + "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", + "dev": true, + "requires": { + "is-absolute-url": "^3.0.3", + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", + "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-ordered-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", + "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-overflow-shorthand": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", + "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "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 + } + } + }, + "postcss-page-break": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", + "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "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 + } + } + }, + "postcss-place": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", + "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-preset-env": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", + "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", + "dev": true, + "requires": { + "autoprefixer": "^9.6.1", + "browserslist": "^4.6.4", + "caniuse-lite": "^1.0.30000981", + "css-blank-pseudo": "^0.1.4", + "css-has-pseudo": "^0.10.0", + "css-prefers-color-scheme": "^3.1.1", + "cssdb": "^4.4.0", + "postcss": "^7.0.17", + "postcss-attribute-case-insensitive": "^4.0.1", + "postcss-color-functional-notation": "^2.0.1", + "postcss-color-gray": "^5.0.0", + "postcss-color-hex-alpha": "^5.0.3", + "postcss-color-mod-function": "^3.0.3", + "postcss-color-rebeccapurple": "^4.0.1", + "postcss-custom-media": "^7.0.8", + "postcss-custom-properties": "^8.0.11", + "postcss-custom-selectors": "^5.1.2", + "postcss-dir-pseudo-class": "^5.0.0", + "postcss-double-position-gradients": "^1.0.0", + "postcss-env-function": "^2.0.2", + "postcss-focus-visible": "^4.0.0", + "postcss-focus-within": "^3.0.0", + "postcss-font-variant": "^4.0.0", + "postcss-gap-properties": "^2.0.0", + "postcss-image-set-function": "^3.0.1", + "postcss-initial": "^3.0.0", + "postcss-lab-function": "^2.0.1", + "postcss-logical": "^3.0.0", + "postcss-media-minmax": "^4.0.0", + "postcss-nesting": "^7.0.0", + "postcss-overflow-shorthand": "^2.0.0", + "postcss-page-break": "^2.0.0", + "postcss-place": "^4.0.1", + "postcss-pseudo-class-any-link": "^6.0.0", + "postcss-replace-overflow-wrap": "^3.0.0", + "postcss-selector-matches": "^4.0.0", + "postcss-selector-not": "^4.0.0" + }, + "dependencies": { + "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 + } + } + }, + "postcss-pseudo-class-any-link": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", + "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "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" + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.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 + } + } + }, + "postcss-reduce-initial": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", + "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", + "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", + "dev": true, + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-replace-overflow-wrap": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", + "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + }, + "dependencies": { + "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 + } + } + }, + "postcss-selector-matches": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", + "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + }, + "dependencies": { + "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 + } + } + }, + "postcss-selector-not": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz", + "integrity": "sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + }, + "dependencies": { + "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 + } + } + }, + "postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.3.tgz", + "integrity": "sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0", + "svgo": "^2.7.0" + } + }, + "postcss-unique-selectors": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", + "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "postcss-values-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", + "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", + "dev": true, + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "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 + }, + "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 + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-polyfill": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.2.1.tgz", + "integrity": "sha512-3p9zj0cEHbp7NVUxEYUWjQlffXqnXaZIMPkAO7HhFh8u5636xLRDHOUo2vpWSK0T2mqm6fKLXYn1KP6PAZ2gKg==" + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.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" + } + }, + "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==" + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "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 + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "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.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "raw-loader": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "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-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 + }, + "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 + }, + "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" + } + } + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + } + }, + "read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "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==", + "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" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpu-core": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "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", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "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": "^3.3.2" + }, + "dependencies": { + "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 + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "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 + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "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.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "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 + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "resolve-url-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", + "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^7.0.35", + "source-map": "0.6.1" + }, + "dependencies": { + "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 + } + } + }, + "rest-facade": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/rest-facade/-/rest-facade-1.16.3.tgz", + "integrity": "sha512-9BQTPLiwg23XZwcWi0ys1wTizfc//0b2G3U6vBWcgqh56ozs2K6CD+Jw4DYcw3AqdPQN7jj8nzRUcUXFVGzb0Q==", + "requires": { + "change-case": "^2.3.0", + "deepmerge": "^3.2.0", + "lodash.get": "^4.4.2", + "superagent": "^5.1.1" + } + }, + "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" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "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-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "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": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "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==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass": { + "version": "1.35.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.35.1.tgz", + "integrity": "sha512-oCisuQJstxMcacOPmxLNiLlj4cUyN2+8xJnG7VanRoh2GOLr9RqkvI4AxA4a6LHVg/rsu+PmxXeGhrdSF9jCiQ==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0" + } + }, + "sass-loader": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz", + "integrity": "sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "dependencies": { + "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-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 + }, + "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 + } + } + }, + "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": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", + "dev": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "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.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "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 + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "sentence-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-1.1.3.tgz", + "integrity": "sha1-gDSq/CFFdy06vhUJqkLJ4QQtwTk=", + "requires": { + "lower-case": "^1.1.1" + } + }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "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.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "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 + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", + "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "snake-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-1.1.2.tgz", + "integrity": "sha1-DC8l4wUVjZoY09l3BmGH/vilpmo=", + "requires": { + "sentence-case": "^1.1.2" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.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" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.3.1.tgz", + "integrity": "sha512-HC5w5Olv2XZ0XJ4gOLGzzHEuOCfj3G0SmoW3jLHYYh34EVsIr3EkW9h6kgfW+K3TFEcmYy8JcPWe//KUkBp5jA==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.0.0", + "socket.io-adapter": "~2.3.2", + "socket.io-parser": "~4.0.4" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } + }, + "socket.io-adapter": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.2.tgz", + "integrity": "sha512-PBZpxUPYjmoogY0aoaTmo1643JelsaS1CiAwNjRVdrI0X9Seuc19Y2Wife8k88avW6haG8cznvwbubAZwH4Mtg==", + "dev": true + }, + "socket.io-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "dev": true, + "requires": { + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" + } + }, + "sockjs": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "sockjs-client": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.2.tgz", + "integrity": "sha512-ZzRxPBISQE7RpzlH4tKJMQbHM9pabHluk0WBaxAQ+wm/UieeBVBou0p4wVnSQGN9QmpAZygQ0cDIypWuqOFmFQ==", + "dev": true, + "requires": { + "debug": "^3.2.6", + "eventsource": "^1.0.7", + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.3" + }, + "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" + } + } + } + }, + "socks": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", + "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "dev": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.0.tgz", + "integrity": "sha512-57e7lwCN4Tzt3mXz25VxOErJKXlPfXmkMLnk310v/jwW20jWRVcgsOit+xNkN3eIEdB47GwnfAEBLacZ/wVIKg==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "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 + }, + "source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "dev": true + }, + "source-map-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.0.tgz", + "integrity": "sha512-GKGWqWvYr04M7tn8dryIWvb0s8YM41z82iQv01yBtIylgxax0CwvSy6gc2Y02iuXwEfGWRlMicH0nvms9UZphw==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.2", + "source-map-js": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "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 + } + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "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" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "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 + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "streamroller": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", + "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", + "dev": true, + "requires": { + "date-format": "^2.1.0", + "debug": "^4.1.1", + "fs-extra": "^8.1.0" + }, + "dependencies": { + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true + } + } + }, + "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" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "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==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "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==" + } + } + }, + "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" + } + }, + "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 + }, + "style-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", + "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "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-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 + }, + "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 + }, + "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" + } + } + } + }, + "stylehacks": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", + "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "postcss-selector-parser": "^6.0.4" + } + }, + "stylus": { + "version": "0.54.8", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", + "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", + "dev": true, + "requires": { + "css-parse": "~2.0.0", + "debug": "~3.1.0", + "glob": "^7.1.6", + "mkdirp": "~1.0.4", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "semver": "^6.3.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "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 + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "stylus-loader": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-6.1.0.tgz", + "integrity": "sha512-qKO34QCsOtSJrXxQQmXsPeaVHh6hMumBAFIoJTcsSr2VzrA6o/CW9HCGR8spCjzJhN8oKQHdj/Ytx0wwXyElkw==", + "dev": true, + "requires": { + "fast-glob": "^3.2.5", + "klona": "^2.0.4", + "normalize-path": "^3.0.0" + } + }, + "superagent": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-5.3.1.tgz", + "integrity": "sha512-wjJ/MoTid2/RuGCOFtlacyGNxN9QLMgcpYLDQlWFIhhdJ93kNscFonGvrpAHSCVjRVj++DGCglocF7Aej1KHvQ==", + "requires": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.2", + "debug": "^4.1.1", + "fast-safe-stringify": "^2.0.7", + "form-data": "^3.0.0", + "formidable": "^1.2.2", + "methods": "^1.1.2", + "mime": "^2.4.6", + "qs": "^6.9.4", + "readable-stream": "^3.6.0", + "semver": "^7.3.2" + }, + "dependencies": { + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "qs": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.2.tgz", + "integrity": "sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw==", + "requires": { + "side-channel": "^1.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" + } + }, + "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" + } + }, + "swap-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", + "integrity": "sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM=", + "requires": { + "lower-case": "^1.1.1", + "upper-case": "^1.1.1" + } + }, + "symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "terser": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz", + "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "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 + } + } + }, + "terser-webpack-plugin": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.3.tgz", + "integrity": "sha512-cxGbMqr6+A2hrIB5ehFIF+F/iST5ZOxvOmy9zih9ySbP1C2oEWQSOUS+2SNBTjzx5xLKO4xnod9eywdfq1Nb9A==", + "dev": true, + "requires": { + "jest-worker": "^27.0.2", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.7.0" + }, + "dependencies": { + "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-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 + }, + "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 + }, + "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" + } + }, + "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 + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "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 + }, + "title-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-1.1.2.tgz", + "integrity": "sha1-+uSmrlRr+iLQg6DuqRCkDRLtT1o=", + "requires": { + "sentence-case": "^1.1.1", + "upper-case": "^1.0.3" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "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 + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "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" + } + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + }, + "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.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 + }, + "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" + } + }, + "typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "unfetch": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==" + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" + }, + "upper-case-first": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", + "integrity": "sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU=", + "requires": { + "upper-case": "^1.1.1" + } + }, + "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" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-parse": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", + "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", + "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "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-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "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" + } + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "watchpack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", + "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", + "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" + } + }, + "webpack": { + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.44.0.tgz", + "integrity": "sha512-I1S1w4QLoKmH19pX6YhYN0NiSXaWY8Ou00oA+aMcr9IUGeF5azns+IKBkfoAAG9Bu5zOIzZt/mN35OffBya8AQ==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.0", + "es-module-lexer": "^0.7.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "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.0.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.2.0", + "webpack-sources": "^2.3.0" + }, + "dependencies": { + "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-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 + }, + "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 + }, + "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" + } + }, + "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 + }, + "webpack-sources": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", + "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "dev": true, + "requires": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + } + } + } + }, + "webpack-dev-middleware": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.0.0.tgz", + "integrity": "sha512-9zng2Z60pm6A98YoRcA0wSxw1EYn7B7y5owX/Tckyt9KGyULTkLtiavjaXlWqOMkM0YtqGgL3PvMOFgyFLq8vw==", + "dev": true, + "requires": { + "colorette": "^1.2.2", + "mem": "^8.1.1", + "memfs": "^3.2.2", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "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-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 + }, + "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 + }, + "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" + } + } + } + }, + "webpack-dev-server": { + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", + "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "dependencies": { + "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-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 + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "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 + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "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 + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "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" + } + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "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" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.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 + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "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" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "webpack-dev-middleware": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "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": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "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 + } + } + }, + "webpack-subresource-integrity": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.2.tgz", + "integrity": "sha512-GBWYBoyalbo5YClwWop9qe6Zclp8CIXYGIz12OPclJhIrSplDxs1Ls1JDMH8xBPPrg1T6ISaTW9Y6zOrwEiAzw==", + "dev": true, + "requires": { + "webpack-sources": "^1.3.0" + } + }, + "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 + }, + "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" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "which-typed-array": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", + "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", + "foreach": "^2.0.5", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.7" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "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": "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" + }, + "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 + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true + }, + "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==" + }, + "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": "17.2.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz", + "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==", + "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 + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, + "zone.js": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.4.tgz", + "integrity": "sha512-DDh2Ab+A/B+9mJyajPjHFPWfYU1H+pdun4wnnk0OcQTNjem1XQSZ2CDW+rfZEUDjv5M19SBqAkjZi0x5wuB5Qw==", + "requires": { + "tslib": "^2.0.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..5445c45 --- /dev/null +++ b/package.json @@ -0,0 +1,49 @@ +{ + "name": "ezdota-ui", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "watch": "ng build --watch --configuration development", + "test": "ng test" + }, + "private": true, + "dependencies": { + "@angular/animations": "~12.2.12", + "@angular/common": "~12.2.12", + "@angular/compiler": "~12.2.12", + "@angular/core": "~12.2.12", + "@angular/forms": "~12.2.12", + "@angular/platform-browser": "~12.2.12", + "@angular/platform-browser-dynamic": "~12.2.12", + "@angular/router": "~12.2.12", + "@auth0/auth0-angular": "^1.8.0", + "@ng-bootstrap/ng-bootstrap": "^10.0.0", + "@types/jquery": "^3.5.8", + "angular-bootstrap-toasts": "^1.2.0", + "auth0": "^2.37.0", + "bignumber": "^1.1.0", + "bootstrap": "^4.6.1", + "jquery": "^3.6.0", + "ngb-toast": "0.0.6", + "rxjs": "~6.6.0", + "tslib": "^2.2.0", + "util": "^0.12.4", + "zone.js": "~0.11.4" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~12.1.1", + "@angular/cli": "~12.1.1", + "@angular/compiler-cli": "~12.2.12", + "@types/jasmine": "~3.6.0", + "@types/node": "^12.20.37", + "jasmine-core": "~3.7.0", + "karma": "~6.3.0", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage": "~2.0.3", + "karma-jasmine": "~4.0.0", + "karma-jasmine-html-reporter": "^1.5.0", + "typescript": "~4.3.2" + } +} diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts new file mode 100644 index 0000000..1eeefaf --- /dev/null +++ b/src/app/app-routing.module.ts @@ -0,0 +1,15 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { HomepageComponent } from './components/homepage/homepage.component'; +import { SavedPlayerComponent } from './components/saved-player/saved-player.component'; +import { SplayerComponent } from './components/splayer/splayer.component'; +import { UserProfileComponent } from './components/user-profile/user-profile.component'; + +const routes: Routes = [{path:'', component: HomepageComponent},{path:'player', component: SplayerComponent},{path:'profile', component: UserProfileComponent},{path:'saved-player',component: SavedPlayerComponent}]; + +@NgModule({ + declarations: [], + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule] +}) +export class AppRoutingModule { } diff --git a/src/app/app.component.html b/src/app/app.component.html new file mode 100644 index 0000000..1f1266f --- /dev/null +++ b/src/app/app.component.html @@ -0,0 +1,5 @@ +
+ + + +
\ No newline at end of file diff --git a/src/app/app.component.scss b/src/app/app.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts new file mode 100644 index 0000000..c53caa3 --- /dev/null +++ b/src/app/app.component.spec.ts @@ -0,0 +1,25 @@ +import { TestBed } from '@angular/core/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ + AppComponent + ], + }).compileComponents(); + }); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'Dota2Protractor'`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app.title).toEqual('Dota2Protractor'); + }); + +}); diff --git a/src/app/app.component.ts b/src/app/app.component.ts new file mode 100644 index 0000000..c1076cb --- /dev/null +++ b/src/app/app.component.ts @@ -0,0 +1,14 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'] +}) +export class AppComponent { + title = 'Dota2Protractor'; + + constructor() { } + +} + diff --git a/src/app/app.module.ts b/src/app/app.module.ts new file mode 100644 index 0000000..fe09c38 --- /dev/null +++ b/src/app/app.module.ts @@ -0,0 +1,43 @@ +import { NgModule } from '@angular/core'; +import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; +import { BrowserModule } from '@angular/platform-browser'; + +import { AppComponent } from './app.component'; +import { AppRoutingModule } from './app-routing.module'; +import { HttpClientModule} from '@angular/common/http'; +import { HomepageComponent } from './components/homepage/homepage.component'; +import { NavbarComponent } from './components/navbar/navbar.component'; +import { SplayerComponent } from './components/splayer/splayer.component'; +import { AuthModule } from '@auth0/auth0-angular'; +import { AuthButtonComponent } from './components/auth-button/auth-button.component'; +import { UserProfileComponent } from './components/user-profile/user-profile.component'; +import { FormsModule } from '@angular/forms'; +import { SavedPlayerComponent } from './components/saved-player/saved-player.component'; +import { NgbToastModule } from 'ngb-toast'; + +@NgModule({ + declarations: [ + AppComponent, + HomepageComponent, + NavbarComponent, + SplayerComponent, + AuthButtonComponent, + UserProfileComponent, + SavedPlayerComponent + ], + imports: [ + BrowserModule, + HttpClientModule, + AppRoutingModule, + NgbModule, + FormsModule, + NgbToastModule, + AuthModule.forRoot({ + domain: 'dev-ulpdvjy2.us.auth0.com', + clientId: 'k6E8BCBB1pmYMyAFxpuCw6j025SS3Mdq' + }), + ], + providers: [ HttpClientModule ], + bootstrap: [AppComponent] +}) +export class AppModule { } diff --git a/src/app/components/auth-button/auth-button.component.html b/src/app/components/auth-button/auth-button.component.html new file mode 100644 index 0000000..c942a70 --- /dev/null +++ b/src/app/components/auth-button/auth-button.component.html @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/src/app/components/auth-button/auth-button.component.scss b/src/app/components/auth-button/auth-button.component.scss new file mode 100644 index 0000000..e26a725 --- /dev/null +++ b/src/app/components/auth-button/auth-button.component.scss @@ -0,0 +1,5 @@ +.linkFix{ + text-decoration: none; + color: white; + margin-right: 1rem; +} \ No newline at end of file diff --git a/src/app/components/auth-button/auth-button.component.spec.ts b/src/app/components/auth-button/auth-button.component.spec.ts new file mode 100644 index 0000000..f00dc1b --- /dev/null +++ b/src/app/components/auth-button/auth-button.component.spec.ts @@ -0,0 +1,28 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { AuthModule } from '@auth0/auth0-angular'; + +import { AuthButtonComponent } from './auth-button.component'; + +describe('AuthButtonComponent', () => { + let component: AuthButtonComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AuthButtonComponent ], + imports: [ AuthModule.forRoot({domain: 'dev-ulpdvjy2.us.auth0.com', + clientId: 'k6E8BCBB1pmYMyAFxpuCw6j025SS3Mdq'}) ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AuthButtonComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/components/auth-button/auth-button.component.ts b/src/app/components/auth-button/auth-button.component.ts new file mode 100644 index 0000000..3eda217 --- /dev/null +++ b/src/app/components/auth-button/auth-button.component.ts @@ -0,0 +1,14 @@ +import { Component, Inject } from '@angular/core'; +import { AuthService } from '@auth0/auth0-angular'; +import { DOCUMENT } from '@angular/common'; + +@Component({ + selector: 'app-auth-button', + templateUrl: './auth-button.component.html', + styleUrls: ['./auth-button.component.scss'] +}) +export class AuthButtonComponent { + constructor(@Inject(DOCUMENT) public document: Document, public auth: AuthService) { + } + +} \ No newline at end of file diff --git a/src/app/components/homepage/homepage.component.html b/src/app/components/homepage/homepage.component.html new file mode 100644 index 0000000..85b827e --- /dev/null +++ b/src/app/components/homepage/homepage.component.html @@ -0,0 +1,10 @@ +
+ + + +
\ No newline at end of file diff --git a/src/app/components/homepage/homepage.component.scss b/src/app/components/homepage/homepage.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/components/homepage/homepage.component.spec.ts b/src/app/components/homepage/homepage.component.spec.ts new file mode 100644 index 0000000..1a4b03a --- /dev/null +++ b/src/app/components/homepage/homepage.component.spec.ts @@ -0,0 +1,63 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { of } from 'rxjs'; +import { AppModule } from 'src/app/app.module'; +import { Match } from 'src/app/models/match/match.model'; +import { SPlayer } from 'src/app/models/s-player/splayer.model'; +import { StratzService } from 'src/app/services/stratz.service'; + +import { HomepageComponent } from './homepage.component'; + +describe('HomepageComponent', () => { + let component: HomepageComponent; + let fixture: ComponentFixture; + + let match = new Match(); + match.id = 1; + match.durationSeconds = "1"; + match.victory = true; + match.firstBloodTime = "1"; + match.gameMode = "1"; + match.largestGoldLead = "1"; + match.largestGoldLeadTeam = "Dire"; + match.largestXpLead = "1"; + match.largestXpLeadTeam = "Radiant"; + match.startTime = "1"; + match.deaths = "1"; + + let player = new SPlayer(); + player.name = "Ryon"; + player.id = 1; + player.realName = "Real Ryon"; + player.avatar = "link"; + player.profileUri = "uri"; + player.matchesList = []; + player.matchesList.push(match); + + const stratzServiceSpy = jasmine.createSpyObj('StratzService',[ + 'getPlayer' + ]); + stratzServiceSpy.getPlayer.and.returnValue(of(player)); + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ HomepageComponent ], + imports: [ AppModule ], + providers: [ + { + provide: StratzService, useValue: stratzServiceSpy + } + ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(HomepageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/components/homepage/homepage.component.ts b/src/app/components/homepage/homepage.component.ts new file mode 100644 index 0000000..9a66a95 --- /dev/null +++ b/src/app/components/homepage/homepage.component.ts @@ -0,0 +1,16 @@ +import { Component, Input, OnInit, ɵCodegenComponentFactoryResolver } from '@angular/core'; + +@Component({ + selector: 'app-homepage', + templateUrl: './homepage.component.html', + styleUrls: ['./homepage.component.scss'] +}) +export class HomepageComponent implements OnInit { + + + constructor() { } + + ngOnInit(): void { + + } +} diff --git a/src/app/components/navbar/navbar.component.html b/src/app/components/navbar/navbar.component.html new file mode 100644 index 0000000..a3e05b6 --- /dev/null +++ b/src/app/components/navbar/navbar.component.html @@ -0,0 +1,25 @@ + \ No newline at end of file diff --git a/src/app/components/navbar/navbar.component.scss b/src/app/components/navbar/navbar.component.scss new file mode 100644 index 0000000..31568ec --- /dev/null +++ b/src/app/components/navbar/navbar.component.scss @@ -0,0 +1,22 @@ +.navbar{ + padding-bottom: 1rem; +} + +.linkFix{ + text-decoration: none; + color: white; +} +a{ + justify-content: left; +} +.login{ + justify-content: right; +} +.navbar-brand{ + padding-bottom: .5rem; +} +img{ + height: 3rem; + margin-right: 1rem; + border-radius: 50%; +} \ No newline at end of file diff --git a/src/app/components/navbar/navbar.component.spec.ts b/src/app/components/navbar/navbar.component.spec.ts new file mode 100644 index 0000000..4eaa689 --- /dev/null +++ b/src/app/components/navbar/navbar.component.spec.ts @@ -0,0 +1,59 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { of } from 'rxjs'; +import { AppModule } from 'src/app/app.module'; +import { Auth0Service } from 'src/app/services/auth0.service'; + +import { NavbarComponent } from './navbar.component'; + +describe('NavbarComponent', () => { + let component: NavbarComponent; + let fixture: ComponentFixture; + + let user = { + name: "Ryon", + email: "ryon137@gmail.com" + }; + + const auth0Spy = jasmine.createSpyObj('Auth0Service',['getUser']); + const getUserSpy = auth0Spy.getUser.and.returnValue(of(user)); + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ NavbarComponent ], + imports: [ AppModule ], + providers: [ + { provide: Auth0Service, useValue: auth0Spy } + ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(NavbarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should have link for Protractor', ()=>{ + const home = fixture.debugElement.nativeElement.querySelector('#home'); + expect(home.textContent).toBe("Protractor"); + }); + + it('should have link for Profile when Authenticated', ()=>{ + //need to mock authentication and create condition for when user is authenticated + const profile = fixture.debugElement.nativeElement.querySelector('#profile'); + //expect(profile.textContent).toBe("Profile"); + }); + + it('link should navigate to / and /profile', ()=>{ + const anchorTags = fixture.debugElement.nativeElement.querySelectorAll('a'); + expect(anchorTags[0].getAttribute("routerlink")).toEqual(""); + //expect(anchorTags[1].getAttribute("routerlink")).toEqual("/profile"); + }) + + +}); diff --git a/src/app/components/navbar/navbar.component.ts b/src/app/components/navbar/navbar.component.ts new file mode 100644 index 0000000..ac040ba --- /dev/null +++ b/src/app/components/navbar/navbar.component.ts @@ -0,0 +1,17 @@ +import { DOCUMENT } from '@angular/common'; +import { Component, Inject, OnInit } from '@angular/core'; +import { AuthService } from '@auth0/auth0-angular'; + +@Component({ + selector: 'app-navbar', + templateUrl: './navbar.component.html', + styleUrls: ['./navbar.component.scss'] +}) +export class NavbarComponent implements OnInit { + + constructor(@Inject(DOCUMENT) public document: Document, public auth: AuthService) { } + + ngOnInit(): void { + } + +} diff --git a/src/app/components/saved-player/saved-player.component.html b/src/app/components/saved-player/saved-player.component.html new file mode 100644 index 0000000..7f2fcb3 --- /dev/null +++ b/src/app/components/saved-player/saved-player.component.html @@ -0,0 +1,49 @@ +
+

All Saved Matches

+
+ +
+

Match {{match.id}}

+
+ +
+ +
+

The match started + on + {{match.startTime}}. +

+

It + lasted + {{ (match.durationSeconds / 60).toFixed(2) }} minutes.

+

You played {{ match.heroes }} .

+

You were Radiant .

+

+ +

You were Dire .

+ +

+

First blood was achieved at {{ (match.firstBloodTime / 60).toFixed(2) }} + minutes. +

+

You won.

+

+ +

You lost.

+ +

+

+ {{match.largestGoldLeadTeam}} had the highest gold + lead of + {{match.largestGoldLead}} gold.

+

+ {{match.largestXpLeadTeam}} had the highest + experience + lead + of {{match.largestXpLead}} experience.

+

You died {{match.deaths}} times.

+

You fed.

+
+
+
+
\ No newline at end of file diff --git a/src/app/components/saved-player/saved-player.component.scss b/src/app/components/saved-player/saved-player.component.scss new file mode 100644 index 0000000..999f43d --- /dev/null +++ b/src/app/components/saved-player/saved-player.component.scss @@ -0,0 +1,3 @@ +.matches:hover{ + cursor: pointer; +} \ No newline at end of file diff --git a/src/app/components/saved-player/saved-player.component.spec.ts b/src/app/components/saved-player/saved-player.component.spec.ts new file mode 100644 index 0000000..b033b44 --- /dev/null +++ b/src/app/components/saved-player/saved-player.component.spec.ts @@ -0,0 +1,183 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { of } from 'rxjs'; +import { AppModule } from 'src/app/app.module'; +import { Match } from 'src/app/models/match/match.model'; +import { SavePlayerService } from 'src/app/services/save-player.service'; + +import { SavedPlayerComponent } from './saved-player.component'; + +describe('SavedPlayerComponent', () => { + let component: SavedPlayerComponent; + let fixture: ComponentFixture; + + let match = new Match(); + match.id = 1; + match.authId = [1]; + match.durationSeconds = "1"; + match.victory = true; + match.firstBloodTime = "1"; + match.gameMode = "1"; + match.largestGoldLead = "1"; + match.largestGoldLeadTeam = "Dire"; + match.largestXpLead = "1"; + match.largestXpLeadTeam = "Radiant"; + match.startTime = "1"; + match.deaths = 11; + match.radiant_gold_adv = [0, -34, 405, 224]; + match.radiant_xp_adv = [0, 24, 212, 211]; + match.heroes = "Mars"; + match.radiant = true; + + let matchArray = [match]; + + const savePlayerServiceSpy = jasmine.createSpyObj('SavePlayerService',['getAllSavedMatches']); + const getAllSavedMatchesSpy = savePlayerServiceSpy.getAllSavedMatches.and.returnValue(of(matchArray)); + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SavedPlayerComponent ], + imports: [ AppModule ], + providers: [ + { provide: SavePlayerService, useValue: savePlayerServiceSpy } + ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SavedPlayerComponent); + component = fixture.componentInstance; + component.authId = 1; + fixture.detectChanges(); + }); + + afterEach(() => { + fixture.destroy(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should display All saved Matches', ()=>{ + const headerTag = fixture.debugElement.nativeElement.querySelector('#userDetails'); + expect(headerTag.textContent).toBe("All Saved Matches"); + }); + + it('should display all match ids', ()=>{ + const pTag = fixture.debugElement.nativeElement.querySelector('#matchLabel'); + expect(pTag.textContent).toBe("Match " + match.id); + }); + + it('should display all match heroes', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const pTag = fixture.debugElement.nativeElement.querySelector('#hero'); + expect(pTag.textContent).toBe("You played " + match.heroes+" ."); + }); + + it('should display all match start times', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const pTag = fixture.debugElement.nativeElement.querySelector('#startTime'); + expect(pTag.textContent).toBe("The match started on " + match.startTime +". "); + }); + + it('should display all match duration seconds', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const pTag = fixture.debugElement.nativeElement.querySelector('#matchDuration'); + expect(pTag.textContent).toBe("It lasted " + (match.durationSeconds / 60).toFixed(2) +" minutes."); + }); + + it('should display all match team side if radiant', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const pTag = fixture.debugElement.nativeElement.querySelector('#radiant'); + expect(pTag.textContent).toBe("You were Radiant ."); + }); + + it('should display all match team side if dire', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + match.radiant = false; + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const pTag = fixture.debugElement.nativeElement.querySelector('#dire'); + expect(pTag.textContent).toBe("You were Dire ."); + }); + + it('should display all match first bloods', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const pTag = fixture.debugElement.nativeElement.querySelector('#firstBloodTime'); + expect(pTag.textContent).toBe("First blood was achieved at " + (match.firstBloodTime / 60).toFixed(2) +" minutes. "); + }); + + it('should display all match victories', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const pTag = fixture.debugElement.nativeElement.querySelector('#matchVictory'); + expect(pTag.textContent).toBe("You won."); + }); + + it('should display all gold leads', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const pTag = fixture.debugElement.nativeElement.querySelector('#goldLead'); + expect(pTag.textContent).toBe(" " + match.largestGoldLeadTeam + " had the highest gold lead of " + match.largestGoldLead + " gold."); + }); + + it('should display all xp leads', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const pTag = fixture.debugElement.nativeElement.querySelector('#xpLead'); + expect(pTag.textContent).toBe(" " + match.largestXpLeadTeam + " had the highest experience lead of " + match.largestXpLead + " experience."); + }); + + it('should display all deaths', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const pTag = fixture.debugElement.nativeElement.querySelector('#deaths'); + expect(pTag.textContent).toBe("You died " + match.deaths + " times."); + }); + + it('should display hidden message if deaths are greater than 10', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const pTag = fixture.debugElement.nativeElement.querySelector('#feed'); + expect(pTag.textContent).toBe("You fed."); + }); +}); diff --git a/src/app/components/saved-player/saved-player.component.ts b/src/app/components/saved-player/saved-player.component.ts new file mode 100644 index 0000000..d27fb24 --- /dev/null +++ b/src/app/components/saved-player/saved-player.component.ts @@ -0,0 +1,48 @@ +import { Component, Input, OnInit } from '@angular/core'; +import { Match } from 'src/app/models/match/match.model'; +import { SavePlayerService } from 'src/app/services/save-player.service'; +import { NgbToastService } from 'ngb-toast'; +import { AuthService } from '@auth0/auth0-angular'; +import { Auth0Service } from 'src/app/services/auth0.service'; + +@Component({ + selector: 'app-saved-player', + templateUrl: './saved-player.component.html', + styleUrls: ['./saved-player.component.scss'] +}) +export class SavedPlayerComponent implements OnInit { + match = new Match; + authId!: any; + matchArray!: Match[]; + isPlayer = false; + + constructor(private savePlayerService: SavePlayerService, private auth: Auth0Service, private toastService: NgbToastService) { } + + ngOnInit(): void { + //**********************************************************/ + // Fetch this user's ID and store it locally + //**********************************************************/ + this.auth.getUser().subscribe((data: any) => { + if (data.sub) { + this.authId = data.sub.substring(14, 20); + } + }) + /**********************************************************/ + // Loop through matches, and display any match that has this + // user's auth ID associated with it + //**********************************************************/ + this.savePlayerService.getAllSavedMatches().subscribe((matchArray: any) => { + this.matchArray = []; + for (let i = 0; i < matchArray.length; ++i) { + if (matchArray[i].authId?.toString().includes(this.authId)) { + this.matchArray.push(matchArray[i]); + } + } + this.matchArray.reverse(); + }) + + } + onClick() { + this.isPlayer = true; + } +} diff --git a/src/app/components/splayer/splayer.component.html b/src/app/components/splayer/splayer.component.html new file mode 100644 index 0000000..24f0bda --- /dev/null +++ b/src/app/components/splayer/splayer.component.html @@ -0,0 +1,65 @@ +
+
+ + + + + +
+ +
+
+ +
+

{{splayer.name}}

+

Steam ID: {{splayer.id}}

+

Real Name: {{splayer.realName}}

+
+ +
+

Most recent match details:

+

The match id was {{match.id}}.

+

The match started on + {{match.startTime}}. +

+

It lasted + {{ (match.durationSeconds / 60).toFixed(2) }} minutes.

+

You played {{hero.displayName}} .

+

You were Radiant .

+

+ +

You were Dire .

+ +

+

First blood was achieved at {{ (match.firstBloodTime / 60).toFixed(2) }} minutes.

+

You won. +

+

+ +

You lost.

+ +

+

+ {{match.largestGoldLeadTeam}} had the highest gold + lead of + {{match.largestGoldLead}} gold.

+

+ {{match.largestXpLeadTeam}} had the highest + experience + lead + of {{match.largestXpLead}} experience.

+

You died {{match.deaths}} times.

+

You fed.

+
+
+ +
+
+
+ +
+
\ No newline at end of file diff --git a/src/app/components/splayer/splayer.component.scss b/src/app/components/splayer/splayer.component.scss new file mode 100644 index 0000000..8bcf2b2 --- /dev/null +++ b/src/app/components/splayer/splayer.component.scss @@ -0,0 +1,14 @@ +h3{ + padding-bottom: 1rem; +} +h1{ + padding-bottom: 1rem; +} +p{ + font-size: 18px; +} + +button{ + //margin-left: 1rem; + margin-top: .25rem; +} diff --git a/src/app/components/splayer/splayer.component.spec.ts b/src/app/components/splayer/splayer.component.spec.ts new file mode 100644 index 0000000..dd82343 --- /dev/null +++ b/src/app/components/splayer/splayer.component.spec.ts @@ -0,0 +1,324 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { NgbToast, NgbToastService } from 'ngb-toast'; +import { of } from 'rxjs'; +import { AppModule } from 'src/app/app.module'; +import { Hero } from 'src/app/models/hero/hero.model'; +import { Match } from 'src/app/models/match/match.model'; +import { SPlayer } from 'src/app/models/s-player/splayer.model'; +import { OpendotaService } from 'src/app/services/opendota.service'; +import { SavePlayerService } from 'src/app/services/save-player.service'; +import { StratzService } from 'src/app/services/stratz.service'; + +import { SplayerComponent } from './splayer.component'; + +describe('SplayerComponent', () => { + let component: SplayerComponent; + let fixture: ComponentFixture; + + let steamid = '66914827'; + + let hero = new Hero(); + hero.displayName = "Outworld Destroyer"; + hero.id = 76; + let hero2 = new Hero(); + hero2.id = 11; + hero2.displayName = "Mars"; + + let heroArray = [hero, hero2]; + + let match = new Match(); + match.id = 1; + match.authId = [1,2,3]; + match.durationSeconds = "1"; + match.victory = true; + match.players = [{isVictory!: true, heroId!: 11, isRadiant!: true}] + match.firstBloodTime = "1"; + match.gameMode = "1"; + match.largestGoldLead = "1"; + match.largestGoldLeadTeam = "Dire"; + match.largestXpLead = "1"; + match.largestXpLeadTeam = "Radiant"; + match.startTime = "1"; + match.deaths = 11; + match.radiant_gold_adv = [0, -34, 405, 224]; + match.radiant_xp_adv = [0, 24, 212, 211]; + match.heroes = "Outworld Destroyer"; + match.radiant = true; + + let matchArray = [match]; + + let player = new SPlayer(); + player.name = "Ryon"; + player.id = 1; + player.realName = "Real Ryon"; + player.avatar = "link"; + player.profileUri = "uri"; + player.matchesList = [match]; + + let user = { + name: "Ryon", + email: "ryon137@gmail.com", + authId: 'aaa' + }; + + const stratzServiceSpy = jasmine.createSpyObj('StratzService',[ + 'getPlayer', 'getPlayerMatches', 'getHero']); + const getPlayerSpy = stratzServiceSpy.getPlayer.and.returnValue(of(player)); + const getPlayerMatchesSpy = stratzServiceSpy.getPlayerMatches.and.returnValue(of(matchArray)); + const getHeroSpy = stratzServiceSpy.getHero.and.returnValue(of(heroArray)); + + const savePlayerServiceSpy = jasmine.createSpyObj('SavePlayerService',[ + 'getAllSavedMatches', 'addMatch', 'getSavedPlayerById']); + const getAllSavedMatchesSpy = savePlayerServiceSpy.getAllSavedMatches.and.returnValue(of(match)); + const addMatchSpy = savePlayerServiceSpy.addMatch.and.returnValue(of(match)); + const getSavedPlayerByIdSpy = savePlayerServiceSpy.getSavedPlayerById.and.returnValue(of(player)); + + const opendotaServiceSpy = jasmine.createSpyObj('OpendotaService',['getMatch']); + const getMatchSpy = opendotaServiceSpy.getMatch.and.returnValue(of(match)); + + const auth0Spy = jasmine.createSpyObj('Auth0Service',['getUser']); + const getUserSpy = auth0Spy.getUser.and.returnValue(of(user)); + + const toastSpy = jasmine.createSpyObj('NgbToastService',['remove','show']); + const removeSpy = toastSpy.remove.and.returnValue(of(new NgbToast)); + const showSpy = toastSpy.show.and.returnValue(of(new NgbToast)); + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SplayerComponent ], + imports: [ AppModule ], + providers: [ + { provide: StratzService, useValue: stratzServiceSpy }, + { provide: SavePlayerService, useValue: savePlayerServiceSpy }, + { provide: OpendotaService, useValue: opendotaServiceSpy }, + { provide: NgbToastService, useValue: toastSpy }, + { provide: steamid, useValue: '66914827' } + ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SplayerComponent); + component = fixture.componentInstance; + component.steamid = steamid; + fixture.detectChanges(); + }); + + afterEach(() => { + fixture.destroy(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should display the player name when submit button is clicked and steamid is provided', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const headerTag = fixture.debugElement.nativeElement.querySelector('#playerName'); + expect(headerTag.textContent).toBe(player.name); + }); + + it('should display the player id when submit button is clicked and steamid is provided', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const headerTag = fixture.debugElement.nativeElement.querySelector('#playerId'); + expect(headerTag.textContent).toBe("Steam ID: " + player.id); + }); + + it('should display the player real name when submit button is clicked and steamid is provided', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const headerTag = fixture.debugElement.nativeElement.querySelector('#realName'); + expect(headerTag.textContent).toBe("Real Name: " + player.realName); + }); + + it('should display most recent match details when submit button is clicked and steamid is provided', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const headerTag = fixture.debugElement.nativeElement.querySelector('#recentDetails'); + expect(headerTag.textContent).toBe("Most recent match details:"); + }); + + + it('should display the match id when submit button is clicked and steamid is provided', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const headerTag = fixture.debugElement.nativeElement.querySelector('#matchId'); + expect(headerTag.textContent).toBe("The match id was " + match.id + "."); + }); + + it('should display the match duration when submit button is clicked and steamid is provided', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const headerTag = fixture.debugElement.nativeElement.querySelector('#matchDuration'); + expect(headerTag.textContent).toBe("It lasted " + (match.durationSeconds / 60).toFixed(2) + " minutes."); + }); + + it('should display the hero when submit button is clicked and steamid is provided', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const headerTag = fixture.debugElement.nativeElement.querySelector('#hero'); + expect(headerTag.textContent).toBe("You played " + hero2.displayName + " ."); + }); + + it('should display the radiant played when submit button is clicked and steamid is provided', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const headerTag = fixture.debugElement.nativeElement.querySelector('#radiant'); + expect(headerTag.textContent).toBe("You were Radiant ."); + }); + + it('should display the radiant played when submit button is clicked and steamid is provided', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + match.radiant = false; + fixture.detectChanges(); + + const headerTag = fixture.debugElement.nativeElement.querySelector('#dire'); + expect(headerTag.textContent).toBe("You were Dire ."); + }); + + it('should display the first blood time when submit button is clicked and steamid is provided', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const headerTag = fixture.debugElement.nativeElement.querySelector('#firstBloodTime'); + expect(headerTag.textContent).toBe("First blood was achieved at " + (match.firstBloodTime / 60).toFixed(2) + " minutes."); + }); + + it('should display victory when submit button is clicked and steamid is provided and victory is true', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const headerTag = fixture.debugElement.nativeElement.querySelector('#matchVictory'); + + expect(headerTag.textContent).toBe("You won. "); + + }); + + it('should display largest gold lead and corresponding team when submit button is clicked and steamid is provided', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const goldLead = fixture.debugElement.nativeElement.querySelector('#goldLead'); + + expect(goldLead.textContent).toBe(" " + match.largestGoldLeadTeam + " had the highest gold lead of " + match.largestGoldLead + " gold."); + + }); + + it('should display largest xp lead and corresponding team when submit button is clicked and steamid is provided', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + + const goldLead = fixture.debugElement.nativeElement.querySelector('#xpLead'); + + expect(goldLead.textContent).toBe(" " + match.largestXpLeadTeam + " had the highest experience lead of " + match.largestXpLead + " experience."); + + }); + + it('should display the start time when submit button is clicked and steamid is provided', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + const headerTag = fixture.debugElement.nativeElement.querySelector('#startTime'); + expect(headerTag.textContent).toBe("The match started on " + match.startTime + ". "); + + }); + + it('should display the deaths when submit button is clicked and steamid is provided', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + const headerTag = fixture.debugElement.nativeElement.querySelector('#deaths'); + expect(headerTag.textContent).toBe("You died " + match.deaths + " times."); + + }); + + it('should display the special message when submit button is clicked and steamid is provided and deaths are greater than 10', ()=>{ + const submitButton = fixture.debugElement.nativeElement.querySelector('#submitButton'); + + submitButton.dispatchEvent(new Event('click')); + fixture.detectChanges(); + const headerTag = fixture.debugElement.nativeElement.querySelector('#feed'); + expect(headerTag.textContent).toBe("You fed."); + }); + + it('should display logo when no id is provided', ()=>{ + + const headerTag = fixture.debugElement.nativeElement.querySelector('#protractor'); + expect(headerTag['src']).toContain('favicon.ico'); + + }); + + it('should display save button when logged in', ()=>{ + component.isPlayer = true; + component.data = 'a'; + fixture.detectChanges(); + + const saveMatch = fixture.debugElement.nativeElement.querySelector('#saveMatchButton'); + expect(saveMatch.textContent).toBe("Save Match"); + + }); + + it('if onSubmit is called and steamId does not fit the regex, showFailure should be called', ()=>{ + component.onSubmit(); + component.steamid = ' '; + component.showFailure(); + expect(showSpy).toHaveBeenCalled(); + }); + + it('if steamId is the larger format, number should be converted and showConversion should be called', ()=>{ + component.steamid = '76561198066745404'; + component.largeId = 99999999999n; + component.conversionNum = 76561197960265728n; + component.onSubmit(); + expect(showSpy).toHaveBeenCalled(); + }); + + it('if onSubmit2 is called, expect getSavedPlayerById to be called', ()=>{ + component.onSubmit2(); + expect(getSavedPlayerByIdSpy).toHaveBeenCalled(); + }); + + it('if onSubmit2 is called, expect addMatch to be called', ()=>{ + component.onSubmit2(); + expect(addMatchSpy).toHaveBeenCalled(); + }); +}); diff --git a/src/app/components/splayer/splayer.component.test2.spec.ts b/src/app/components/splayer/splayer.component.test2.spec.ts new file mode 100644 index 0000000..08443c5 --- /dev/null +++ b/src/app/components/splayer/splayer.component.test2.spec.ts @@ -0,0 +1,99 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { NgbToast, NgbToastService } from 'ngb-toast'; +import { of } from 'rxjs'; +import { AppModule } from 'src/app/app.module'; +import { Hero } from 'src/app/models/hero/hero.model'; +import { Match } from 'src/app/models/match/match.model'; +import { SPlayer } from 'src/app/models/s-player/splayer.model'; +import { OpendotaService } from 'src/app/services/opendota.service'; +import { SavePlayerService } from 'src/app/services/save-player.service'; +import { StratzService } from 'src/app/services/stratz.service'; + +import { SplayerComponent } from './splayer.component'; + +describe('SplayerComponent', () => { + let component: SplayerComponent; + let fixture: ComponentFixture; + + let steamid = '66914827'; + + let hero = new Hero(); + hero.displayName = "Outworld Destroyer"; + hero.id = 76; + let hero2 = new Hero(); + hero2.id = 11; + hero2.displayName = "Mars"; + + let heroArray = [hero, hero2]; + + let match = new Match(); + match.id = 1; + match.authId = [1,2,3]; + match.durationSeconds = "1"; + match.victory = true; + match.players = [{isVictory!: true, heroId!: 11}] + match.firstBloodTime = "1"; + match.gameMode = "1"; + match.largestGoldLead = "1"; + match.largestGoldLeadTeam = "Dire"; + match.largestXpLead = "1"; + match.largestXpLeadTeam = "Radiant"; + match.startTime = "1"; + match.deaths = 11; + match.radiant_gold_adv = [0, -34, 405, 224]; + match.radiant_xp_adv = [0, 24, 212, 211]; + match.heroes = "Outworld Destroyer"; + + let matchArray = [match]; + + let player = null; + + let user = { + name: "Ryon", + email: "ryon137@gmail.com", + authId: 'aaa' + }; + + const stratzServiceSpy = jasmine.createSpyObj('StratzService',[ + 'getPlayer', 'getPlayerMatches', 'getHero']); + const getPlayerSpy = stratzServiceSpy.getPlayer.and.returnValue(of(player)); + const getPlayerMatchesSpy = stratzServiceSpy.getPlayerMatches.and.returnValue(of(matchArray)); + const getHeroSpy = stratzServiceSpy.getHero.and.returnValue(of(heroArray)); + + const auth0Spy = jasmine.createSpyObj('Auth0Service',['getUser']); + const getUserSpy = auth0Spy.getUser.and.returnValue(of(user)); + + const toastSpy = jasmine.createSpyObj('NgbToastService',['remove','show']); + const removeSpy = toastSpy.remove.and.returnValue(of(new NgbToast)); + const showSpy = toastSpy.show.and.returnValue(of(new NgbToast)); + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SplayerComponent ], + imports: [ AppModule ], + providers: [ + { provide: StratzService, useValue: stratzServiceSpy }, + { provide: NgbToastService, useValue: toastSpy }, + { provide: steamid, useValue: '66914827' } + ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SplayerComponent); + component = fixture.componentInstance; + component.steamid = steamid; + fixture.detectChanges(); + }); + + afterEach(() => { + fixture.destroy(); + }); + + it('if getPlayer returns null, then player does not exist', ()=>{ + component.onSubmit(); + expect(component.isPlayer).toBeFalse(); + }); + +}); diff --git a/src/app/components/splayer/splayer.component.ts b/src/app/components/splayer/splayer.component.ts new file mode 100644 index 0000000..f310ad4 --- /dev/null +++ b/src/app/components/splayer/splayer.component.ts @@ -0,0 +1,337 @@ +import { DOCUMENT } from '@angular/common'; +import { Component, Inject, OnInit } from '@angular/core'; +import { AuthService } from '@auth0/auth0-angular'; +import { Match } from 'src/app/models/match/match.model'; +import { SPlayer } from 'src/app/models/s-player/splayer.model'; +import { OpendotaService } from 'src/app/services/opendota.service'; +import { SavePlayerService } from 'src/app/services/save-player.service'; +import { StratzService } from 'src/app/services/stratz.service'; +import { NgbToast, NgbToastService, NgbToastType } from 'ngb-toast'; +import { Hero } from 'src/app/models/hero/hero.model'; +import { Auth0Service } from 'src/app/services/auth0.service'; +@Component({ + selector: 'app-splayer', + templateUrl: './splayer.component.html', + styleUrls: ['./splayer.component.scss'] +}) +//***********************************************************************************/ +// This class retrieves data from various API's based on given steam ID, and displays. +// It also saves the given match and player. If a player already exists, it adds the +// match data to that player +//***********************************************************************************/ +export class SplayerComponent implements OnInit { + splayer = new SPlayer; + match = new Match; + match2 = new Match; + steamid = ''; + isPlayer = false; //flag for displaying logo + regex = /[0-9]{8}$/; + largeId = 99999999999n; + conversionNum = 76561197960265728n; + hero = new Hero; + data!: any; + + constructor(private savePlayerService: SavePlayerService, private stratzService: StratzService, private opendotaService: OpendotaService, @Inject(DOCUMENT) public document: Document, public auth: Auth0Service, private toastService: NgbToastService) { + } + + onSubmit() { + //**********************************************************/ + // Form validation + //**********************************************************/ + if (!this.regex.test(this.steamid)) { + this.showFailure(); + return; + } + //**********************************************************/ + // Convert steamId to proper format + //**********************************************************/ + if (BigInt(this.steamid) > this.largeId) { + this.steamid = (BigInt(this.steamid) - this.conversionNum).toString(); + this.steamid.slice(0, 7); + this.showConversion(); + } + this.isPlayer = true; + //**********************************************************/ + // Gets player details and stores them in SPlayer model + //**********************************************************/ + this.stratzService.getPlayer(this.steamid).subscribe((Player: any) => { + //if player is null, do not show details, and show error toast + if (Player == null) { + this.isPlayer = false; + this.showInvalidIdFailure(); + return; + } + this.splayer = Player; + this.splayer.name = Player.steamAccount.name; + this.splayer.id = Player.steamAccount.id; + this.splayer.realName = Player.steamAccount.realName; + this.splayer.avatar = Player.steamAccount.avatar; + this.splayer.profileUri = Player.steamAccount.profileUri; + }), + //**********************************************************/ + // Gets 10 most recent matches and stores them all in Matches Model + //**********************************************************/ + this.stratzService.getPlayerMatches(this.steamid).subscribe((match: any) => { + //add match information to match object + for (let i = 0; i <= 10; ++i) { + if (match[i]?.id !== undefined) { + this.match = match[i]; + + //**********************************************************/ + //Start time + //**********************************************************/ + + let a = new Date(match[i]?.startDateTime * 1000); + let months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; + let year = a.getFullYear(); + let month = months[a.getMonth()]; + let date = a.getDate(); + let hour = a.getHours(); + let minutes = a.getMinutes(); + let seconds = a.getSeconds(); + let formattedTime = month + ' ' + date + ', ' + year + ' at ' + hour + ':' + minutes + ':' + seconds; + this.match.startTime = formattedTime; + + //**********************************************************/ + //Hero ID, Victory, and isRadiant + //**********************************************************/ + this.match.heroes = this.match.players[0].heroId; + this.match.victory = this.match.players[0].isVictory; + this.match.radiant = this.match.players[0].isRadiant; + + //**********************************************************/ + // Searches the API for the given hero ID and then stores the hero data + //**********************************************************/ + this.stratzService.getHero().subscribe((heroes: any) => { + for (let i = 1; i <= Object.keys(heroes).length; ++i) { + if (heroes[i]?.id !== undefined) { + if (heroes[i]?.id == this.match.heroes) { + this.hero.id = heroes[i].id; + this.hero.displayName = heroes[i].displayName; + this.match.heroes = this.hero.displayName; + } + } + } + }); + + //**********************************************************/ + // Gets more match data on given match id from OpenDota API + //**********************************************************/ + this.opendotaService.getMatch(this.match.id).subscribe((match: any) => { + //**********************************************************/ + //Gold lead + //**********************************************************/ + let radiantGoldLead = 0; + let direGoldLead = 0; + + for (let j = 0; j < match?.radiant_gold_adv?.length; ++j) { + if (match.radiant_gold_adv[j] >= 0 && match.radiant_gold_adv[j] > radiantGoldLead) { + radiantGoldLead = match.radiant_gold_adv[j]; + } + else { + if (match.radiant_gold_adv[j] < direGoldLead) { + direGoldLead = match.radiant_gold_adv[j]; + } + } + } + + if (Math.abs(radiantGoldLead) > Math.abs(direGoldLead)) { + this.match.largestGoldLead = Math.abs(radiantGoldLead); + this.match.largestGoldLeadTeam = "Radiant"; + } + else { + this.match.largestGoldLead = Math.abs(direGoldLead); + this.match.largestGoldLeadTeam = "Dire"; + } + + //**********************************************************/ + //XP lead + //**********************************************************/ + let radiantXpLead = 0; + let direXpLead = 0; + + for (let j = 0; j < match?.radiant_xp_adv?.length; ++j) { + if (match.radiant_xp_adv[j] > 0) { + if (match.radiant_xp_adv[j] > radiantXpLead) { + radiantXpLead = match.radiant_xp_adv[j]; + } + } + else { + if (match.radiant_xp_adv[j] < direXpLead) { + direXpLead = match.radiant_xp_adv[j]; + } + } + } + + if (Math.abs(radiantXpLead) > Math.abs(direXpLead)) { + this.match.largestXpLead = Math.abs(radiantXpLead); + this.match.largestXpLeadTeam = "Radiant"; + } + else { + this.match.largestXpLead = Math.abs(direXpLead); + this.match.largestXpLeadTeam = "Dire"; + } + //**********************************************************/ + //Deaths + //**********************************************************/ + for (let j = 0; j < match.players.length; ++j) { + if(match.players[j].account_id && match.players[j].account_id == this.steamid) { + this.match.deaths = match.players[j].deaths; + } + } + }); + break; + //heroes, kills, deaths, assists, last hits, denies, GPM, EXPM, level, gold, goldspent, hero damage, tower damage, lane, role, items, backpack, hero healing, networth, neutral item + + } + } + + //initilize values if they dont exist so posting works + if (this.match.id == undefined) { + this.match.id = 0; + } + if (this.match.durationSeconds == undefined) { + this.match.durationSeconds = "0"; + } + if (this.match.victory == undefined) { + this.match.victory = false; + } + if (this.match.firstBloodTime == undefined) { + this.match.firstBloodTime = "0"; + } + if (this.match.gameMode == undefined) { + this.match.gameMode = "0"; + } + if (this.match.heroes == undefined) { + this.match.heroes = "0"; + } + if (this.match.largestGoldLead == undefined) { + this.match.largestGoldLead = "0"; + } + if (this.match.largestGoldLeadTeam == undefined) { + this.match.largestGoldLeadTeam = "0"; + } + if (this.match.largestXpLead == undefined) { + this.match.largestXpLead = "0"; + } + if (this.match.largestXpLeadTeam == undefined) { + this.match.largestXpLeadTeam = "0"; + } + if (this.match.startTime == undefined) { + this.match.startTime = "0"; + } + if (this.match.deaths == undefined || this.match.deaths == null) { + this.match.deaths = 0; + } + + //**********************************************************/ + // Store authentication ID in model for future reference + //**********************************************************/ + this.auth.getUser().subscribe((data: any) => { + //to check if user exists + this.data = data; + if (this.match.authId == null) { + this.match.authId = []; + } + if (data) { + this.match.authId.push(data.sub.substring(14, 20)); + } + }) + }); + + + } + //**********************************************************/ + // Saves match and player to database + //**********************************************************/ + onSubmit2() { + let matchFound = false; + + this.savePlayerService.getSavedPlayerById(this.steamid).subscribe((player: any) => { + this.splayer.matchesList = player?.matchesList; + //intilize match list if not already created + if (this.splayer.matchesList == null) { + this.splayer.matchesList = []; + } + //if the id is in the match array, set match found to true + //CURRENT BUG: If the match id is the same, a different players match + // will overwrite current match + // + //SOLUTION: make it so that if the match id already exists, + // create a new instance + // + for (let i = 0; i < Object.keys(this.splayer.matchesList).length; ++i) { + if (this.splayer.matchesList[i].id == this.match.id) { + matchFound = true; + } + } + //add match to match array if match was not found in match array + if (matchFound == false) { + this.splayer.matchesList.push(this.match); + } + this.savePlayerService.addMatch(this.match, this.splayer); + }); + } + //**********************************************************/ + // Toast for id being too small + //**********************************************************/ + showFailure(): void { + const toast: NgbToast = { + toastType: NgbToastType.Danger, + text: "ID must be at least 8 digits", + dismissible: true, + timeInSeconds: 5, + onDismiss: () => { + console.log("Toast dismissed!!"); + } + } + this.toastService.show(toast); + } + //**********************************************************/ + // Toast for player not existing + //**********************************************************/ + showInvalidIdFailure(): void { + const toast: NgbToast = { + toastType: NgbToastType.Danger, + text: "Either user does not exist, or their profile is hidden", + dismissible: true, + timeInSeconds: 5, + onDismiss: () => { + console.log("Toast dismissed!!"); + } + } + this.toastService.show(toast); + } + //**********************************************************/ + // Toast for id conversion + //**********************************************************/ + showConversion(): void { + const toast: NgbToast = { + toastType: NgbToastType.Info, + text: "ID converted to correct format", + dismissible: true, + timeInSeconds: 5, + onDismiss: () => { + console.log("Toast dismissed!!"); + } + } + this.toastService.show(toast); + } + //**********************************************************/ + // Remove toast + //**********************************************************/ + removeToast(toast: NgbToast): void { + this.toastService.remove(toast); + } + + ngOnInit(): void { + + } +} +// +// TEST ID's +// 83177429 +// 64819449 +// 132407154 +// 76561198066745404 +// \ No newline at end of file diff --git a/src/app/components/user-profile/user-profile.component.html b/src/app/components/user-profile/user-profile.component.html new file mode 100644 index 0000000..3de98fa --- /dev/null +++ b/src/app/components/user-profile/user-profile.component.html @@ -0,0 +1,78 @@ +
    +
    +
    +

    Enter your Steam ID

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

    Account Information

    +
    + +
    +
    +

    User Name: {{ data.name }}

    +

    User Email: {{ data.email }}

    +

    Steam ID: {{playerId}}

    +
    +
    + +

    +

    {{player.name}}'s Saved Matches

    +
    +
    +

    Match {{match.id}}

    +
    + +
    + +
    +

    The match + started + on + {{match.startTime}}.

    +

    It lasted + {{ (match.durationSeconds / 60).toFixed(2) }} minutes.

    +

    You played {{ match.heroes }} .

    +

    You were Radiant .

    +

    + +

    You were Dire .

    + +

    +

    First blood was achieved at {{ (match.firstBloodTime / 60).toFixed(2) }} + minutes.

    +

    You won.

    +

    + +

    You lost.

    + +

    +

    + {{match.largestGoldLeadTeam}} had the highest gold + lead of + {{match.largestGoldLead}} gold.

    +

    + {{match.largestXpLeadTeam}} had the highest + experience + lead + of {{match.largestXpLead}} experience.

    +

    You died {{match.deaths}} times.

    +

    You fed.

    +
    +
    +
    +
    +
    +
\ No newline at end of file diff --git a/src/app/components/user-profile/user-profile.component.nullAuth.spec.ts b/src/app/components/user-profile/user-profile.component.nullAuth.spec.ts new file mode 100644 index 0000000..6834b6c --- /dev/null +++ b/src/app/components/user-profile/user-profile.component.nullAuth.spec.ts @@ -0,0 +1,95 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { NgbToast, NgbToastService, NgbToastType } from 'ngb-toast'; +import { Observable, of } from 'rxjs'; +import { AppModule } from 'src/app/app.module'; +import { Auth } from 'src/app/models/auth/auth.model'; +import { Match } from 'src/app/models/match/match.model'; +import { SPlayer } from 'src/app/models/s-player/splayer.model'; +import { Auth0Service } from 'src/app/services/auth0.service'; +import { SavePlayerService } from 'src/app/services/save-player.service'; + +import { UserProfileComponent } from './user-profile.component'; + +describe('UserProfileComponent', () => { + let component: UserProfileComponent; + let fixture: ComponentFixture; + + let steamId = '66914827'; + + let player = new SPlayer(); + let auth = null; + + let match = new Match(); + match.id = 1; + match.authId = [1,2,3]; + match.durationSeconds = "1"; + match.victory = true; + match.players = [{isVictory!: true, heroId!: 11}] + match.firstBloodTime = "1"; + match.gameMode = "1"; + match.largestGoldLead = "1"; + match.largestGoldLeadTeam = "Dire"; + match.largestXpLead = "1"; + match.largestXpLeadTeam = "Radiant"; + match.startTime = "1"; + match.deaths = 11; + match.radiant_gold_adv = [0, -34, 405, 224]; + match.radiant_xp_adv = [0, 24, 212, 211]; + match.heroes = "Outworld Destroyer"; + + player.name = "Ryon"; + player.id = 1; + player.realName = "Real Ryon"; + player.avatar = "link"; + player.profileUri = "uri"; + player.matchesList = [match]; + + let user = { + name: "Ryon", + email: "ryon137@gmail.com", + sub: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + }; + + + + const savePlayerServiceSpy = jasmine.createSpyObj('SavePlayerService',[ + 'getSavedPlayerById', 'getAuth', 'addAuth' + ]); + const getSavedPlayerByIdSpy = savePlayerServiceSpy.getSavedPlayerById.and.returnValue(of(player)); + const getAuthSpy = savePlayerServiceSpy.getAuth.and.returnValue(of(auth)); + const addAuthSpy = savePlayerServiceSpy.addAuth.and.returnValue(of(auth)); + + const auth0Spy = jasmine.createSpyObj('Auth0Service',['getUser']); + const getUserSpy = auth0Spy.getUser.and.returnValue(of(user)); + + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ UserProfileComponent ], + providers: [ + { provide: SavePlayerService, useValue: savePlayerServiceSpy }, + { provide: Auth0Service, useValue: auth0Spy } + ], + imports: [ AppModule ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(UserProfileComponent); + component = fixture.componentInstance; + component.steamId = steamId; + component.windowReload = function() {}; + fixture.detectChanges(); + }); + + afterEach(() => { + fixture.destroy(); + }); + + it('if getAuth returns null, then player does not exist', ()=>{ + expect(component.playerExists).toBeFalse(); + }); + +}); + diff --git a/src/app/components/user-profile/user-profile.component.scss b/src/app/components/user-profile/user-profile.component.scss new file mode 100644 index 0000000..999f43d --- /dev/null +++ b/src/app/components/user-profile/user-profile.component.scss @@ -0,0 +1,3 @@ +.matches:hover{ + cursor: pointer; +} \ No newline at end of file diff --git a/src/app/components/user-profile/user-profile.component.spec.ts b/src/app/components/user-profile/user-profile.component.spec.ts new file mode 100644 index 0000000..6f30fbc --- /dev/null +++ b/src/app/components/user-profile/user-profile.component.spec.ts @@ -0,0 +1,303 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { NgbToast, NgbToastService, NgbToastType } from 'ngb-toast'; +import { Observable, of } from 'rxjs'; +import { AppModule } from 'src/app/app.module'; +import { Auth } from 'src/app/models/auth/auth.model'; +import { Match } from 'src/app/models/match/match.model'; +import { SPlayer } from 'src/app/models/s-player/splayer.model'; +import { Auth0Service } from 'src/app/services/auth0.service'; +import { SavePlayerService } from 'src/app/services/save-player.service'; + +import { UserProfileComponent } from './user-profile.component'; + +describe('UserProfileComponent', () => { + let component: UserProfileComponent; + let fixture: ComponentFixture; + + let steamId = '66914827'; + + let player = new SPlayer(); + let auth = new Auth(); + auth.steamId = '1'; + + let match = new Match(); + match.id = 1; + match.authId = [1,2,3]; + match.durationSeconds = "1"; + match.victory = true; + match.players = [{isVictory!: true, heroId!: 11}] + match.firstBloodTime = "1"; + match.gameMode = "1"; + match.largestGoldLead = "1"; + match.largestGoldLeadTeam = "Dire"; + match.largestXpLead = "1"; + match.largestXpLeadTeam = "Radiant"; + match.startTime = "1"; + match.deaths = 11; + match.radiant_gold_adv = [0, -34, 405, 224]; + match.radiant_xp_adv = [0, 24, 212, 211]; + match.heroes = "Outworld Destroyer"; + match.radiant = true; + + player.name = "Ryon"; + player.id = 1; + player.realName = "Real Ryon"; + player.avatar = "link"; + player.profileUri = "uri"; + player.matchesList = [match]; + + let user = { + name: "Ryon", + email: "ryon137@gmail.com", + sub: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' + }; + + const savePlayerServiceSpy = jasmine.createSpyObj('SavePlayerService',[ + 'getSavedPlayerById', 'getAuth', 'addAuth' + ]); + const getSavedPlayerByIdSpy = savePlayerServiceSpy.getSavedPlayerById.and.returnValue(of(player)); + const getAuthSpy = savePlayerServiceSpy.getAuth.and.returnValue(of(auth)); + const addAuthSpy = savePlayerServiceSpy.addAuth.and.returnValue(of(auth)); + + + const auth0Spy = jasmine.createSpyObj('Auth0Service',['getUser']); + const getUserSpy = auth0Spy.getUser.and.returnValue(of(user)); + + const toastSpy = jasmine.createSpyObj('NgbToastService',['remove','show']); + const removeSpy = toastSpy.remove.and.returnValue(of(new NgbToast)); + const showSpy = toastSpy.show.and.returnValue(of(new NgbToast)); + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ UserProfileComponent ], + providers: [ + { provide: SavePlayerService, useValue: savePlayerServiceSpy }, + { provide: Auth0Service, useValue: auth0Spy }, + { provide: NgbToastService, useValue: toastSpy } + ], + imports: [ AppModule ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(UserProfileComponent); + component = fixture.componentInstance; + component.steamId = steamId; + component.windowReload = function() {}; + fixture.detectChanges(); + }); + + afterEach(() => { + fixture.destroy(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should display Enter your Steam ID if player does not exist', ()=>{ + component.playerExists = false; + fixture.detectChanges(); + + const headerTag = fixture.debugElement.nativeElement.querySelector('#userDetails'); + expect(headerTag.textContent).toBe("Enter your Steam ID"); + }); + + it('should display submit button if player does not exist', ()=>{ + component.playerExists = false; + fixture.detectChanges(); + + const headerTag = fixture.debugElement.nativeElement.querySelector('#submitButton'); + expect(headerTag.textContent).toBe("Submit"); + }); + + it('should display Account Information', ()=>{ + const headerTag = fixture.debugElement.nativeElement.querySelector('#userDetails'); + expect(headerTag.textContent).toBe("Account Information"); + }); + + it('should display User name', ()=>{ + const headerTag = fixture.debugElement.nativeElement.querySelector('#userName'); + expect(headerTag.textContent).toBe("User Name: " + user.name); + }); + + it('should display User email', ()=>{ + const headerTag = fixture.debugElement.nativeElement.querySelector('#userEmail'); + expect(headerTag.textContent).toBe("User Email: " + user.email); + }); + + it('should display User steam id', ()=>{ + component.playerId = '1'; + const headerTag = fixture.debugElement.nativeElement.querySelector('#playerId'); + expect(headerTag.textContent).toBe("Steam ID: " + component.playerId); + }); + + it('should display player avatar if player exists', ()=>{ + component.playerExists = true; + fixture.detectChanges(); + + const image = fixture.debugElement.nativeElement.querySelector('#image'); + expect(image['src']).toContain('https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/link'); + }); + + it('should display player name if player exists', ()=>{ + component.playerExists = true; + fixture.detectChanges(); + + const htag = fixture.debugElement.nativeElement.querySelector('#playerName'); + expect(htag.textContent).toBe(player.name + "'s Saved Matches"); + }); + + it('should display match id if player exists', ()=>{ + component.playerExists = true; + fixture.detectChanges(); + + const ptag = fixture.debugElement.nativeElement.querySelector('#matchId'); + expect(ptag.textContent).toBe("Match " + match.id); + }); + + it('should display start time if player exists', ()=>{ + component.playerExists = true; + component.isPlayer = true; + fixture.detectChanges(); + + const ptag = fixture.debugElement.nativeElement.querySelector('#startTime'); + expect(ptag.textContent).toBe("The match started on " + match.startTime + "."); + }); + + it('should display match duration if player exists', ()=>{ + component.playerExists = true; + component.isPlayer = true; + fixture.detectChanges(); + + const ptag = fixture.debugElement.nativeElement.querySelector('#matchDuration'); + expect(ptag.textContent).toBe("It lasted " + (match.durationSeconds / 60).toFixed(2) + " minutes."); + }); + + it('should display hero if player exists', ()=>{ + component.playerExists = true; + component.isPlayer = true; + fixture.detectChanges(); + + const ptag = fixture.debugElement.nativeElement.querySelector('#hero'); + expect(ptag.textContent).toBe("You played " + match.heroes + " ."); + }); + + it('should display all match team side if radiant', ()=>{ + component.playerExists = true; + component.isPlayer = true; + fixture.detectChanges(); + + const pTag = fixture.debugElement.nativeElement.querySelector('#radiant'); + expect(pTag.textContent).toBe("You were Radiant ."); + }); + + it('should display all match team side if dire', ()=>{ + component.playerExists = true; + component.isPlayer = true; + match.radiant = false; + fixture.detectChanges(); + + const pTag = fixture.debugElement.nativeElement.querySelector('#dire'); + expect(pTag.textContent).toBe("You were Dire ."); + }); + + it('should display first blood time if player exists', ()=>{ + component.playerExists = true; + component.isPlayer = true; + fixture.detectChanges(); + + const ptag = fixture.debugElement.nativeElement.querySelector('#firstBloodTime'); + expect(ptag.textContent).toBe("First blood was achieved at " + (match.firstBloodTime / 60).toFixed(2) + " minutes."); + }); + + it('should display victory if player exists and player won', ()=>{ + component.playerExists = true; + component.isPlayer = true; + fixture.detectChanges(); + + const ptag = fixture.debugElement.nativeElement.querySelector('#matchVictory'); + expect(ptag.textContent).toBe("You won."); + }); + + it('should display gold lead if player exists', ()=>{ + component.playerExists = true; + component.isPlayer = true; + fixture.detectChanges(); + + const ptag = fixture.debugElement.nativeElement.querySelector('#goldLead'); + expect(ptag.textContent).toBe(" " + match.largestGoldLeadTeam + " had the highest gold lead of " + match.largestGoldLead + " gold."); + }); + + it('should display xp lead if player exists', ()=>{ + component.playerExists = true; + component.isPlayer = true; + fixture.detectChanges(); + + const ptag = fixture.debugElement.nativeElement.querySelector('#xpLead'); + expect(ptag.textContent).toBe(" " + match.largestXpLeadTeam + " had the highest experience lead of " + match.largestXpLead + " experience."); + }); + + it('should display deaths if player exists', ()=>{ + component.playerExists = true; + component.isPlayer = true; + fixture.detectChanges(); + + const ptag = fixture.debugElement.nativeElement.querySelector('#deaths'); + expect(ptag.textContent).toBe("You died " + match.deaths + " times."); + }); + + it('should display special message if player exists and player dies more than 10 times', ()=>{ + component.playerExists = true; + component.isPlayer = true; + fixture.detectChanges(); + + const ptag = fixture.debugElement.nativeElement.querySelector('#feed'); + expect(ptag.textContent).toBe("You fed."); + }); + + it('removeToast should remove toast', ()=>{ + component.removeToast(new NgbToast); + expect(removeSpy).toHaveBeenCalled(); + }); + + it('if getUser returns data.sub, then authId should be populated', ()=>{ + expect(component.authId).toBe('aaaaaa'); + }); + + it('if getAuth is called, expect playerId to be truthy', ()=>{ + expect(component.playerId).toBeTruthy(); + }); + + it('if onClick is called, then isPlayer should be true', ()=>{ + component.onClick(); + expect(component.isPlayer).toBeTrue(); + }); + + it('if getSavedPlayerService is called, then player and matcheslist should exist', ()=>{ + expect(component.player).toBe(player); + expect(component.player.matchesList).toBe(player.matchesList); + }); + + it('if onSubmit is called and regex does not match, showFailure should be called', ()=>{ + component.onSubmit(); + component.steamId = " "; + component.showFailure(); + expect(showSpy).toHaveBeenCalled(); + }); + + it('if steamId is the larger format, number should be converted and showConversion should be called', ()=>{ + component.steamId = '76561198066745404'; + component.largeId = 99999999999n; + component.conversionNum = 76561197960265728n; + component.onSubmit(); + expect(showSpy).toHaveBeenCalled(); + }); + + it('if onSubmit is called, addAuth should be called', ()=>{ + component.onSubmit(); + expect(addAuthSpy).toHaveBeenCalled(); + }); +}); + diff --git a/src/app/components/user-profile/user-profile.component.ts b/src/app/components/user-profile/user-profile.component.ts new file mode 100644 index 0000000..baad768 --- /dev/null +++ b/src/app/components/user-profile/user-profile.component.ts @@ -0,0 +1,138 @@ +import { Component, Input, OnInit } from '@angular/core'; +import { AuthService } from '@auth0/auth0-angular'; +import { NgbToast, NgbToastService, NgbToastType } from 'ngb-toast'; +import { Auth } from 'src/app/models/auth/auth.model'; +import { SPlayer } from 'src/app/models/s-player/splayer.model'; +import { Auth0Service } from 'src/app/services/auth0.service'; +import { SavePlayerService } from 'src/app/services/save-player.service'; + +@Component({ + selector: 'app-user-profile', + templateUrl: './user-profile.component.html', + styleUrls: ['./user-profile.component.scss'] +}) +export class UserProfileComponent implements OnInit { + playerExists = true; + auth = new Auth(); + playerId = ''; + isPlayer = false; + player!: SPlayer; + authId!: any; + steamId = ''; + regex = /[0-9]{8}$/; + largeId = 99999999999n; + conversionNum = 76561197960265728n; + data!: any; + + constructor(private savePlayerService: SavePlayerService, public authentication: Auth0Service, private toastService: NgbToastService) { + } + ngOnInit(): void { + //**********************************************************/ + // Fetch this user's ID and store it locally + //**********************************************************/ + this.authentication.getUser().subscribe((data: any) => { + if(data){ + this.data = data; + } + if(this.data.sub) { + this.authId = this.data.sub.substring(14, 20); + } + //**********************************************************/ + // If user has not yet saved their ID, set flag to false + //**********************************************************/ + this.savePlayerService.getAuth(this.authId).subscribe((object: any) => { + if (object == null) { + this.playerExists = false; + } + else { + this.playerId = object.steamId; + /**********************************************************/ + // Loop through matches, and display all of associated + // player's match data + //**********************************************************/ + this.savePlayerService.getSavedPlayerById(this.playerId).subscribe((player: SPlayer) => { + this.player = player; + this.player.matchesList.reverse(); + }); + } + }); + }); + } + onClick() { + this.isPlayer = true; + } + + onClick2(){ + this.playerExists = false; + } + + onSubmit() { + //**********************************************************/ + // Form validation + //**********************************************************/ + if (!this.regex.test(this.steamId)) { + this.showFailure(); + return; + } + //**********************************************************/ + // Convert steamId to proper format + //**********************************************************/ + if (BigInt(this.steamId) > this.largeId) { + this.steamId = (BigInt(this.steamId) - this.conversionNum).toString(); + this.steamId.slice(0, 7); + this.showConversion(); + } + //**********************************************************/ + // Set appropriate values, post them to database, + // then reload page + //**********************************************************/ + this.auth.steamId = this.steamId; + this.auth.id = this.authId; + this.savePlayerService.addAuth(this.auth); + this.windowReload(); + } + + //**********************************************************/ + // Toast for id conversion + //**********************************************************/ + showConversion(): void { + const toast: NgbToast = { + toastType: NgbToastType.Info, + text: "ID converted to correct format", + dismissible: true, + timeInSeconds: 5, + onDismiss: () => { + console.log("Toast dismissed!!"); + } + } + this.toastService.show(toast); + } + //**********************************************************/ + // Toast for id being too small + //**********************************************************/ + showFailure(): void { + const toast: NgbToast = { + toastType: NgbToastType.Danger, + text: "ID must be at least 8 digits", + dismissible: true, + timeInSeconds: 5, + onDismiss: () => { + console.log("Toast dismissed!!"); + } + } + this.toastService.show(toast); + } + //**********************************************************/ + // Remove toast + //**********************************************************/ + removeToast(toast: NgbToast): void { + this.toastService.remove(toast); + } + //**********************************************************/ + // Reload page + //**********************************************************/ + windowReload(){ + location.reload(); + } +} + diff --git a/src/app/models/auth/auth.model.ts b/src/app/models/auth/auth.model.ts new file mode 100644 index 0000000..167da26 --- /dev/null +++ b/src/app/models/auth/auth.model.ts @@ -0,0 +1,4 @@ +export class Auth { + id!: any; + steamId!: any; + } diff --git a/src/app/models/hero/hero.model.ts b/src/app/models/hero/hero.model.ts new file mode 100644 index 0000000..c43b9ea --- /dev/null +++ b/src/app/models/hero/hero.model.ts @@ -0,0 +1,4 @@ +export class Hero { + id!: any; + displayName!: any; + } diff --git a/src/app/models/match/match.model.ts b/src/app/models/match/match.model.ts new file mode 100644 index 0000000..7aa19f3 --- /dev/null +++ b/src/app/models/match/match.model.ts @@ -0,0 +1,23 @@ +export class Match { + id!: any; + authId!: any[]; + durationSeconds!: any; + victory!: any; + firstBloodTime!: any; + gameMode!: any; + heroes!: any; + largestGoldLead!: any; + largestGoldLeadTeam!: any; + largestXpLead!: any; + largestXpLeadTeam!: any; + startTime!: any; + deaths!: any; + radiant_gold_adv!: any; + radiant_xp_adv!: any; + first_blood_time!: any; + start_time!: any; + duration!: any; + players!: any; + radiant_win!: any; + radiant: any; + } diff --git a/src/app/models/s-player/splayer.model.ts b/src/app/models/s-player/splayer.model.ts new file mode 100644 index 0000000..c448452 --- /dev/null +++ b/src/app/models/s-player/splayer.model.ts @@ -0,0 +1,10 @@ +import { Match } from "../match/match.model"; + +export class SPlayer { + name!: any; + id!: any; + realName!: any; + avatar!: any; + profileUri!: any; + matchesList!: Match[]; +} diff --git a/src/app/services/auth0.service.spec.ts b/src/app/services/auth0.service.spec.ts new file mode 100644 index 0000000..3bb03ff --- /dev/null +++ b/src/app/services/auth0.service.spec.ts @@ -0,0 +1,35 @@ +import { ComponentFixture, ComponentFixtureAutoDetect, fakeAsync, TestBed, tick } from '@angular/core/testing'; +import { AuthService } from '@auth0/auth0-angular'; +import { of, throwError } from 'rxjs'; + +import { Auth0Service } from './auth0.service'; + +describe('Auth0Service', () => { + let service: Auth0Service; + + let user = { + name: "Ryon", + email: "ryon137@gmail.com" + }; + + const authServiceSpy = jasmine.createSpyObj('Auth0Service', ['getUser']); + const userSpy = authServiceSpy.getUser.and.returnValue(of(user)); + + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [ + { provide: Auth0Service, useValue: authServiceSpy } + ] + }); + service = TestBed.inject(Auth0Service); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('should return an observable containing user authentication',()=>{ + service.getUser().subscribe(); + expect(userSpy.calls.any()).toBe(true); + }); +}); diff --git a/src/app/services/auth0.service.ts b/src/app/services/auth0.service.ts new file mode 100644 index 0000000..cc6224e --- /dev/null +++ b/src/app/services/auth0.service.ts @@ -0,0 +1,15 @@ +import { Injectable } from '@angular/core'; +import { AuthService } from '@auth0/auth0-angular'; +import { Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class Auth0Service { + + constructor(public authentication: AuthService) {} + + getUser(): Observable{ + return this.authentication.user$; + } +} diff --git a/src/app/services/opendota.service.spec.ts b/src/app/services/opendota.service.spec.ts new file mode 100644 index 0000000..7096c08 --- /dev/null +++ b/src/app/services/opendota.service.spec.ts @@ -0,0 +1,48 @@ +import { TestBed } from '@angular/core/testing'; +import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; + +import { OpendotaService } from './opendota.service'; +import { SPlayer } from '../models/s-player/splayer.model'; +import { Match } from '../models/match/match.model'; + +describe('OpendotaService', () => { + let httpTestingController: HttpTestingController; + let service: OpendotaService; + let baseUrl = 'https://api.opendota.com'; + let player = new SPlayer(); + let match = new Match(); + let apiKey = '368d3d7f-1034-483f-8226-e8e5de4f76b9'; + + const opendotaServiceSpy = jasmine.createSpyObj('OpendotaService', ['getPlayer', 'getMatch']); + const getPlayerSpy = opendotaServiceSpy.getPlayer.and.returnValue(player); + const getMatchSpy = opendotaServiceSpy.getMatch.and.returnValue(match); + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule] + }); + httpTestingController = TestBed.get(HttpTestingController); + service = TestBed.inject(OpendotaService); + }); + + afterEach(() => { + httpTestingController.verify(); + }) + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('getPlayer should make a GET call to the url', () => { + service.getPlayer(1).subscribe(); + let req = httpTestingController.expectOne(baseUrl + "/api/players/1?api_key=" + apiKey); + expect(req.request.method).toEqual("GET"); + }); + + it('getMatch should make a GET call to the url', () => { + service.getMatch(1).subscribe(); + let req = httpTestingController.expectOne(baseUrl + "/api/matches/1?api_key=" + apiKey); + expect(req.request.method).toEqual("GET"); + }); + +}); diff --git a/src/app/services/opendota.service.ts b/src/app/services/opendota.service.ts new file mode 100644 index 0000000..f0b1248 --- /dev/null +++ b/src/app/services/opendota.service.ts @@ -0,0 +1,25 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { SPlayer } from '../models/s-player/splayer.model'; + +@Injectable({ + providedIn: 'root' +}) +//**********************************************************/ +// Connects to Open Dota API to retrieve data +//**********************************************************/ +export class OpendotaService { + + endpoint: string = `https://api.opendota.com`; + apiKey = '368d3d7f-1034-483f-8226-e8e5de4f76b9'; + + constructor(private http: HttpClient) { } + + getPlayer(id: any): Observable{ + return this.http.get(`${this.endpoint}/api/players/${id}?api_key=${this.apiKey}`); + } + getMatch(id: any): Observable{ + return this.http.get(`${this.endpoint}/api/matches/${id}?api_key=${this.apiKey}`); + } +} diff --git a/src/app/services/save-player.service.spec.ts b/src/app/services/save-player.service.spec.ts new file mode 100644 index 0000000..f1da4e1 --- /dev/null +++ b/src/app/services/save-player.service.spec.ts @@ -0,0 +1,147 @@ +import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { ComponentFixtureAutoDetect, TestBed } from '@angular/core/testing'; +import { NgbToast, NgbToastService } from 'ngb-toast'; +import { of } from 'rxjs'; +import { Auth } from '../models/auth/auth.model'; +import { Match } from '../models/match/match.model'; +import { SPlayer } from '../models/s-player/splayer.model'; + +import { SavePlayerService } from './save-player.service'; + +describe('SavePlayerService', () => { + let httpTestingController: HttpTestingController; + let service: SavePlayerService; + let player = new SPlayer(); + let match = new Match(); + let auth = new Auth(); + let baseUrl = 'https://ryon.ee-cognizantacademy.com' + + const toastServiceSpy = jasmine.createSpyObj('toastService', ['pop','remove', 'show']); + const removeSpy = toastServiceSpy.remove.and.returnValue(of(new NgbToast)); + const showSpy = toastServiceSpy.show.and.returnValue(of(new NgbToast)); + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule], + providers: [ + { provide: NgbToastService, useValue: toastServiceSpy} + ] + }); + httpTestingController = TestBed.get(HttpTestingController); + service = TestBed.inject(SavePlayerService); + }); + + afterEach(()=>{ + httpTestingController.verify(); + }) + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('addPlayer should make a POST call to the url', ()=>{ + let didAdd = service.addPlayer(player); + let req = httpTestingController.expectOne(baseUrl+"/player"); + expect(req.request.method).toEqual("POST"); + expect(didAdd).toBe(true); + }); + + it('updatePlayer should make a PUT call to the url', ()=>{ + let didAdd = service.updatePlayer(player); + let req = httpTestingController.expectOne(baseUrl+"/player"); + expect(req.request.method).toEqual("PUT"); + expect(didAdd).toBe(true); + }); + + it('deletePlayer should make a DELETE call to the url', ()=>{ + let didAdd = service.deletePlayer(player); + let req = httpTestingController.expectOne(baseUrl+"/player/"); + expect(req.request.method).toEqual("DELETE"); + expect(didAdd).toBe(true); + }); + + it('addMatch should make a POST call to the url', ()=>{ + let didAdd = service.addMatch(match,player); + let req = httpTestingController.expectOne(baseUrl+"/match"); + expect(req.request.method).toEqual("POST"); + expect(didAdd).toBe(true); + }); + + it('updateMatch should make a PUT call to the url', ()=>{ + let didAdd = service.updateMatch(match,player); + let req = httpTestingController.expectOne(baseUrl+"/match"); + expect(req.request.method).toEqual("PUT"); + expect(didAdd).toBe(true); + }); + + it('deleteMatch should make a DELETE call to the url', ()=>{ + let didAdd = service.deleteMatch(match); + let req = httpTestingController.expectOne(baseUrl+"/match/"); + expect(req.request.method).toEqual("DELETE"); + expect(didAdd).toBe(true); + }); + + it('getAllSavedPlayers should make a GET call to the url', ()=>{ + service.getAllSavedPlayers().subscribe(); + let req = httpTestingController.expectOne(baseUrl+"/players"); + expect(req.request.method).toEqual("GET"); + }); + + it('getSavedPlayerById should make a GET call to the url', ()=>{ + service.getSavedPlayerById(1).subscribe(); + let req = httpTestingController.expectOne(baseUrl+"/player/id/1"); + expect(req.request.method).toEqual("GET"); + }); + + it('getSavedPlayerByName should make a GET call to the url', ()=>{ + service.getSavedPlayerByName("Ryon").subscribe(); + let req = httpTestingController.expectOne(baseUrl+"/player/name/Ryon"); + expect(req.request.method).toEqual("GET"); + }); + + it('getSavedMatch should make a GET call to the url', ()=>{ + service.getSavedMatch(1).subscribe(); + let req = httpTestingController.expectOne(baseUrl+"/match/id/1"); + expect(req.request.method).toEqual("GET"); + }); + + it('getAllSavedMatches should make a GET call to the url', ()=>{ + service.getAllSavedMatches().subscribe(); + let req = httpTestingController.expectOne(baseUrl+"/matches"); + expect(req.request.method).toEqual("GET"); + }); + + it('addAuth should make a POST call to the url', ()=>{ + let didAdd = service.addAuth(auth); + let req = httpTestingController.expectOne(baseUrl+"/auth"); + expect(req.request.method).toEqual("POST"); + expect(didAdd).toBe(true); + }); + + it('getAuth should make a GET call to the url', ()=>{ + service.getAuth(1).subscribe(); + let req = httpTestingController.expectOne(baseUrl+"/auth/id/1"); + expect(req.request.method).toEqual("GET"); + }); + + it('showMatchAddSuccess should execute toast show', ()=>{ + service.showMatchAddSuccess(); + expect(showSpy).toHaveBeenCalled(); + }); + + it('showPlayerAddSuccess should execute toast show', ()=>{ + service.showPlayerAddSuccess(); + expect(showSpy).toHaveBeenCalled(); + }); + + it('showFailure should execute toast show', ()=>{ + service.showFailure(); + expect(showSpy).toHaveBeenCalled(); + }); + + it('removeToast should execute toast remove', ()=>{ + service.removeToast(new NgbToast); + expect(removeSpy).toHaveBeenCalled(); + }); + +}); diff --git a/src/app/services/save-player.service.ts b/src/app/services/save-player.service.ts new file mode 100644 index 0000000..3c9b84d --- /dev/null +++ b/src/app/services/save-player.service.ts @@ -0,0 +1,166 @@ +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { Match } from '../models/match/match.model'; +import { SPlayer } from '../models/s-player/splayer.model'; + +import { NgbToast, NgbToastService, NgbToastType } from 'ngb-toast'; +import { Auth } from '../models/auth/auth.model'; + +@Injectable({ + providedIn: 'root' +}) +export class SavePlayerService { + + //endpoint: string = 'https://ryon.ee-cognizantacademy.com'; + //endpoint: string = 'http://ryonbackend-env.eba-pbjsc7zw.us-east-2.elasticbeanstalk.com'; + //endpoint: string = 'http://localhost:8000'; + //endpoint: string = 'http://localhost:3306'; + endpoint: string = 'http://protractorbackend-env.eba-3jtcbg8v.us-east-2.elasticbeanstalk.com'; + + postHeader = { + headers: new HttpHeaders({ + 'Content-Type': 'application/json' + }) + }; + + constructor(private http: HttpClient, private toastService: NgbToastService) { } + addAuth(auth: Auth): boolean{ + this.http.post(this.endpoint+"/auth", auth, + this.postHeader).subscribe(res => { + }, (err) => { + console.log(err); + this.showFailure(); + }); + this.showPlayerAddSuccess(); + return true; + } + + addPlayer(player: SPlayer): boolean{ + this.http.post(this.endpoint+"/player", player, + this.postHeader).subscribe(res => { + }, (err) => { + console.log(err); + this.showFailure(); + }); + this.showPlayerAddSuccess(); + return true; + } + + updatePlayer(player: SPlayer): boolean{ + this.http.put(this.endpoint+"/player", player, + this.postHeader).subscribe(res => { + }, (err) => { + console.log(err); + this.showFailure(); + }); + return true; + } + + deletePlayer(player: SPlayer): boolean{ + this.http.delete(this.endpoint+"/player/", player.id) + .subscribe(res => { + }, (err) => { + console.log(err); + this.showFailure(); + }); + return true; + } + + addMatch(match: Match, player: SPlayer): boolean{ + this.http.post(this.endpoint+"/match", match, + this.postHeader).subscribe(res => {this.addPlayer(player) + }, (err) => { + console.log(err); + this.showFailure(); + }); + this.showMatchAddSuccess(); + return true; + } + + updateMatch(match: Match, player: SPlayer): boolean{ + this.http.put(this.endpoint+"/match", match, + this.postHeader).subscribe(res => {this.updatePlayer(player) + }, (err) => { + console.log(err); + this.showFailure(); + }); + return true; + } + + deleteMatch(match: Match): boolean{ + this.http.delete(this.endpoint+"/match/", match.id) + .subscribe(res => { + }, (err) => { + console.log(err); + this.showFailure(); + }); + return true; + } + + getAuth(id: any): Observable{ + return this.http.get(`${this.endpoint}/auth/id/${id}`); + } + + getAllSavedPlayers(): Observable{ + return this.http.get(`${this.endpoint}/players`); + } + + getSavedPlayerById(id: any): Observable{ + return this.http.get(`${this.endpoint}/player/id/${id}`); + } + getSavedPlayerByName(name: any): Observable{ + return this.http.get(`${this.endpoint}/player/name/${name}`); + } + + getSavedMatch(id:any): Observable{ + return this.http.get(`${this.endpoint}/match/id/${id}`); + } + + getAllSavedMatches(): Observable{ + return this.http.get(`${this.endpoint}/matches`); + } + + showMatchAddSuccess(): void { + const toast: NgbToast = { + toastType: NgbToastType.Success, + text: "Match added successfullly", + dismissible: true, + timeInSeconds: 5, + onDismiss: () => { + console.log("Toast dismissed!!"); + } + } + this.toastService.show(toast); + } + showPlayerAddSuccess(): void { + const toast: NgbToast = { + toastType: NgbToastType.Success, + text: "Player added successfullly", + dismissible: true, + timeInSeconds: 5, + onDismiss: () => { + console.log("Toast dismissed!!"); + } + } + this.toastService.show(toast); + } + + showFailure(): void { + const toast: NgbToast = { + toastType: NgbToastType.Danger, + text: "Failure", + dismissible: true, + timeInSeconds: 5, + onDismiss: () => { + console.log("Toast dismissed!!"); + } + } + this.toastService.show(toast); + } + + removeToast(toast: NgbToast): void { + this.toastService.remove(toast); + } + +} diff --git a/src/app/services/stratz.service.spec.ts b/src/app/services/stratz.service.spec.ts new file mode 100644 index 0000000..4e0f95a --- /dev/null +++ b/src/app/services/stratz.service.spec.ts @@ -0,0 +1,67 @@ +import { TestBed } from '@angular/core/testing'; +import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; + +import { StratzService } from './stratz.service'; +import { SPlayer } from '../models/s-player/splayer.model'; +import { Hero } from '../models/hero/hero.model'; +import { Match } from '../models/match/match.model'; + +describe('StratzService', () => { + let httpTestingController: HttpTestingController; + let service: StratzService; + let baseUrl = `https://api.stratz.com`; + let player = new SPlayer(); + let hero = new Hero(); + let match = new Match(); + + + + const stratzServiceSpy = jasmine.createSpyObj('StratzService',['getPlayer','getPlayerMatches','getHero','getMatch']); + const getPlayerSpy = stratzServiceSpy.getPlayer.and.returnValue(player); + const getPlayerMatchesSpy = stratzServiceSpy.getPlayerMatches.and.returnValue(match); + const getHeroSpy = stratzServiceSpy.getHero.and.returnValue(hero); + const getMatchSpy = stratzServiceSpy.getMatch.and.returnValue(match); + + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ HttpClientTestingModule ] + }); + httpTestingController = TestBed.get(HttpTestingController); + service = TestBed.inject(StratzService); + }); + + afterEach(()=>{ + httpTestingController.verify(); + }) + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('getPlayer should make a GET call to the url', ()=> { + service.getPlayer(1).subscribe(); + let req = httpTestingController.expectOne(baseUrl+"/api/v1/Player/1"); + expect(req.request.method).toEqual("GET"); + }); + + it('getPlayerMatches should make a GET call to the url', ()=> { + service.getPlayerMatches(1).subscribe(); + let req = httpTestingController.expectOne(baseUrl+"/api/v1/Player/1/matches"); + expect(req.request.method).toEqual("GET"); +}); + +it('getHero should make a GET call to the url', ()=> { + service.getHero().subscribe(); + let req = httpTestingController.expectOne(baseUrl+"/api/v1/Hero"); + expect(req.request.method).toEqual("GET"); +}); + +it('getMatch should make a GET call to the url', ()=> { + service.getMatch(1).subscribe(); + let req = httpTestingController.expectOne(baseUrl+"/api/v1/Match/1"); + expect(req.request.method).toEqual("GET"); +}); + + +}); diff --git a/src/app/services/stratz.service.ts b/src/app/services/stratz.service.ts new file mode 100644 index 0000000..1c5ff06 --- /dev/null +++ b/src/app/services/stratz.service.ts @@ -0,0 +1,41 @@ +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { Match } from '../models/match/match.model'; +import { SPlayer } from '../models/s-player/splayer.model'; + +@Injectable({ + providedIn: 'root' +}) +//**********************************************************/ +// Connects to Stratz API to retrieve data +//**********************************************************/ +export class StratzService { + + endpoint: string = `https://api.stratz.com`; + + token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiJodHRwczovL3N0ZWFtY29tbXVuaXR5LmNvbS9vcGVuaWQvaWQvNzY1NjExOTgwNjY3NDU0MDQiLCJ1bmlxdWVfbmFtZSI6Ikl0J3MgTm8gVXNlIiwiU3ViamVjdCI6ImRmY2Y3NDg2LWNhNWUtNGFmMi04ZTgwLTM3MzU2MzQ5YTc5MSIsIlN0ZWFtSWQiOiIxMDY0Nzk2NzYiLCJuYmYiOjE2Mzc1OTg4NTMsImV4cCI6MTY2OTEzNDg1MywiaWF0IjoxNjM3NTk4ODUzLCJpc3MiOiJodHRwczovL2FwaS5zdHJhdHouY29tIn0.d3RSfgc4D1y-NCY19j7xaxkE_c7ExfRkvqLEYJm4VA0"; + + header = { + headers: new HttpHeaders({ + 'Authorization' : `Bearer ${this.token}`}) + }; + + constructor(private http: HttpClient) { + + } + + + getPlayer(id: any): Observable { + return this.http.get(`${this.endpoint}/api/v1/Player/${id}`, this.header); + } + getPlayerMatches(id:any): Observable { + return this.http.get(`${this.endpoint}/api/v1/Player/${id}/matches`, this.header); + } + getHero(): Observable{ + return this.http.get(`${this.endpoint}/api/v1/Hero`, this.header); + } + getMatch(id:any): Observable{ + return this.http.get(`${this.endpoint}/api/v1/Match/${id}`, this.header); + } +} diff --git a/src/assets/.gitkeep b/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/Dire_icon.png b/src/assets/Dire_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a63f29ec5bfd769d76a1bce5bab47710ad15a67c GIT binary patch literal 23228 zcmV)3K+C_0P)004R=004l4008;_004mL004C`008P>0026e000+nl3&F}00006 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

g*L^;Dmce%5oEV?KaPjs)VZI%54>|BJgh} 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 literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Alchemist.png b/src/assets/heroes/Alchemist.png new file mode 100644 index 0000000000000000000000000000000000000000..fef4f31ed8a7b0e973df5b579d6dc4c7be9e0f31 GIT binary patch literal 1473 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 literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Anti-Mage.png b/src/assets/heroes/Anti-Mage.png new file mode 100644 index 0000000000000000000000000000000000000000..32ca3c35a4c93ea7bcea9525e39a628fdaaa4d1c GIT binary patch literal 1599 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 literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Bane.png b/src/assets/heroes/Bane.png new file mode 100644 index 0000000000000000000000000000000000000000..de060b7b9bbf74a9d47a613a004be76ca1e5ae20 GIT binary patch literal 1441 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 G#r*?hiW;l{ literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Clinkz.png b/src/assets/heroes/Clinkz.png new file mode 100644 index 0000000000000000000000000000000000000000..0245ee2cc6a431eb8e627eb1f804e6815b090109 GIT binary patch literal 1531 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 literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Dazzle.png b/src/assets/heroes/Dazzle.png new file mode 100644 index 0000000000000000000000000000000000000000..7456f11856f664a6c9434edbcb681e621898c0e8 GIT binary patch literal 1155 zcmV-}1bq96P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1Q{-wlB5~ ziI!{|F&3z)iK#vq6B}Z9Xlsl{L}MC#@zqw1O`P6yzP(>QwqRgcILTz@&YU?j_hwnv zNEMD3XNcVr>B#{G-Wj}hec(!;zz|RB5*W77?d5P7;z?g%+u|y5WM)ah3%O=I84F;D zwy@79%Uv#6;qf!J*An#fK?`?!H%Yzmsu)vV!4O&MoG%px^B5zC8aQKGM3a-vUK?2d z?GP&~@W?XHGIOvp#K%QlI@+^ zEmBp!(mGe<_(TJ-&VvK4KGSNy8+uk|4c9=Tp*T#_q#j2z{i)4IWUBG9)Xu7wkbent zszn|p7C?*~YT$s29<6aRv4Gb9-*CXbfL=oTh2hubu^QB{Zii$T8RDF6-neFK#Clrf zPy+{C^w>4*+QTl8zz|}`sx}H;I)72*$-lhq{`LdBal_Kh(h^>0imMno)Ck2z4|<_t z*8~rPMudKeMI}Y@=f>j{!RW{TJf-%-Cx25UH_IWP1taq2yh_H%p$3499`r&3TF`vn z%`Je`Sh!a92J0wr!1I}^@7FIAu4gd#S^q?0S(1PZu z7D#}Nu$GTLkVP{J#Xr56xBOzC`OJvdglZ&G`4(dUHN@be2fbPcd1a#pn|k}zjnyYA z6wH$wSE?zp@r@1g(~sSZe>>49%{7gTkwXnJxadJIG*Vu`=k)VtCx7@^e2##86YJnP z-q}IHp4b`b{4~xOIRG4R(E~tZ%nPh=Ii-X0vF7;yEEtKypNmaao_zQ9*| zVvLdN{-sa)FF%lH&xAd8jfCcyz{cu|CA@_`XDXYUH%FQpTe(2%rgs@5=Ph0!HKk3G z{n9ik_l9M4sZw{w9*`wv=+`0`x*(mC4xwS3sv&KNn?65Nua zplsi^i@CsSfn4QN0tI1z-MLF2kDrpDvy{TlS@W%>kVDPR)wO6;?KlolsI_f3JpiAn zZap)1x)s}Nnu}gjVtlZ~;QRZ2r{BA$UGCqzZ^ibSy$1s6fSmdDtSk>#QFtT+4<1~^ z>`W6Vte-gA_6fb;?V@jpY^A@@dyXE49a0% literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Death Prophet.png b/src/assets/heroes/Death Prophet.png new file mode 100644 index 0000000000000000000000000000000000000000..ffcb029e78837f2edb3ebe5b32533128cfaf9b79 GIT binary patch literal 1625 zcmYjSdpr{g6rM0c5#>$tsD!T2@@UCpTBJ=H@@j@FvP2VFTbB2{waTi^uryIqDS718 zMwG~kQZkZ;q=hjoUEO)cJ0!C{^0|NT4j_1cOeDJ&jn}&@3Y?&VqLq};B+}i^zxAQlK_&X0u!?qL z~IM4KV-Y#!Jr zP4qev!KjGW7E?K+{GzT)tb5=BI?DJaaOC{S?N+7jL56(lnOAj%1(4czBY+@3NPqXR zJ9O1R_hjHcbcA#@h;~~V&NO;DzsMr)%7wR z`vW#td_}uz48&=-+&h6491M_!RMH=dGJ@j8R}|(~NnW4G9J=;4Gur0pP;ZQ%E%73S z(A8l;w{5-Zf?8NeSu3daTZMn~RCp=%7?JVYwGqU_dT%xTMs zHN5(whl@&hX(;o5#fK;wy(hkY}DzJe-u} zY`D8Ozvv|;Lrd{lnYdzg)9$96T{^vC<2A;fL31`+a`6*oOvP_CNz1W0V;YCvSDDW} z-0&^;({KSZsd2MH>PM_mWMx}6^He}M{@CQXUw{j0_pwA`u{S&{ZTaAhO`7YjX7!+$ zLGfp8^bwIQEgA2O8c->jaifx19(|0t8!rD*wD9sELU+++7c^n&P6DTO$LF=jH}8e& zG^dZ$s^{TV(R)l`otMEPb2F7Sw9jQTOx-Qb%(atovUp6p#kh#~=Wc67Q1XT9M91uV0JJ#S__jC@p0z;DZ`< zDvpv!xe%76DYR2kTi_tUYHe<=(&<9|k?u>Am~^@2+mj&Wm@%$uQNv-o`fkX`;ZPF8?pK z;50X8eRT$pD3%|?C^tp1iYB{VLwc#sqrqh4AL?OLO3IWWyOLnRgB*3d62Fvyh3_$a z^~`y;r_|{9t!CjFVb~8I*LZ^z7<( ziPDdU8KyqeI!9`374Y0me%=LU!TdXxsNCmdm>&<0NRQj+vvufmS z3TEMCuAkt#{wAWYb!S1G;wNS?J|-i6e5V0idqyzo=CR_;SE znCAfWbd7zr7qcR07r8u$iTP5)xM`c2mX~EkzNjgoUFP}3D>PHjwVd;gzZ+bseHT41 zO&E>vXC-5_i(to^vnX=LV!(qPbL$5S;?Obj)d3lWklbF*s4E) hVN7%sv-gh7nyovlwz%}dMrP$509>5mP?lq0;y*JFBn1Ef literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Disruptor.png b/src/assets/heroes/Disruptor.png new file mode 100644 index 0000000000000000000000000000000000000000..3e2bb95bda5804818060221a744eaa5ff2d80da6 GIT binary patch literal 1752 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 V@NnILg5VzmV0H-GYHPo^zX2)i(M$jU literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Drow Ranger.png b/src/assets/heroes/Drow Ranger.png new file mode 100644 index 0000000000000000000000000000000000000000..0a6a49e85383feb758fc2cbce3ab590287db64e5 GIT binary patch literal 1626 zcmV-g2BrClP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1@B2jK~z{r?Us8q zRaqRz&0142J*bc*uerBK*W-EWHpqMsA-l#4HJ5cW-=a4>h>_xlV*8V znvhUrl_b5?3|&)7>z=*u{{6n6v(Mi99H~JF1H>m4CUcxH z$7vJ1R)oPnp}iwY0v#65HK=dLJi3EyJDD(B6PTmMD33v zSk731say|?kY&T(!3U9%JFu6327+hp;vj9(Z}$}sLuJ)qY7_WTAiy>EfuWffz8I+r z14A2X@-7h&uBi=%jMam_iT4LVfMe(hGizVSDYBu(u|nFhd?g)p1x2zey~OwxJ(g$Z3F9+W2U+@I){dsuHu1C{$ZdpALKR#$pF?zV31k)Kf~~DZ|CdwXfUV;w5dOwh0y5CFFtThY`BJRuLYAKei&qx$bg6xKFUV-?dN$+e#b0wrz?cloM z5BSDj!1{z@aI6BL$F-mk^2&yi%|KjY8jfTYp`fy^*H);a>$OPBEfwFjl#~V(^?Y#g zdN;Dlo)s;UAukz^!NC5quEKqOuTm_$Krnwow49S#zMqo&}9b(SRaYT=N&LJ@S+K? z7fsJ?c%%KU@K~AxU0r8Xw*W(=$3UGm@NOW&zGFFbzn{u4qzUA8+qZZm|0Z)VwTrL& z{!enInFPVfZ8fTx>9m;Z4h5yDk^vMkCmzx303;4%-vdAU5jD`~hQn<^0_^N#VPzll zmN^M)&O)r&oQQhn*!0`D2cu-wB?GurEj)bs0`zyM{e@_}nz}8mL$o6;2g66HN(PW! z{trze0NSeV{Q~Swti$(F<%kF^Mtn+@xIda%sATMXw^*3j`qDZ?XUpzDdiZ$B0Lt#P z(xjG-4lG=}PCN?)VB2ryaCeNuG`Su4dTJ_MG!tMlIvhT{IQ(+73fogF5E^$L8Y~xV zNy?;ki2k}Ez-ONimk5A}zVFGYyzStrHvs%%a$!Ag1CqYkhrPbXkrH?kk#;|0I%^d| zcIRPd+Ev&(Z-<4A4=V083*8wB%SvWWgqLkVJF|E)F4w|4D4Ifq#a_g^loEU!k%zF5 z(^%_%2*FE#M{vkV1jOVZa(^lOgO0<(b}hE1p6Im(^XlJGrPa&} zD60yr$+{RbW;`_6EU2ohK!dFb6;%}|Dl0)*MUxta{j?u@(h5GBxk#dd?-T!P07*&x Y2ig4P-=H@LwEzGB07*qoM6N<$g5)L%Q~&?~ literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Earth Spirit.png b/src/assets/heroes/Earth Spirit.png new file mode 100644 index 0000000000000000000000000000000000000000..f701734270c03783c83ab9c60eb00cb2a03260e5 GIT binary patch literal 2194 zcmV;D2yOR?P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2q#HIK~z{r?Us9R zl;su1Q@lkbwTLLuP=OG3v)Akvg zUZi9FKt8McO-#P*LM4cAJP?)i#Rp=ij_vbv;&2Pk+*7BnXYWmjP4M*Hah^L=%QFXq zynML-)Hxr;`Fz3Xx)H{#Miwx8j_bsRew@c#GAYER(!Pp&TW|?n6sX_DmkV zwTzb^O7N>gaWw3rzV5AXivHuN4CnGlz z=#8HD&1MfREuG?+q(G~ucV7{nRs+}TufyW-3Z^ZAer@5&Uv#A1|-t)eqlaZSUiY$S%WzHJnu@({y9W*BgnVdCC94QX|q0^Qn`JI-OBW zX8&15CnGlzcq(F_XtXY((G-b9Gx1a>t(}W$N%b+mYlv{od=9KOiC~E1`=cW6<;nda zu{G>jF+=7+Ckr~4)7!O#?x9sQw)c=owop~oOo65hx2xt8MJFRS5mZ;!f0CDHq`a(} zb{Qf~ZQax*+lj_Is7}nMGMVQ7jU{q&55L?K5pl7*gB;&m&3zlR)YVH7HY}jNtzR8N z&B`Ea>&5Aal6S3vXgL1=0|JT$^jg7l;$^Cvp1|1Y{=ExAajJPqSxbF~|2+ zNZ-5o$&QRYw#Uofl`}{*4bzccMzp?@V7N*3_xj@GPB&q*_y~uR?R^9w#zQvV3o>uaCEz!Cw98Hc;O<_4sd!-tL-BC>}*+y6IAg$eltnY6W!6FW=*GN5RxqGdV zqua_QfT`TDq?>_}YETXNwpOI7>KVEtb<3m?)+sIV54o+j|=uFmhUPw=W7Yi1TQCZo7 ztu%_w8o*fSLgCXEmY;Ro6I&IXjNJbQCFbCVbMhT%<~lH&{TNIk!hr_LE27NGFCpS+ zW3*Yvy1sl?wqMD{{u$iZdL4Bx9rK8U3oiS?`srEmws3jQ{gdTwHvS7zzu@uo}G5Iw4GYA6kura+ze6p*ULx zevnCb^~LnnPLg#2Ydf>${S`zjlekx;`zI0CX~z^;!>(l91GcmojO|+ZRt`|BtSh_S4HGbW1y$IB?T!d7p>N z5s}{aO65l|=)B@vL5Xq*o$FJDH$(r$kgBzRY?c1CNE%H-R8dwbt4fNik%MbytE2cg zk0}3w{bH35laGU|%|xqGcwABWrc|l-Z#4!eR^~~*{bPkUL;vM~PUCymB5AZrCY-hq zZV4h1YT({=8d(K$>Y3{JRZg$Wgu8Ec5D7P^0hGx#WYQm!ECk+F_%gI#4eGt=H13bg z#t06X2N7Sbh+fZ*CDY{2r?73|6d6EQsdHiPn4QW%Ollx1^;3nu(EHIj4u$M|ppxX} z6@99gp|UJ>k%(WZitkvGrxu?w1xFh!GQ8aCzH>f`^EU~VbZUn?Aj0nmnHq`p;6{E5FP0Bw63#OCl@l-$nSu UXD{+7^8f$<07*qoM6N<$g67jo5C8xG literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Earthshaker.png b/src/assets/heroes/Earthshaker.png new file mode 100644 index 0000000000000000000000000000000000000000..fa14ae7292877dc1a9042e0c450b53b23d5ebcb9 GIT binary patch literal 1247 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 literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Ember Spirit.png b/src/assets/heroes/Ember Spirit.png new file mode 100644 index 0000000000000000000000000000000000000000..45db881f68f6bb68ece6365aea110fb1c8de1208 GIT binary patch literal 1367 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!nm3*QDzOf3~TUcV<+Uu4mqiomE@ ziyfsmxX7AD?=U^PmQCql*qJw}y3a1@o{oGu>CyZ-FO71xne{9)YByaF!)SIXl{G^* zDbh-H$~`ml=UoeQAKddC9 z`LQ@$Y&w7TjzgIlz7D3wm$quxE~^S#6A)jy^Hg51RTUqM4zKC|kaS6X$*m__ zx@9KD8LZ{c$f#ZOZHde4sVypV<9501J$m$&w&q8up$5_qV~))+*peLe;`ON&GP2QI zpDbS}ZoKsEcki>WuS7rCa`o5TojYIY>0CK^wA*%K@ZxrMed9BS8d!z5?N53Xkk<5j zht%FRGy^T${WYGeL`?uD*Ke_Va;la~9n+*~Uez_>z{{2i{ zrN+BAr)OS&SuyeMwQ%35epid<&g(6*lHpl(ciOib+#LuTx(Xr<;$GY>xqkWmy7mA6 zp8R1izpHHYf~{ZQH)Jz#)g{@*Gt)6 zk$r!!=1kvj-@~)>F9$f!)2n@EawDgF;mOS9SGUic<)mnOe*Swb+9V62z25FPR&t>v z?X|4bjr{jV_?YEOthV2MSy)weG+$k{QfavxKYv`>j8;Z&wVbjatB>)89%l^^l>V@8 z)iskFQx@L;X8Co0V&&eub1VH+!|K&^in6|Zc#zr_DX}5p(6{g&`K(e$(PJ!IkAJed zyuRAlo&&HWa0d-;lWXENXB#3KcH%iHx5_E+jB|5nS0Us*b>K1nKP&f0^{ z#U)F5}748`~l~FP_?XXPHUDhVAcmUcINk zT<;fmw`t72K=H8LPp}ln%`E0~<6qau!}|_zUu|-D<%v&x!W$l!+2sE^bwyHm?K(-t z()2qIPy*|(XmYz%_Oe&IorAwz`Q&mpeZI1K!KJ?Wv-@U6`IcG!(t!B7cMbzjghArw z!||q7FaAcIGmGWFFMEmkn`8pZv8fw3+&tp+d-Wr*!4oH^!6VPwCV1A$Lr04D?yz<~ z{>H5A*6AZx7y0|XO`Pcd3Y4LAcp?P#xYb0>+uQdWe9XTV_`CEmSLC}S>+;v4>#y!jsg%{XS}+_!KaxwWuYYFVdQ&MBb@097}x$^ZZW literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Enchantress.png b/src/assets/heroes/Enchantress.png new file mode 100644 index 0000000000000000000000000000000000000000..789b6ac0c34edecc74382da39d73fe6fe13af30e GIT binary patch literal 1898 zcmV-w2bK7VP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2LDM!K~z{r<(7F+ zm1PvhKe(66Dnf1qh^druU6{xQCIyVd6~jg>1q?T?30(mZ+%;w2B^D_KMHF%2B0Co$ z5lMw|rZMXet(->39YF-d(w^S)UcM_NDb$~xnKSSAz2`i?=X}dug#LvTn(R*ur1zzv zfgPJaxEuO1@Id=t7*a&q8*!L&vf&jU%OT~@fFitSYWAs*`bkInXSD%^6jh&EBH|r$ zY=6rbX|qQ`F=mj~Y~L6iMA%BO!NQQQbS~DYkNQbRdg5qm{SGMtEd->wzJmM(Be2YR z81_!H!47x1*5r(}fFE36)h3;bHR_{&(vhAx#M9LK6;kY+WCEp)9;$suAk}>YmRp+O zq?bMBjkhKUc265jn|>bBHnE0n*(q*#IN4f3_{u z{&q-ye;k^x>!Uhx6*nu^)kV=H318`4v#-bcCZJ}O9JzB}N3{J&&Kb}EdhAwGHq0H0 zG~b!n<7|Zrg(Flx3$SaNE$;qeij0}oxYRHM`4S1fKjq$Qzsl1Erxw}atM_b>`q4Db z5t-c<&qvP&TB9YJbDCToJQpYYrl3`ojP~LbWX_V~QE58buh_%c%nG+IPw2JZdMtsx z2a{0i=Y-P=8_p4VfA`YH@1+sA5UJn=$~z9i52C1anKP~)*v3p!@#NeAJZa3sliF;| zUq1}1e;N(X81r8HofW%qt0)#FA3I>lE4tjAcp{s8$gkU46I4KB7CM+%Y;1DS=i+Zd zXW)h^8u!b451`y>i)G)9#G<$%=qgM_XJtD6XgY|e_51Mj`~h6tFdqR@3FnAR;*$>@ zcUxM+3S3lWplq=N zqQ{Ql9O4m|_~g^)09#xg(G=o~T;F*-Nt7{I7i&iwaY4qWAY3?_kG$|DX!>$JZXe%) z_J&+^)a}J@ht}h(parN;je&YkI`6Mke1M(oTaY*+llbKG+yE4`88h9b=&Uk8J3x@B z6^azIvDViEf`JTz%~aSqzK3Fe58N)^gwCccJZ?<>m(A4JQb%*<-SuE%JT5 zp;|vqI{114RE%|Y&Oe_JhI0iIQ9kW$9RJi42}*BlTj>R#+$eY-{V zGB_VJ9hVD2(RFSw+G-d*8t z&gseRw(2{m;p`mwFSFQllbVl*giU`UWEJkJ;?P!_gu8{Yc)-@S@?>5#=4&yb$v20-jl&lMYK4XxcI6b-DR(%I= z{8}iXm9oG}z*6>q&Pbw*%8g2Xb#y0M*$~%5K1Smje_RV*j5aphLv{yfzhZL`h8auY z$8@9@St7UF>Ysx*9~Pd{>M0E4ViTDTj16>97OrIPLIm0?QqW9~p(q~rShlcd-%$|- zH8VHSmqEtvT2H;m>$Z4#a8Z?z^&0UM^ zrOq&t^1ofWqK5Rup<@ks070S{JIgQ;Mtck8avMXL6j}am*spL!rnfT=t#(7Maux;| z=z-NuL~Tz!?ft7D@y!+Q)`^hquCCHU8@$bjm>R*xzaah|kU;qFB07*qoM6N<$f(Q+TLI3~& literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Enigma.png b/src/assets/heroes/Enigma.png new file mode 100644 index 0000000000000000000000000000000000000000..6f742e432bf8f55da2e14e09b07e81f6471a0157 GIT binary patch literal 1074 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 O1t6`^mKEk+F@FPO)Vyf` literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Grimstroke.png b/src/assets/heroes/Grimstroke.png new file mode 100644 index 0000000000000000000000000000000000000000..83a11541eeab34eeb45ca854496bedee8b032442 GIT binary patch literal 964 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 literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Io.png b/src/assets/heroes/Io.png new file mode 100644 index 0000000000000000000000000000000000000000..efbfc42f748ef7b91392efb972b048decb967ba7 GIT binary patch literal 2980 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 LNkvXXu0mjfWYmW` literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Keeper of the Light.png b/src/assets/heroes/Keeper of the Light.png new file mode 100644 index 0000000000000000000000000000000000000000..04fbdb25b118bc8a4e3e4d9f830df3546f0996ba GIT binary patch literal 1511 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 literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Leshrac.png b/src/assets/heroes/Leshrac.png new file mode 100644 index 0000000000000000000000000000000000000000..aa9c1fc34511804cca44fcdbd6a014fa4e7c86e6 GIT binary patch literal 1074 zcmV-21kL-2P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1II~3K~z{r-Ii}? z)O8%kN6^zfh)VOBpva(+wzhUt!5);f6ozJ^WjSQdX>O>EB#M0fA29NadnV<^E1-=Rf6yCOdb2)&46>+gD~8~%I0_2xj#nz%^RZs) z?a-D#BAWbiwKE4pZjOW&FBxQ!8SneMG9nRBcfC)~hFg?7_i^Rdy`~A}^~sRTFdDRY z@RC8_zc z({ppQc--=M)~I2ELT3-F{FgIy zXP;d2Ls^pdSMt5!NH6sOykum`W~W`9gbHh3`Sjt6m6|Yfw#Ma8*OYmSZj>yqy*g>i zBXV>{q#odw`&ztYkVPih>|mE&nGP-K>WQp4-l-YY>ooq+k{f=YBg^JqN-n3Smq|+o zS!9yU4!i2+(DF-z7nU|RY1-PgLk})moCxddnqgj9w&J(J!~xXq0H=X?$smhNvh9lD zp=Ia#zJKDQT`F3+YS2Fdx&wTs{s-{jC4($7ZS=^2Awd>6PG453r}urOrTzVe)bxB! zsz1i85O{i)Wg;`D!(**ugTMj2+t>Uq71w`mNbNoyx8nfSZr}B%e?U>w4n2A7fEHgK zFr=pEAAkq1jmQpqueDY87tJwG3G+VKq=#Ot36P$fqs4>QMvNX>x4L#<%a^+qns39W zzWTaZ=stpu^q8SRiw7?mHfnTG;p9?%c<_K)x{oMt-U3ams@ANn?`r;u6I#%H$dH;I zGc;)N;3dOG{Wk=D9j)H9`D%FJ$7sdQZPDU)-i}svv`4GXbVt{p4jWR_V}=GT9=tZf z;MTu@hJiM`zfGquM^xMPwbtz0uk}A2*22zqLuz`=(4fU*ty$u}!qV~aQd?=D)YI@AjSn2J9S+e81 sHiZXz45?io!JUG?^o}n6KOraQUzCk2Avp!|DF6Tf07*qoM6N<$f<=87=l}o! literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Lich.png b/src/assets/heroes/Lich.png new file mode 100644 index 0000000000000000000000000000000000000000..1c03a369703ea0b5c519b5e69a06bc9fb0a864f1 GIT binary patch literal 1242 zcmV<01SR{4P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1aC=1K~z{r?U!v# zm30`#AF|e(S(_iqrEYHZA%v#WCQWluqSLU{S&DTMOsQqVY8KH7R5(=XQt>tAt=OpM zyQSuo0=3x~6gE&HH`l9*t~LX-B)xim|9{WvIdTFy*thQO+PTktU)S$G95^tXC`w)E zKPz(}7%bT~$8kQJdB^F!IUc-ZY_#X4ZRe%; znxr*VmsDDNIdm++>2KscXNLzb8L}1;ed$dXx^SPBcc?RYUPKm#MRmWl>YG2W`tX(V zUIYwS7TLXu2#!XuEV6qQ5f+VLS!CyRr70rJFYi+jY3CO#iwsqV7o_rEJN(pY#=T1>6W8OW!0yv6}C`X-XU!{VSyWuv@36EO&B~YIm^gD!-JQe zEDTr{>4+QLqPHVk8u(J#tATwd^-28?y0MR0s%+;4O`GCa?TL8AS&b>%{5l znOnk+B4+IH;3Y#A1}vDcxxp=F9QK!zzLG}0+pLj`?c0_)f4}Ze-J{Xz8+Gr%CqrV_ z&q>j^Cq6KuXXf{iAq#^YOxWDuxvLJPzKN;x?hF*@o>z($m+_ABf`@fq;tItMpBVan zn-|c_(Zl0|D*0JP^vu|KJ~Cusz=8>z8{D!dJC>a52J4Qy;!oFTrQ8kDi%VOz zx>*`9^aUe&X6*3b^=Dzhgl$iBUK*QUk(vMgg)m64^hYI)+N#H9SLoTbCpC0zx_ZU* zHlk<74v#;FV8MiKPjp=xGA2-4ULj><)aaR+hcxl|Ci4}Ho>{1MjqXSCz!?pDd4~}_ zGj@3Jk|7HN7IVPeDLt6BTF$Mpa$;h1L!SW(6f`OG^YC}ZFLrqFk|AptQ5>h#JAOh) zJfF30zfucZ^w69o=0Nb{HY0jw?C?a&0_;v{#Ot-1SJr3%HxHU(-rlc|H*1+Y<1x3S z(meWmZ-w)=IM)b_s;lWFWEDVna+n(sUJhM`> zSO1n$*sO#FbxO*qR?^Z&#lLn$gP+^2__^DROz+Ov;lWFWte@qo+ok1Ocm0(1(K#jL z*J<|p<4Vk~)1C>~)qiI=cbD?eSKOJjo&g!;RCu@_pA1h4W+|WwTj2#}lWXM`X&q_Dl z($~Penz6wC%JqwxS3LJJuC8f?4*o5#{%!t$by1G<7a)D#H@bzX&;S4c07*qoM6N<$ Eg0PikQ2+n{ literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Lifestealer.png b/src/assets/heroes/Lifestealer.png new file mode 100644 index 0000000000000000000000000000000000000000..95e059ff67119cb006d7d8c25be572b3bf2a70bf GIT binary patch literal 1645 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 literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Luna.png b/src/assets/heroes/Luna.png new file mode 100644 index 0000000000000000000000000000000000000000..0af2dd57939f4767b9321017c6ac614f855575ab GIT binary patch literal 1993 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 R7ydT^K%1Bwml@*Y{sOgP6ITEL literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Magnus.png b/src/assets/heroes/Magnus.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e705318b457d6300467c37f8590933e54f8188 GIT binary patch literal 1727 zcmY*aX;>2I7N$(i%<0Z`a@2Gfr>;iE)ifdnm)y{CGE*6q(wr~@aTyX6D0RxTY@+76 zz;(ltbaD*0vNX5UA;Vn4EpfvnOeMioFp=eAPu*sIoO7P@=bZ1n?|ILc>FHczXnB;

NRY&6!D3ldV*pv`}a068Kn$2mFEoYA$JpusK+|*b6q^-&Ie)bMc z006$|*sx8V@pmHu0G%Kok0U`Lh&ozwOs>%6XkdS0)@tzsxx~*1btAl%e|&h4zCG0VN0VW9jJ&>aQnkuseqAD2 zkxC2aE(~mGeGxC++bH}M*sl-UU75!ndDZ5dv44B&D)0HoRLcxXxiHvvaZ^ zx}AKowfWt<(b<;fF%NrYO-GuhGyw>0+NP7n1;$ohOEh=6P+qnAgIbh2pE+t3*wep_ z*z{lkVs8qAlQ_Rg4?qLjREN=oYS29>MFn46=M#B!9tMegzocdRu^!N_$qql$pJz2( zXNF6u)t|D^7c0?8D~v|T;QYL#e1Uy7>{D-JXYqZcEk-9i4)gXxEbg^Ufu*r@zjyOi z(&+oh39@J_GAA|oimY`i--K%ZO;hBv_Fsf(moV)GU~dI1F$o&_EFbSRW`~d>0ycBs z;?XOzHT`SAcb=?T^}Hcs>~o*$2>E*vZOOiW2$NQ-=f%P@341#Bc3$Gcd1Xm_dW)(K z_7xU8nAs8g8N(3UpUzuVo^lLd?q(~qyGwg&1XhW2E?FsS6~(ye5s$iqRYTV1u)j8; z%!=rabQ|R@fvTW{noUL3HtWtR<`T_C@G|$1dgr*G1? zj7fz?&K1dh_VW+3OmS5D1X>gXz5@EJyJ z!$Z(|VNp}zxmW95S(GMfzQ?#TdLBL^lq3>0w*3*`o&spWW zLp?@4a;|)Xg8psf9)q|V!Q#}p&1Gu>Dx=`c3VOZ&wj|8Fzt2&2S2TE>RsKg1{>a0` zm{*HBFS{{s7pMN^ZltsSzts&F#cG9mI{Ti}%h{_2e%@xx^YIXwAh9u=*Bab9=TPzD z&-lAh95)CgNCaA!G5;?K4V~*}Gyd(&G8(a(V4Ts~A)Ku^W!Kf?jdTwyH5CO%pBako zu_3uiiA2rk3COZr3m-W_kkUU&vgVKAlT9!gABn zKW%Hwb^EL2iGHxbF`g{^@!;`CIF%L;6&zURA4lsCkPO}Hp4*p4uWE1q?GuZlci-LM zbYH~fPFv3xlK-r&yLQU>MtY8NA(MN>cUcYujV6}Y$D@>N~*rr zJFKBzA?5^+ClJZp3F1h~&?JWMd@~yD-c!YG$^{$FLM<1EgX4e>E)WpN3A|QtAG@)x z7oft8Cu`1VG3l39)pAU`d}q2uEqm=tSypJPF Vfb?)*r{>cE_;~txRJui6`X4+se(L}L literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Medusa.png b/src/assets/heroes/Medusa.png new file mode 100644 index 0000000000000000000000000000000000000000..bfa8efe30a4cc69b3063b83802d8d1a0a048f67e GIT binary patch literal 2796 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 literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Morphling.png b/src/assets/heroes/Morphling.png new file mode 100644 index 0000000000000000000000000000000000000000..400a0f9793ce0ae1268e8fcf68916962c2f6ce70 GIT binary patch literal 1877 zcmV-b2demqP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2I@&fK~z{r?NxnH zm30<=-^;x~mmtN~ZD6eRpVHl?S(8XKv0W`olUcv5#TvE^SrJzVv~t#ul`@(%%fxnV zx7NO>Vfs+R4+KR4;Ywhmd`bufT8Swip$YQrdCq&U-Rj;pSl;_FvZVZgAoOV8V?4{-u>C&tY=!g|+k(d(Lkkf2yZIbN#@y z^L;IzyazY=T;Jc=$NtL@;lzR?%>rhF6ThpkUq?cZb)M~0#hCUk z&5dn5g~4A+e4-O0PIn@<{S@wPKhs8@%MwAmb4T7rlHUArEhg1|j^ws(Z1}tf4PEEa zAtF|{cB+8d&TlZS?TiX|x1}4Y4V}pRvKw1^zroVaTD3pu>3rq8ga}X3sSPBI%FV%b z#dR1|aunO!zeZ#Cd1MtFL)Y0}WPj0xW{EHKUckOnJsQ7U*RJ*H)h&o}9l{MIRTx(6 zQl6V$%Ym_c(?9))`0nWWcWCBD40-1r3@L4Zqo@HB4u689UFUG)js`S-)q}*!CREAA zeInr1W2ZG{p7r$l6IfVxT>IEh9`Xe}{o)xv0(h*;`Q#K}pSB7C3I9fH{ihgORFA<2 zYVg{LuMkmMjY_%rm)lB^-Oz@=A3BO#c2;Q2d}Kilo~S>r_#tJr+D{%%l@`3@sSAEY zSfi)eW0T-myb5OeX8gLS4#Uf;5nf!YmtS9W1UW4y5&T{;UTBtge87bpOAczxJnO^} z&p!5(hkSfE`|tnK?^A#oIRf+6y#@Q!#T|}Wix4<-5ga*hVrbrB8Dk9w6^re!!F30! zbwa`Kmt#XqD{gVQaC50kW9A3%wQ$6BCAlLya}&&=W8j>W ziGfweWC?3AaDOc#Ww9bFg|Or}Y`NtaQhZPZSf23!*C!ZIF1F9Yhve65KY7UKh))y# z1-=A05%s6#Dj<0Fybi~V6lsV-==3ERSXhHFAq^{ULPVvEx3U@$A6LWpPZ1*bm5G1@ z>KTVsv>?nSR^F_5bAOxmlZSld4W5(aTL3L&>TFz-lG+#Y$X{Vb+zMyfG7NgP%G!;i zpUK5_mbpHHu|5w`yYeuqDqlV0(9(K@9y*~m@JOTfv7bET3!0mP&_(I}+yyTY-#&fF zoCJg?r6K5{$6#I`jljE85MI#)V}8C`M0Fz~+YTcluN+4DTk@@M$8D7&Ks@8n52_K? z+@u0LJ?tkB`N$iRvE2UzXwHYy&pG0(k(t;279k~{N`5Y0%$=-W&7KY;^L31@EyS>c z`RW;K-i`6#*-swwaY;E9p8{Cm^4a4Sci5+9z&<@g#wLsN{8oLEot?9=VZ(SOwWa(6 zMo|%BJ}Sh}vfb(#YhLQa5zjvMlZSlD8+VDXz>%=B!;!cOj>IQn4xb3~H+SROwpJy( z=JrI`vt%DmwjzATZj3#+2fr%arJgbKtP@8(``Aw&^6?=Z2`k(Jz9Yg4blINEJ{$Pt zIs{Bff_d9)m^VrD>sw*lSp{Q;{7B_&L!hew1GW@mlxvSnAYVOW=2<6>c=oa1cIUi{ z6AoIpQN5P{=f#A+f(Nq@xO{E5?XG#S#oTXALCjdT2ewDI!@lK17+ZE>@Y@9#T~>%2 zig&7K%slJF5%1{@n6v=o3tX|*eX*Yje0!WQ?_CIU%pYOK%&~}yDq!2R7iPBX#7lV? zxp_C@KP*7VE4k_!Gtau>1h0LQWRg?lvlc!d7keM?f)lnW3t*0x3Ec63MfAqIFppHg z*eYB6@(u*9d;?dn-i&}%uc&9tJnO_M-aP^HzGUSiZ)E)AzC?V#;87}*h>e#?SRw+R zT?^Zir(izz42+CS7-{kon~|lSG4rew=eaz3*?OxtY4t@;>y95B?}8Iy_arIUHkJb9 zRS1b~+{3VqoC#w@9E|&={-BIDUPdckW685loCIYNw{G4taDL!98R{Ke%Ap*q%$pZoZA P00000NkvXXu0mjfrhTA= literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Naga Siren.png b/src/assets/heroes/Naga Siren.png new file mode 100644 index 0000000000000000000000000000000000000000..fa10085b92211b1512e4a9e141462a111e2f656a GIT binary patch literal 1651 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 YU+X)S(J}4GyZ`_I07*qoM6N<$f-h8X#{d8T literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Night Stalker.png b/src/assets/heroes/Night Stalker.png new file mode 100644 index 0000000000000000000000000000000000000000..695f1cad386895c6cb141bceb306e64ccdbde244 GIT binary patch literal 1247 zcmV<51R(o~P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1awJ6K~z{r?N)DS zm30*U-Q9Js@7B{ae#sUAU+v8S3+e^npG36z0CeZrQo{>v;^o&{#n6qZj zg7lcu5)+a2Jpb@j1YQ`1IdBE$aB>07rN$mPUOgEZFW?ea?(>sTxPJ`h`4O1TAyjq! zqcE?IA{;F|O)&TB!XZ~RJ`Z}{Y6;}M3_r=mn!jM4x#SJ-26c}j5GwkP7}x9kRW+*h zdC{9Q66chF*?el;0=>~3t)&mJ2ra7ko|vd-_Fh&kJ*=O%fXqtNyg{_Bm4`fr+Bl*S*&re4K2)V9E8~=OH_6sXOBC0vIPR2^2eCB>>QEa zBm7!=(UaafBQcMIZJ@m2m=<|W;jMB-)t|uBpF^;Hc)}$D2ZxbgeCK(>UneY|T6)ln zp7!zDSsZKwrEM1ws_C;0nC;gPTz?32*1sfI_w%>~796^YrDf&zWS_8PwH_V966Gt7}7P z$7wjNSJ3k4It6pq*dvErYN(|Ly_l=F%+OhK7NmqNVotR@qog6LhbTm*?k^PN8B4|Z@`|}BZpjSsHKN` zWiZ$uegVP{^@*!MGcco^pgs4Ylf#=>i3hwJ%JhNnvFZ%*GRlG@pg@^bc^l5}ym*z8jES7myw~ z#!W*-7EZmqlxp9DsT+jT{x_V17m;69j17w;Hwfmeu}2QM)c8H<=~`zV zo;Xtb5zMAv5M0}f;)Tm_yYzAe_7N~=jXiS6rDi6>8HkpaW0ey{w6FxB92puhD9CjO zudc2_{*tU~1asEdBZpjSR4X3zaxJGGxVvH}oQLIqcYV6i3#UlPKJH4COnH z{!TDwjXmWEml|s6;aW{Ukhk^-A~he&TkK7k)o;M;ID^=;7qPDU`X2;y*0d)aa;c%# zwU}9`Q9plfmsjY9*W`odGsL=wQ1{ADqXcu-v?m-hEWIcHtMU8!91asEdBZpjSTK)002ov JPDHLkV1oJBR|5b5 literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Nyx Assassin.png b/src/assets/heroes/Nyx Assassin.png new file mode 100644 index 0000000000000000000000000000000000000000..35d87f56e76b25bf246b877553fc943ba1cc23cc GIT binary patch literal 1629 zcmZWqdpr|r7#@zO5mE@PbV9^f%CSZ+k!>29%h1ieMRQvjmNbeSidJrO$+Q%6ouR4I zjcD11)p8>DIbvz4IW*Ck>YRVhAMf}6-ao$I^S;mfJl~h;>F%n!PInyu08mB1ozb$q zZ8enF$WDAxl0=r|@Mu>jKpjtiT2}mW(h=nd05s+RzXmDF>a{U&e>?!NzI`?1x}xuf z0sxAi5YCR?ey+_0M7S?Orz@pCu^aR9fwz=WdAq)Vaf8B&3e68A6w{~Qo;D~7uI<}d ze5`@Lf(_B$d9iVGwsL605l2123Kkgb++iJ0f(+coHG=v1Rm7Xi`yb(XqUKbF5{QQ{ zn<6Ii5_^aepPUUO(!@ok$JWSu?0~-2K{DKfxAICC!qHj7Z`N(c+1Gs;f>G;AFGC6j9)UAvG@u+}n+Pkun~$q~Pc3NdAPO)0_% z6p)o=;Mn7{XL_BB2MSfQbIW7nU>5FCNB6%s7Gx{uUO{}Qn*|zwCAP)lFa(iaoQ)g% z9l(&=Y%=iYy43+LTvE_hbydUJeq`Wk0~cKd>!6q$CWNTc1iGNykITYkxCAYpWG z0*UDdJzjRF9!uY`GtXV@`DO8&FZj81vIzwgrkNw_P9O`!9<}+v*|lW78sQy$G({$q zAA>jmQL;WFd*x3W9fU_d(fPu_WeY3)_11`L%ypLp%toZs{3d3N*Qa^cZej6tHkw>6 zd@%+4Uk_N)EvtiWM*_+>KAXl=pT7?UnsKvOaGWMBkwu;$YKEn*l%@2&w??3HHtQ&< z_4@->al2nPrCv`fIvnSa;zB{U(;x=${kDbC4p#xwug4RmTmm(@)r_Aahe@bi?KnG) za1Tq(v<4;gwa(Tm&M+#3o9y1^P3E_Cc>32p>Q`Sf&uth!IyN|uU<49=pCmtfD6-lv2(6{LZBy2RgP|Ac3)N4v20Ap0cCbwFJ4{~V zWL~gRQc?oz{(vMk${^uA@Pe9~8%**tgBWJ~$rFLzi}0IibKu_kWBo`JIPY@q_Uo@C zg-{zCp8WS~>pNRogNI)|zw5C4JEw0jFUg5!^VIMqpUjoNVqu3<=0RZloNa@^b2G-J zw90<%c8!1W-n1+$1Xskdom$oy>_y~Be$F4~-)rJ%8Yq5jTMe_sD{ZkRUiVObJ zP7!rge!WdNVp=%rFm|$AU`VEZyU6SRHqrNMmTSgQ)B2IV!%ac#Qac~3HcCW(;fj}3 z75>BT`WZQ^8*%Junccd6?DP>Tr)*$}HWT7e2xH+p-;(cdqMsbX)fPt$i{HHQDEz6{ zt40A>^mU0???RacvyKy`A@_v3wl#la0x<$PPSl4Ouf963E8cpEo{TAr7~*JKOpNC_ z4BT@@@Z8}n_k)Sd{E|~6Bl2>|XVUkkOP|cC+dJKmZq3Va8v+;g`pUip0K&!Hxy~st F^&cso5~lzF literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Ogre Magi.png b/src/assets/heroes/Ogre Magi.png new file mode 100644 index 0000000000000000000000000000000000000000..1211a5ffdb8c255d9a1aa94fd8dd3ea26c4f3e58 GIT binary patch literal 2121 zcmV-P2)6f$P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2i{3UK~z{r?UZR$ zRo5AY&$*X-L6GrYPzJe-LPTT~hXO`X2!g19fFcSg3X0%>1Qi5vcwQYH06PQ_8q3-F1d5<1A`}m@9cSlfk z!NkPqMH75=rMC6^*1UV|ZOiU*zY)$9z`+zAUY^d04-@`p6P!AKm6Z*x4D|DsL=8}N z@9}t(h{RlG)_#K8%C@C*sc=IIHjWfHG)7>Xmw-0FnkF9+ZKy!SFo8{R7Uae_{;Y|o zlaHgQ?gXWWA5nZ9R-A&q0|Fnv516=+6|GQm^brxo`_M5pyC8}pL)DS&pKQjCI71T6 zDkyMROyxT>n5pq#SB${^BsB^BRL}MoMPdDu@iPcWegB?w;_`>n*S0Zw)7K1HevYiB zn^b=aOLpEQEPgh{d%k7K3COCyLgI$gM3fxF-pPTL!OhGL(C2WpF5{Hf_-42xcSoBr zO*NOjaRMbn^oSYa@>qOn`l#!LQN5p;xWNx`h%~_~D z2Q??9ERD;gJh|pC6lyP$vg819lM`qh|3}6+3G7P}$aXVhzIQj`x^^YWOOM)EIU!ck zwTyEiX{0qri<6k*{nK*BC3*QZMa&|EeuEiYe1Jmfq_cN?$BIL@Iq(%!pM1a}DQ7ob zV%(ZG8b6b+XWMyv`unjuB#RzB6xj4NrSC9P{DMpfdrzN0KV8CI1e}bdlMj@kE$BsI zOf17pZ8_N=d7%|wHc)xDc#<;QE-y9P?eWvykXvkFKY~#cn z2jO;yW~X!~I1P@*cky9dGpb0byM_=HL`J~|67%b@OP$Zw3*b9rDdE{wR5YAGh=^oj z)p^`{yQ42Es2!r_TB#3p(XLbu?M`Konl+;|G>^5!Q7)jbE0Py0(BIaBQg7Wy9h#le zPcX4|eBd#!=?BNGX0mtQW~=mxQ#XG}*plOTpk=Aex zD=RBjj8N0pT8V|B$Rtl0S2m=eP4lFuj)0M_K!%?&5sn57?jtb9HHhv?#kWsn|BGC1 zu*o+j8;9%`;;JsPsO9fuY5z*pnome>_#6G^>|pq^(}Y!gMoz1-r*Q`t99WS^%?7sUy-1QeXG_6UpZ>(l zFK73p(wyqR?o3xA!-DbD)5BFGCo4jU+(7Yi12Uz-d6&6bG&8iQ(&`8=Z=<2*2-?F( zDX-hk*6o`q+j*9em2DWtmt&V!gUZI9l#Q)u+wK#WTSG%)FUq6sC>mry-T;BI0q!i` zah1}h6X?iACWPvsW2E7pk#VQ&!A`UI0Q#W>ZLE4uxuN~`f4JF z3dmn&paWAg(>vZd%|w*7(kHVHrzzFMtoxYB4PTP6qMndh<#?p6BlrWUWardlXkkNI zVGG$At1*ul!?38)lxEMMq9m8p^y%c6)v-_eXS&4aqv_@>^@yK0AX6E4{mwjjBf)vw z8CKka*Q|Q_=QI(xa5sY%?!q;-2EX)m_|0p?c+wgS&F#o3+D-M2FR0pkj>`vgxW9iW z_Zsc_Xy+W(AG^!6b!Vlry+t2a5Bz-vWQNLD8!*t-`-dhf7vHI?@Sfd()6^QQ5?0eY za|`y#Yv~$Zh)w)T+~XIa>mGzmN6FCmRd_8qNyx$`>gUZK-zd!0>IXjgyYxjtIIim#ORxN61S~m5Wp018 zvqZLKij>WD!$Z0@kG$O|-toUHZC%%?@EVM1Y?Mn0g($~ZuIO<6Ty&U}atAuPa(Rg+ zu7v)}&QV+tOWib)>J*WpOds5G_tO2{2@j=pzkKqS0%FItJb8L0l8I7{gG;-ey{6sS zMz7u3O5Sd7WzueAY5t=${f6Sd@+<%U2*Q5=I~8~1Xj&OK00000NkvXXu0mjfyQ2?& literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Omniknight.png b/src/assets/heroes/Omniknight.png new file mode 100644 index 0000000000000000000000000000000000000000..4a301f0d0509e25042318caf634707f70b734e7b GIT binary patch literal 1843 zcmV-32h8}1P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2FOW7K~z{r?NxbD zm30(-riB=2BoeYHg0jmKL&kJ3^!_n@mWm}&Xs!OM6NT|L|J2Fv=w~Z+{76( z$J*hF;ezd)AM($JFfa4PG9Pr74#Q_vfjF4uf_(qpBKqm<0LuVo4{?1?FvODc;jG~@ z#A9!dV)fwTN@W1fOdW#nmg=!J&s{|B9^mHc7<|5N3NEiM#G$Hi$-SRFP&nkCs}7VQ zOg$gjuq)r=r;Fu2_@Z8C5!;qCxSRNoM_cgyp=NxyXC-d6RN|US@Bj#DfjjYeN25n_!3Lgnlx>>4qd+Y0AR2l|>?Q zzah+dVu&S&T=rnE^NkU|vA0p;E^BPmJf$A8Odn43!p3+T)Q>Wr_SM;19IH*jrN!C! zcoByv#+U2n;ER?9+@$C`izH@_HDZV*hg|kxFZOIL8)4oGm^3Yhc~SP_>*H+1nIpL+ zPlwsDo|qNwfzk+P%#Bn-WsJny%wViZbjRL;Fo~ICjTmCdAy-}^#@5oeD8Wmd{YANp zS*D|}kM1pZ{>>a65`3(o_i{pz))x^$TDaM0Fw9ninuxwQJUvQc=2#AjhW{wibsV-OmowBb<;IAC0Qqmr)WOfK4Sa z=xCUPJ3E^sW{x#th$V+y4nXIDY|nMa{tDxbFlky0*VIWpQ0OVe9DggcPIN%x;GQ_O zcoL4ziN)JFYS}Zqu{<>xn8_m^duS~+ua&Qp446sz+ zM>MEK9Z@zJI%jLKX`FEds>AzZhv6Ay4zschu{mFd<8^5gr+fCrD}nZCN%qB-3BD3D z#~LxjGM+zv5ay1tms8IzXpXfN4Qf$Glud>!RXXfSA0UP8iO=C^h8@N@^*~eV5NWn9 zZ}zS6}u?O6=`0^>%1kw8Y{-xi^l2td(Qw3XUqK2 z=jk5ZoCCB@4KTh@tRv1Wg%3&tv3{~YnkV~7%v`%VV8jqh&hjJ|vk)$o`~7^i zYNTkGa`zbStQsf9tNr_nn+Mok;D@;}t~fh$IO^ivkT$e87O9WUjId#tJ=Q~F=2&aZ z_Yf>ONo(4$2((pz7Oi7`l+v-JL0|jVAYFu=%~rSnYtXD zs4JA1Io60FmK<`s_WQdp;N6DvYX477u#o|lrhBWCY>!nb4w$RnFx~fQ%!z&hxq;Rw z(Al6o(otgOSR;nmy?H~0%YJwH0}UN1np+3co=1C%Emn?x*0>6Z1JRP>jha{&Oc~J| zWg#}GGq_@Bz832X!X;*oHDZV*CtzszEug@|3}@3d*pX-_pW^r8o{<4UJ)E)OWlvP< z?NA@%fVQcASe85#2g^h7W~M*(6$PmM9xOFth$V;p458uhcI!6C0}Xq}S<6>&N4%9d z2Vg!eEC8=355(ex0oY&chqp4_adK7=7RC(3ff9eou|^EBgRm;qMPlYyBZgRV$Tjy-{>0X` h$&>j1_5jmp{sba~I=$bux=R26002ovPDHLkV1h>kiWL9= literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Oracle.png b/src/assets/heroes/Oracle.png new file mode 100644 index 0000000000000000000000000000000000000000..1329b08aa3c7d27f387986b9947711d827723099 GIT binary patch literal 1450 zcmYL}dpHw%7{|BML6o7xE2^ z+M&l~XYQKg5=t^`^B^qJI&&)LkN16__xH!|`M%%Z=l$Jrgu_HdWJLe~fT*nv6v3~` z`*B#1pE2?AoBRUAAYhgN%Aou*zxnx^g@XkEP@8jP&rg8g3y0fyU;qHntNj4>hE*T| z00DDbsD-mTjFTT`Ul4e_XAUE7nDOUraahW-q}crH;X}Mz%3lRms&OKABmGvVk)Dq+ zWnOn6_7M~5;p0N+YF(@MS8{`H2iG+Yr`ln_@KXk8qv_D{$Mh;LcgAV$8b<;FAPMf=9k}bC*kdT$M)r`K#I0pC#lM zT(z6Lcx%9mO<|mRO9qI49yDy!cs&_$Oi10)5LW*_E!c8NnHVdGvfi_C+6?a>e%d{D zm7|j6UHErl&iLk?^%m@k)PTau*zLDGPcv1Y54ITlkymFgB!k5+t1Zsq-R{}Zgz-jO zG?Se?LUcP3ns>5Ia}ADACb%n+sAsIidXI{Fn#9t==M_O(9ou)I11J-`mr#9w&A9d@ zM#rdk`x6tN?pfND0XlVGcF^#Ar=6e&oNaz6t+&S-#aP5<)tFLrl&&t5@^)nNCVY2m ztVyWZ(XJB&7jYe$q^Z1)ZqWMMUz4lT4O0}?yF>hz{RK38Sjpr`RK*h_!MILJ`j_(J zY3b>q#QH&{DrZIp_WPj8502LLskWlKlkuO{Z7*t2hZmceE9_P0f)729?i|hMNH<(|=tl6eGZg~5&loaG ze68Hf;ToUS8chiwV{Y`|O49?<1Z&nOE}!dD$qS8n8t7-tF6l+ECr)^}J*sShRFdNZ ziVBfd^hns!?zmh_2NULERzg~KN@LBAs6hJU$v{8F)J>6d2ZkzV+Sg5XYQ-3}LP8v$ z!+0~m4~1HKzP>S@`KD1C*ckjzI2TR12G=bfw_xET`8oqyNp!4X#F4d20y7k|Wn`bn zuH{;Qame~)AGR(XsPrT*vP@Rfseq?Whs2f6>&DJjiDca!9mEk)?dvJnlS%#6wb+cP zmbFU)-``X@Q)ZHV#f@}GK0*6}M#tg4>6n=2uZqT8$qq*9j_ zpA3bDSei1O_XbqYq6)oWilfC+vpVqaKKqOauNY9FzJaTMu#Sk5*QG1WYHXSVj`fcw zM5FiZ8c6N3Za{MM_})kQ-^%o1N12%)r#OB#pP{d#+RL4 zBG2Q0Ley5nBED{OCBRy4G_Zga$FU>{y^*+EJZjcj!QKT+4GbZI{jv|xP0JgXD86AT zK8qItdFO_7T6?fS>aEKOfj8Ha5p!=SG9mikV1OvL!7oY=x8@wn_I0w{@e`$z*TWk3fiS_@zqAr3p{R)M}8Yt_HeOeAPj!6j6}Qh=x$O) zlfuKz!H77sm*v88F(}J-@qr6e{qNNDOe-t}yll0o{5SwfglVHDQ@xCuBOg$l4>a}8 zqVH`XYW&4~?nf__@7{zs7)5qUnik-t=7XR<%gWjwZQUqo4fu~F0!J7+ zWq=t{FJ#W-c}`%hc;!{)OYa`yBNk?I{$bzf+CfXza@&5>pVQqJk|n`C^HU6ts35X> d(?s<&>jqX><18JD9O3`309z|Klwx@$>0kJR#q0n8 literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Outworld Destroyer.png b/src/assets/heroes/Outworld Destroyer.png new file mode 100644 index 0000000000000000000000000000000000000000..259b5b14402ed9d09e390761e89107a71f420955 GIT binary patch literal 1576 zcmY*Zc{~#e9G^4AWR5LbY)_x4T#=(355tiAoH@q~OIr3`V{+dS9V4cC=*7rA*VufX za%8lW>xJj2`AAe`GDmvzddKJe@%#Ng-#>nz-}m?Z9oa5UNZ=u*LjV8(XlHBXCWx?o zlMokpBALt+1Rp?mY2dkHTVm|Jt-L#>iD3OG1nEaR8#AhEX zkTkfgAN%b?I8(A!D_%!c2L+s(G?Dk8-Hdaoh_xvh&JMa^=BG7ozcVlMfES=M$@lG^ zGYD_SZ0gg6$51eCEssU1t$gn6{ej-H@9-9md z>sNdG;c36CFH5oJ_1j!%v_f$jPxir7M~UmX@$@lo<8Fu08n-QRyvz1F$m80p?7|YY zh6qxsNxFHU<|rKVIV(cxlo??=OC1DG;ivs{FP0=#Ti-fJHRU{m-&MjdS!k1Ab*|8( zD0!rmVtb}hGECnqK33wic60D-W##Hd&oN%U)I-`#>TT=6Ai2v58bi^GnwIFRTIncP zzw1O5KLp9Q{yVj*vexogy^Q|8U)5NHb*&*AuMKqEGvqAZWO-d%JHd8tEycATQ;FXI znlaDhZTNRKmQ{gRreAeSo2tQ`)Ido8QVw-Y|A^xG{I8CensE7g(a$dZaRmUZjcaVF zKQ>|Z&1s*i<70xQc&X?+a2OQ`@{HH1HE^SB=&Ss>%w93OTAC4Id>FAZX~k0;2jc_ zuhH^$$j5UU0~w~OinpYVoA8hj{%-%fW#i;j|9F>lS_8dPq>qAMb^cjh_~nDRx%d~ zlr{WagfEthWL#78Bd*Ui^aMK-kAidB!k#OKac^D#w(v?Jrc3u4=8DzV7$AnZ56=VrZb`F9dE};j^|Jr+j1-=8Q0}j5fL2#7y~TDuv3tay1qtZzYxw z@%PA8_*jVl{f_J>8>(hv_^yNhzn}z9i+0Vpm^G&1FUyG zI?a+pH!&kA#wAU{!n+_vOhKUiS$|@q)85Y+V79Xmh;_ zBJ`2$BChBWVsP2GlFsG5bwVHGzm(F65Ei2w+g%s`AxpRSx5#2(Z9BaiUAx;Itk(;F z6`JW(kHm3^wob(VZMxa`iS|<_`VCpCtvyB!SORbqgf3c5zD3enU=d1<)Cs+Ft&Z28!X_D;YbYJua4g(Xr~PuTGU6D z%91mMJl~eMl4_I>4h-1ZI~JUNx$xw4+)=Iu@q(Fso|i4K<(tX09-d{uPN!ZAk3%8OoM> znuN~wG6*KT=mi<>v7vk@ZAA+)=pM+mO&|h0!>izK>z>% literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Phantom Assassin.png b/src/assets/heroes/Phantom Assassin.png new file mode 100644 index 0000000000000000000000000000000000000000..a0d9294501409e871673e4a66fd1993d773dce93 GIT binary patch literal 1770 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D27gIJK~z{r?N(b; zmQ@tqFPehD2On}2OyrCTB8Z$75m3Yfp7Hp3#zT@P)YQ~LEmQI|X=;cH2}zlg+F{;&Q*u^E2!6`!o*>rAs8_t%1#&`2Wyyo zQ?oxN1y)q}GbF6!cpFc~yr$=il@t%Q?AO*|^tu%~Tkntw2@6IFV!JyIt z44ql2ntdh1_?V|LB$Kv!sp2`S+2LZZsF{{Nswjq+-j5`*bR4ec{c)Ve#XG~ z`DwyACyroR<382w)6Q|nSMeknaflZ+XZkbS+D#b5}^5R{uD?m}pIhfODU@kSobbbQU-k}M(_dJBY zGaz;yr{9^gC~3W@@kuKd*^_zE>>U|AG66%%OW>+3mAjn^)3_hzgA0=22F#7?Fkjx$ zgv-vK!kI_kt5yPH*KzUV;heI+0akhvLaNFTI(^E^&7ML6v9e!NcWp!Jf*P120bjNV zrumZ0P-gk)pzy9h)%zmd46$keqZvHI9NR8Ng>jrYRtbg(K>nT=5 z7^;Q9_DkmwRg#a4RZA75YiqoB2OUp-SKV`L&hf*@UgyEP-`>UA%jaLN3U(DG(6AM? z`**{P94_T{I1-jEz=W+EQG50TcHC@7%dbD9^N+`>*{7Z3^wWx%JqEiwu3>HSx&Fx2wIy{-)onv2c|YBXdP93bt+PMxa+R zG+F`vK1bbx-P;h9k&Xe0vYgz8xic}O_0rSi`x=n=_2;S`n~sa0m6nJ>`Pp#G`I+FY zC%xtI2@Nd6n#geu3&DV-_zv1kTnwz))fj%~CX()bp|g#+c^$bw{h*qC+BvQS)T!Dz6RBRK-%|XDmi-`QR9sXA@z>+N*_v3e} z*{8kw=m8kU3xU*G(_un_o+hVV@HJ0w1XzNV01uPn5E_i={9KHwnE^w4iTwNbY=?Ec z5!QQ6u%<|{qL%)c^&Si;nE;bJ7P+1!7&fsGjCb%ASMW7YPXZJg3Bu}S3Uk!S8X5{C zOPEwS8Cfh!@&wZ{KEvb>XPr8xIwv|=?Pfw23hP!OrK$o(&Jnkf=SgD(SMhsG?g$4{ zS1qycaY(Qo?3QO(X$cZ4goI}?R$e@719J9U4be&I*;sz=Br=yQKuYyg#FtHk<#uVj z;s~DN_LZFCxpKvyPRX8H`hDF22sQjLi$(e{le` z@n*!ztO+PHa~c!5BZk@IUf-@ixBpChB*JC3J=(y4Ae-3#(l0UQA76Ywrk!z@&;S4c M07*qoM6N<$g2OV literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Phantom Lancer.png b/src/assets/heroes/Phantom Lancer.png new file mode 100644 index 0000000000000000000000000000000000000000..b4868fd44da65d6af4b53d7511b2674acc4835d1 GIT binary patch literal 1587 zcmY+Edpy&77{`AkiR~Z@Lzc;8cwW!<^?5(fC;pTb9xN;)3;+Pw%oJzM%lkiv zkRb0R1qUzj5+BJLZv>Qg$xZVL0oM~JPXGWjNo3P$C$HY^ZAu^kz%Nff2VbjKp$h=) zY%{~1u(88GqlcV&;SXupW(X`RW~*_&xnTLK?x3F)B&5qdBsi0a5w%-w*pl+|=i`(~EfgG) z15e0g73;=J5UW*}vwZNP^_`k(ih{Wc*qB^48IYnTy><6c%3HFZ@ql_QvhxN=E&I?* zT2D)FV3h~!oU)HW{4g3u=zefcdx0s9HoG(!2FzvZkW1=h)DUmrb4PPWG0CC3*bm#j z4{hI1wX6!lV#e)+GIh!@P8{vkRkf7g?4x(TEs}0TiCzfeEL`PJthrv<5)xNdn|Ouv zLpcjUg3IsEWIq<=?0nheMh@=*x%a(iei{)+yn3)JOl1x}D_2=38CT3od|(j{-)cdB z*OCsZYCGV7>8V}t8M!22g2y5~g$;6G@p~~CyIMo3;-L-A2YiZ@Jfwcfc^*qve(VL} zO(hCK>+;grOAni{yPKhA-l{Dg$VG*VlkJ#KN2o=Lj#xCe}k%B zl8u#D`hrW@0ryKv?oBLlIFC$OVYw}x93^k?Fn`4}>mnQJc^JswbMLM2di5^=E80v6 zT5a%D_ch$S(Obqf8>#Up&et^ryBDGZ$?zt%TO+mu5o`0F$L&svlmp)xAfPTO2lF?S z<CzB6{)AwC#*sIKtFCnvpMey(3!4n;v%3;(yGbuWOU(UKdDprJ(7JWw_yr zrZ7lPx3NY%VMMo1P9}crevV(Z`c6Z+xCr+9btKx)9{(Oc%(6vv1*V3E^L4}3-l!MnhL zhmof5^K;}D`Xy_e!jaiHd@DEL=RKJnwC1Y5+EX(W-sEGkavT3brQK|S_R?{z{M3ig z8Y$k%Ip0yBAZAdPLqbd0eXBQwz@p|6_f58IbE>dZ`kC}XgetK8zG-b8hWo61@YLlP zLI~aF*8_#G-*u0sXA@cF)F++IVeF!`-bM%IyR*-Zmns;4`}!=i(QFpgdZlWF zsV?G7fol>|guMz0V7Jl+;^KwlICT(SFz9{*5m(-p`8e+pXlTB3t) ze)XGWLgc#IDovgi*Yh!>hbtm7Y$Ty+Rxf)-nWcy^QvB{ARVr8ZH}%Flr|5;IMbtxb zpTu>eDlPJv4WAT(zlb^@v7jC0UyWw?K;0<`Ra=mO?kPt9`lb!H0*h!^B+vpppHD7u dKOK%9g=qwmVR-N!d!Eq)X2w>yawEsce*sO?_Spac literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Phoenix.png b/src/assets/heroes/Phoenix.png new file mode 100644 index 0000000000000000000000000000000000000000..e7899ef088974cadf16191877c00c7204c5de100 GIT binary patch literal 2100 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 M07*qoM6N<$f(<3{lK=n! literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Pugna.png b/src/assets/heroes/Pugna.png new file mode 100644 index 0000000000000000000000000000000000000000..0f9ab0969d2fcd57acd4dacc30b43cc0d876fd01 GIT binary patch literal 1272 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 N002ovPDHLkV1m1Hj&lG2 literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Shadow Demon.png b/src/assets/heroes/Shadow Demon.png new file mode 100644 index 0000000000000000000000000000000000000000..846d34bda66edbde67cf625c739a22dacde422ba GIT binary patch literal 1407 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!X^238SI7srqY_qX9Ei=;zEa<@NQX}TqaS2uEV z)HHS1O&gyICMQ}m15IMpS}1d10?YCopN)$bcx+UtF3Wkq9FfAkCioA7c9}^00e+c# zm09Y#k$#qan;(bm-L>yK&-blSRd>VA3ENHQ>i2HEzVN_vnTaz^e~Uf6+H(74L$GY) zDy{dkehOJ_)m#%IWwbeMzD4D)d*pOtpgo-_fd>&VI77kqcL zL~2fSy0c#K`DFuH-v?)7M7J*!E2z&3OuP0*SiQgIl}`8P_R9;EUKKf)vtKYMx^d## z2gj|w{;#-y+!0y5PsKRp_UrR~vLes67X|WXj{2t`8?3t7pHAEJO1bbV`_;;i<=!xNu2|lm`cud6Omgyq zmxZe}jt50}_dQHo*SPl*kKB{l78=_M_umn7ju$>WJtgg|UE!w_%loQ+MNHc(Ve~rk zGSd&OJToIV`_Hl2$+&RwJUjn-LFVFL zhuJ=b7&mKPNoLhqGV6uJZu58P6S_imhUUWVePo4 z?}z5ve)WxZGabrzHSsQPcQCn>nY*Y{w* zEb9*QuKo7|H&{P)ysk<%%=+XZ+kZ%c2q(w0pm7JU$`v@9YhYd-7K$3*C+hn?7RDfYW3%~SSe ze)&}BJIChJ%Ek9KS(Uo!vpL@GI(DmKN6v%!_eEm#kAA!yD6+o)+qxgCXBI+I#;29i z&%T$;?MPJFxUOt_;rclT^xLKC_61I4md~A4^kCLPSb*F$u;1y|tN6rwtz?OkqRl_E z4%@;fMHl)4r~ce#QTEmplq~aR%r|{$X{hjE_B*fDomT^7@G-}QYuzQck?7ml2 z)3~8~?a{|m^k?`TZG6%pU3`-%>f;n}Lb_+L_vxRaga4WLuDi#4T76#Lw=;Hy-M_L9 t>&xjV7T(Fa7nhdn`2RR}%c4K*uXz%W+}|J;3@kJmJYD@<);T3K0RSHBu+IPh literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Shadow Fiend.png b/src/assets/heroes/Shadow Fiend.png new file mode 100644 index 0000000000000000000000000000000000000000..7b6eb0737c98c2f6aa759f3d3f4e9d2174cd8df1 GIT binary patch literal 2016 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 literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Sniper.png b/src/assets/heroes/Sniper.png new file mode 100644 index 0000000000000000000000000000000000000000..9838f4c1110b617c9d4771d918fc15e9b3abe97b GIT binary patch literal 2003 zcmV;^2Q2uBP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2WUw|K~z{r?UZ*^ zmPZ!GUvoTX*PyN?>IQXlEJQ32!1N!>7fqCSe<&&D;|Kl@$FZHU`+IL}Cg`%lY%und^i=l4-c%R23Eh5a$Wz&3P`z!i zrnvS*KGZX6G$0Ba^lU9z<}(~4oj)*V!Vt_y=wSS*4kHcpnEmZ%OdIhLX2br(qH%q3 z9p8?*f9d#ECNu?K>OlYQT1^ay`OuFQ=6%%>tG|8B(n*H6%=jE5{Vo^}`hcmQDRfq~ z-d8zIzZE7rim%YtlxQBZX!W*1+zb1p{>9>AY?xb)8-#^%Pn^sQ@tSLlzl|wT?*HOD zgHH5pr7(ZyY`nY^7;iL>;R8C{5V{)qmO-}dbM0QUJeKRzxoamp++rF#P*ijQgDxHU z=h)#aHXDJ{55{=g&LF|x4ZBfVxG&vE18&C`lIRlBa19M?5tyj2&H9-NX5$>Vn6--3 zxe6K9ok(1)MWkb2M(OLbc9|W91H01hy;gYI&&S%N5AG(jiCf}@iK;QCv>9BARESuhU_W^Xri*&8$$T)kV@HzXKZK98d!zeD zEzC{K(Cw?sFx?JV^jG+?x577}3diZk&-{d6$~V$TvV%{vU7+rOGF6PiK!|k^8SaK` z9;1WdC53IY!ZNolQHGze&$bu3-Mg~I!jodJIJPfXgF*NASvIH*W~2MC5`}Y&r;apE zvR)d9n7g_~*C2yLu-l9uDOf%L=V3Z5OlynVFA971^kRCK-h9R=7n&OB zmH|_vfwWP_Wc$rzxCS?}W>Y*f2OF^5q(Aqg+~9lxHL4k_FMDAB*U{XKJ=P@tir+z^ z*9W(_{SBa7r=e8tOy+X_mFHhJ+`J35g;zPdIfD89^l%tGkdW!aupd5<*?qsHBqW2o z_0NN!Bgrdqc zY7UlCTwKy}1J9oQm(C!Zk7axDj)wzAL3kA&rFVf9+} zT6>aU>rK4f2I7`(Aa;qTYQmjRD>tH6`4g{pD8a&;%%wX>_ufr%@&OVPlc=t)Y1V{n z|FL7oNl8hivZ9*35r-%%D<>){nxo#kNK#uIz0i%kbs^-qt8@z@%Vj5-u0bSNZ6VA% zl-!Cd>4JIT$>Mva=6!>C$C_f`aAR zu3eF2tO=z!B8_y{07|`rDff@#SU@`amThC@N=NyAVxzJs%&R6lwTz^seH=KD!j>(* zziEK<^bA5n!#I8Vj7$=a0|EjmDJkXf;Ukc51*b~mm6ht1 zshz5*sFX1mE?nf)snfEf;o%YN-=8e6Le$cfd=>K4LLe_MpRBBGdGdSr?vt6B#f=+v zT)TFi{QLshmAbl{@_NpksgiSH?$Duhs>*8QqZ8}GL}B4knJ?agm@7)F*BX$Y%FUa% zWUzP(VPWC& z1;kqY!+L4pp*o(guH|%Plg~}Yh^{thh&9dDZ-XNl`Lf96%U5KgpqPt$d_hRgpFVlY z)5lM#K2`m?B8{BvJ5O?YY+$kS2b9OlA3r*X_R( l-Xzl8`kVIukJms^{s*dnWxy6*LB{|9002ovPDHLkV1j<_@f-jE literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Spectre.png b/src/assets/heroes/Spectre.png new file mode 100644 index 0000000000000000000000000000000000000000..c6ed5838ec915dbd4bbf3907bee7c32f2b64ec24 GIT binary patch literal 1511 zcmZ8hXH*kb6plv-%1Dp22tmX_aUevd3J3})0VNPN2?Rt)2wV0PTV|1w5)?rp5{4u~ z!bn&Fq^vL`NC4T2wX(`K5inttQ9Y;qao;`nyz|cezI(s#CBjXiV#3nG002PD*yx7E zPCmIChk!e0KzKNJCmjf|fa(LNJu3+~j1?-?Ni002SKG-mP?W5E3I)7u-$D8Q#cZ#HLXZqUM(pnh7 zmtVESA1ps%V`GE4JvqT_T-m~Hi&|+7MsGQei+thn^Ax!3Hlale^7SM$xdn5jph6|` ztcn4gC}^$uMg-NRXbnDrsvmX*-2#et#U{|Dat3OOC-6^Y)zsy^!F3g@F%a0r+3;Y> zV1dgDow<3KC4hgZ9j(ynpE1DABUq$w?GmSzbc?ZW=7hFr@M3 zM|E@*$1QZT2eF=3rOAqO4jVP5Yg2n;jXC;*qiVYr*kzh9~G zY5mMQ{lLjdHi9JCO#7^DUpf4o-HEj+lGAJ$PTyY)@@i=3$t07C5pxG?A%fwPsraHG zdG-9_DQ?u2D&j)o*l1Q5bmT*(KT(Ah2bwhrG%Px8xxf7+p^ISGG~-}*80w1H+i|;% ztyF$rcm($51iC8lLKtGnZ7I|8>dSnhUyi6LsaFkc48wt?>7mPb^DM;ZiU~Hz%Mg|d z43jbSL@IBb3PUXw`pyJbLmMa^43mOB2g)l#Pgq+{x$Z5*f z7sRSeBuRFM)X5dKP|zH*B;!BW5W+$db%eYMGKAAJCM`{upUpn?D|fn%DdG1usQG!H z3g=w>o{;ybjBHsB+&^drOvG@KLqZfV$@f{haRx^!tE-riYeDyt#1V|JWN&#y>c7tQeY@kqZikS}U714nZ$#4BfXoY*zY>oqZO1z4{Jpk;%M< zU$|M;3aTgC?eQBxI z+@043_cODiZ5hXPmqze=C1@M=`xezGL2cp8LF@0~6sisED@b7?ZE%x|+Pjppfjj`p cq&5PammToB6os=ppEJPtrs)l;{+;N500Ld?E&u=k literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Spirit Breaker.png b/src/assets/heroes/Spirit Breaker.png new file mode 100644 index 0000000000000000000000000000000000000000..ae39e7a5cb428bed0ca42ea4ece1b4272b02fbc3 GIT binary patch literal 1841 zcmY+FX)qg#7RO`D)J|LLMX04!AsSR|sUU)0l_+XoYHesO5ebS?dwT6#XkFTBDOInw z+DSz1#BFPf61$eFs~$mlG47i;@54D~&WCg6H|PJKIVq@{NPZqk9smHqZ*FE{&8o5| zaR$iB*ocUqtip!1Mj8RCho#n74W}>M5)J_TE1mbygNxO32bnow0RREYNw9qgEcXHc zfIa3Wa2tE%P;NNtBTl@hZ&0d;RtL`({)5EFhT!7lWYZB1YRbFkAb_7vKy-4L2*3@M zwa_#v>XwC%0(w2D6)HbCngi`R_#FB>@|@~h6Liw6sP^?hL^tYN`WF&@_aJh1g{eR5 zEn1V&|2ms%3iDU13U-gS+mP z^Dq^7o4SU>@k5D0Xk^6hYT}WBu70rI_B&gIG~!}A_PWP-z0wW|Xi|(ZJZyKe(H z-)dPzW*?@^>no8#+%#cSxZqim(SVpT;R%c<+_RojpKHGM{&CyTU9BB$Tjc$#Wj0Ua zmlvhGCG?g%ajSSYzxlMnhSsfqcdu2EOJ-KF^l=e3j!0Ph!+RaYDCA@EA^Cx@Okk^b zXhxDyUBGygzhvA%m|^eRu@mo<=T1uar5-=6f)ZOfnI=ZdZd+<_pD!Z{{CQ^96pJL|dq8RoObwjYtD+8f4xjAW11pB1& zwqiVjU6+?aiHznNMo>fexwNZxKQa?!^|3PKRPD}|JuG3^h3nJbe~5QfOHTfVLD}Pk z%#*%m66SbbZeF`k-1I!rF=AEm5g6L%V;YvlGw9WDrIC4q%nRPXv_q@w9#wkUA$`d4 zYi=JdKv&A`GIf1}~{e?Fk(KWY~JpC9JkE`~$ zHDYv#lTKk>8Yq4h6+N21SQPWk1lm~D;Aa+Glyr9X{H|9pW8;V8n?dRrIG|FC_}S3S zInCV?_~5)QO&{Ci;v`ei=K~yhIq`v7N`Jmvp^R~QkrqS=)wA;WJ7gkA^SZTN20Y=@2etE|FCTrlO>c#2W}Xj|X`4nxv;# z4jioxLLnpXYB3n|HNgCgKswQOX*mP@?jLe_qD={TXH4?Gl#`(CfEW#`Px3-ef&5`0CY%@pbTIbd0M+ELeWOkjV$`6rL=$i`sV?A z>8<6Qy?ona3707DV5hV$-@dSkC}+0Kb?_or81?dqfc^6j@>k6SzhWJhFEMMS`F!ts z19sWLJgv?fzYd9ccEBjN*^;Rc8SdNS*%y5F@ zGOFVAS`2zT6OTa6r#SV#=Xi1T+0rWwF_yl@8!@74BC*y*rdFS}{f>OSJ+`z>?Fp6J TYYm>PHwQ3B+%%~+a*z8D%g=Sz literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Storm Spirit.png b/src/assets/heroes/Storm Spirit.png new file mode 100644 index 0000000000000000000000000000000000000000..59d54fef87ce55a8dd9c0c5d482376e78054edbd GIT binary patch literal 1390 zcmYjRdo&XY7@sT8Ea`d_a_inhly{cUCTlJ(=8>~`N<+M48Y&$RquGa}5@(?!aRV9n@tW?RU7&V3<3 zyTkJ0sGSXcilHaXO^W9YPx@6EIX}cd>-_uj``@jaPJPVr9%<(Wy75HZ4bB8H+jqrH zxWez`C6@6L=QhWpgJz;-R__pPam)P%>hMRlUL~TLrtg-O#qxz*es}%a9Q82MmMZN{ zM8qE#iD!xm+CElGfjK>xeHB}WMbj%E-i2$L)Fwf;!LjrcMzXUy*=#{l;7C`|QTGnq z3_%!mwa$ngcY`;Q@w%pg5>6-4nz9l|^KGiUrLgnLgGxZ(a|yz=gKtc0hbFz7o9h$5 z49jSm(n)zS$YKX@67(r1Ceus2RpN^{GoGxIeMFO*uz1%Fah`C@8;L|dE2luyFD{8W zQ@E^pPU82)taW0bXTxjP2#es5)TQAU!1=fLDn75~+Nl?#=EU-{ED(rgC3>IttnVI`?o8+I_wsG`dQ883pN6i;C^AH}4^~CSrw0s|G>WxeYBBrGE~Ka{ z2bd52m>(I}{IT$-FH3>FZQTNCiMkC-IDd;?W<{DGn0!xD)2L|9xSY{&>H5E{;Ce3B z0Ourr!+{6Gee|lw87Y<;Z-TCIBukGp~dm##%r{L1D&P_r>Go-bX#06?sXcc zWzx`fo%+1@9MFW<)B;B3sx4wpR$|?(vN!6Ezw~o)Y?D}v9%)%lp%>(CPep^A2?B7? z?#!$nf)ZtDncn6foOdAh(<`6x$SoJEQS;-B+7hZHXIcj)T%R@+i0rGRzz@IJ6o&bfGdAhqaRQAl)s$i8Fy2Z?qP#$Or+A3R0Llr`3v4sCKO8Z$B zoxDk*u0n1fSuY_bY*Ze?cT^Hj@d|Ei-YD`GhDGpE!-^h-JFoWAFS(fRjBO_81!U>pw^gurB}r literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Sven.png b/src/assets/heroes/Sven.png new file mode 100644 index 0000000000000000000000000000000000000000..19fb6c08d6495cf4221978825e6928e925df397b GIT binary patch literal 1581 zcmV+|2GaS7P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1;R;0K~z{r?Nw_` zQ)d|V&)l+qOBNH|yu?eQbJ>i>8JB2`KQv2pQ`{6XG94LnF~fM7iv+ib;x;t2R=McL zRZt5BNF-1?YwoL_ClQqFA6-s*>OXC;$&5~!RUvsp%?WH0cdsINIR+W zQBUBJ;CTWKmYyPW>+M0K{W{XqDxo)a!s)(>=9Ye_>)MdGUka7F55yrZX@b&c2frho zDd4Zw_QT;Gd~oJW9lP^3I9F<%3exK%K#r>_RM#<2YHbvc~eF(Y8*_RJPkW`B(3#a z0;;O@c>UGaux3ppKTcJx3%;&f>=Z^Iudu>m_ru$94c^PcXtMdCZEQoE|0eA01Zp*2 zKJ=^^^SK9kktcam#%SClKt@KkV)26I#T|a2R>zKzk*B{k7n9zY4rPrSgClnkxPBL< zWd`=P`{8LHLW_40W;Tpc?LgnnJ1|+j$j;Gl4Qa`PyvUQhDTA_tk$(bx{r9{Ig%MMx z%*NFbz-04<2ADT_4(82Tj4fNX!qx17TyBEZ(Zhxaz~<~_zm5QuN*nJHhq$C6EiLjQ zPx8*rI)`FeO<*)P1W0~453|L~L&ahltQKe303!v-{JLso1WF36Fc>>n_!Su0ufoyV z14T&-?~UaOCqQ20Id9H;JcF`Eb3;IBp^m*kx6o(|9=+BO9Hyee!_9n=Syzz^}qAeAanUf#sXpGWTH*Hif>AG?_d7&fNNdkd3DQq!k(#Q4=twy`$_gAgT#WJxBl`+=vj2oOs8lvq zD}_jW0iwef7`KLNNGteki`|ddm?WM-S);ija1vd=X2eYq--Lwp9Cz;)BP&aVoSbT8 zq@9OEEJvxlfjSg(?Eh)Wvb9iT;?4f66XA|*wJ61f5D+7|Yav7q2|Evpst9&w0E8q$&nd66f1Q^x2ZVZiFu zQNmh$SdE3hC+P$jMV7EnSZE3>A#Kni4C4BhC}0DAoaxo%a%o9^X3Hp=1U|cd`~s%1t~8cSie4wKlkn15A!|Mf~}VaA@pAf f{~!N#OqlQo1xy(uQP3Hl00000NkvXXu0mjfsO#nw literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Techies.png b/src/assets/heroes/Techies.png new file mode 100644 index 0000000000000000000000000000000000000000..7dacc75a4d642f499dc751a6e7ecafaa47e766d3 GIT binary patch literal 1578 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 LNkvXXu0mjf)ne{H literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Terrorblade.png b/src/assets/heroes/Terrorblade.png new file mode 100644 index 0000000000000000000000000000000000000000..5c24817c5bcad32b1157eeb57387955589de90c8 GIT binary patch literal 1676 zcmY*adpOg382=F~m#lEM%-nM+mnCBEjEpdsI+Id1F^Pz=7!^7tj*&X043RD-MNSWu zOHJ8Ka%qS**PMhEc8NqgsGj5e@qXXuectE$yzl4pdB5*B!v}-jC<~JX0AQoLn~UGF z*Icm;pyiWDCJUFH1kn$T0v@!(Czb=LFefi30C<=qw}_Wsj%7}`1rPy1;l+wcFr&*t z005-r?&7p>Kl*;&K~HM@7DnB6lUEF!yc7t_eQWFx zBt4_tQ67+xyuwA4cfpZc3a}WsZvXATiIC9Kl zc#H)KG|AEq3S`b7l~FR&4d^Gf+r|4Kl7$}G!@q8~fm9>0mPQ094;A@05=WHAn;qQx z_;4lj=|d=S-Q{cknb*`zSgl3G&$QCR3xC{z^ILRpoa`pnr7QQn9(~*o&fC#nG3u4@ zC?HKWi2Xj>G~2L93L6}5G#3&Y+F>=;g-1KIO$AR-|%9xG1V!6^?q_@ z!)H%S%MT>0nt3-jTAQ0DV;vYx?tQ8hx3>ppMxMwNAVzSEbHmf3W(mVWqQHm)oxE?jN|OrnSrocpT?7$E%{blBg_aU{J`4g z#x7MB_1oMUIdKm>>#7t>lZtX^Or?S?XD0ODp0K*yTpM&Mh2vpn5M-Oqzn%C)sBSje zVMXOeGC}NUZGXyuzt;p8TXUfYF_d@3Zk!u&U}akCTa$-U zN@%~!eto1?NZ=a3ey%sz4=!dzYg1n~mJG?D1CwzX;;5D8I*M0l==v^#-C&aBLgID} zswBC zCP&R(jE2D8MGW}VLp-6Nhh%};N1=7HG6gT-ZRMo`*irYzIC1$}b<0mH9Rojq+vap8 zXI|yYbDsII?}U+s-!^$6ItFihP6Ij~@@sk+WgjGJPTO-dG!6Jiy^O2r$YhAdgYD9h zx7a?4zD8}(8PUR8$~YRh$~k)PC0fQ_((DzUvEhMt9MjnaC%iJpGM&Iq(f9pzp7A7(OeM=y(17CaX|+XcgD zD)E}PIj>KHm}!@ogpk!*nggq=SJ%SboYS#~t=qXO`8b+`ZnFh-VORYtIFmD=CCo%n zPtP_7wHUl?OnhuInPh7!fzmf#&v@9meK zn#Hu8Z!&NV{;w2echos?>&4OT{aD!D%acJ!a)X>G-dg#ldj*Cv+RT6zArL0pm1sb E0{p%~?*IS* literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Tidehunter.png b/src/assets/heroes/Tidehunter.png new file mode 100644 index 0000000000000000000000000000000000000000..f241b1bd5d9cdd6c81388d5c99dbb51449c091be GIT binary patch literal 1707 zcmYjSdo&yN7muHgsn==GszamgvFW^m(*6+6hI&R)(Nsj5DDenUv1m)QRgacatD+@Y z(pEiwjS2}O5fg1k7OQxbL|Fu*i$^L9L5F6)^l{Gi$Nk=O|G4Mg&*y&b{oV?L1sdqQfr+~dU&8OfIWCV}rCH zR5}1)B7AQ;zY?Fs0RVd61)uUkL?{rWx+2=CCI)M zU!8g^nG{_=+eWoljTq=|9ZErB6Z5?a`F3v;O4hQ*?#~VOFF6=Td1c1@OlsdFXZANZ zE)yyCVGP@AM-`fj@X71gGgU+?N$?-0=QF=*!$96*t&XGonb<8OVd-U+DF2|I!;cwj zu!YewAO9WKiuBYV^!0bX@1`G6Gm!a=s8ShjQbx`W@{5j+n5mBNmSAJ(pMV(ZnuU(X zjl=&-g=t8rV3kPhWflI8FN~5$)T&EQ2YV}``8|HZzCRcG(bG(sKWJ zwa*XwPDYW=G535ZK=QTvO^J088-f%i5|g^vRaOL0`Y&P&Ipf|m=4@(UeqNoaa*5ZZ zuvDHLcxVoG!vhb0$aU%1;d9Vv9LsOrRBvG3?b;u=_ld?15M)I)&JIcQdeG!G)T8x2 zi(S$wC*T{G54m@&oQ#&Wb-UK_3GLk7*_^u;ULjNGYJOP(nZsj+$qED&@>|QCM|C`p zak3o${S)lOAW$NH2W0%@iYwG}wCZ#=>Wl5R$#+PID1<;xFP|a#->GCeBIc07fIrjV z1^bzH<&@{)8u5vQSDMY7EGJ{ailSB7nbz|U<*q+A_a6CyHaZjDl?$X}?lv47Nwixj zMpi_{S}vONDngPX8`PUw7qW5R>9aeVa)$!BE3;s22Lvw}!41Fap8bKkR|}wXS#}84 z+ZqHotv5yCMp^95i;sD+qzoBA%_Bw27i1S}qN`_)j+$=L=By5lH*`ZSZ|kvM=j#~S z48@h6=rE=B3|tLey_qEL#l%ut&oGj)0R`ctrGsUh*vH4m(9gFB4eFG$#dF(O={=F+ zBL}S2NUcCK3!r)^FEkMJ^$>rmGQ5Pj#`^Zr>OEkWBX}nF8wpO8n(`hc;i47jW(OEC z-Hy_jLxjIu3K}^559*wZipiDcN&zebC)9FzT!j}PeuLNL3U!rFhz6FGr-M69(wu<3 zIocv|vf<11RkgkqPc3;9+tnnaD>8a&p8J3U=T}*}r;)`;^SH94z=_Aw0Wy7Tev~47 zC|l$~r*}76Js$F#ooUMP7aVIMsCetE|{E{*NFXw4-XS?Eyiri*{bO=OIM>wn0&lEd0J+{%IA>N#Jw699yiEk$j08z8pgi6N{@7f z+CmN8S|u#$pciWa_4sFvokUJ+@%wb;y4$Q%qeGY|*6L^LUm(4Z!-lvoHXg)d@s}tN zI1MCnY|#*&IZyq&)05jUv8#R0HdB9HqAtz2Rl_-4Mu6v8WhLazCW@59X6;4l9~`L?y?(1RN%ZetX8heW dQQo&lr7j%gM>DLmMjzAK5(@C4J*}o^rRs z2D!Tl#e>|A`9gM^eY9Ih2nSy|gOq5e_EoGlAQ>uoc|a!{eky}U7=a=E<*t^;Kq8h` z0$ky|xB;@QUOsG;NBE3<5m4j8B%!r$14QKCf+Ks{Ae>-JDH7PtMNmffV1c0d4U5|S zEjRX2DVbmQhJA4TA)wP%z1~I9Rc}d8QN5V%%2qA*5UVU%L!B9^zwl^%eZv7RfR@2P zVYvQiZ5c&66@fs+*OwUWs$lWaLpe-1&!PCP_>q6_YrXQ}PN+u{Ct<9n(}Nz{;V{Hj zrObGawEGp-3`Et>y1*9fGwekORrlo+C;i0qn*DZhrveAk()Jx$H0F`1P7R+|l;3pO z?65kGP4PskfI({%PNvqKx|4=iU<; z1+oy;B{z?Ray(#J5`GOG0egadu#{y&MO%HqBHP7Z_>}T>NVbNVlUDON4cL@%?0f!w zIx+)zJX@tdvn7P6MdT4;B7-NRl+<)GbEYEdXFI^Y8DG~^oYCa-wfq+sij*0^aqjWH z_yC(!Et5F#wXP0)D1wh$4cr{2?bMW!;Sh1(fj^Inc9d3CcZDo1T*bz^J8jvFkTh#c z7uJXZjwDsk^=2mNL-|e<2$88cTR|==@NYuD=Wsu@`1v)~xfLVO40(jN@gMzL;(f-s ziRlMZ5a5=(?}|uKVyu^js&f*?LYSJmv5y-m&onUIG|s!0+8qpf(zt)3-%&-$q3VAy zh)_bOGc2qPTV3kSW!cj<>~EOv$;!aAUE{5GxYA}oJ!mXf-?ya-B%T?)_k29)wLLe8 zJRh{lT~IGx6&jh(Ped*il&QVM^U^0!6(Y-R7OWYOPQ|bQI-e>=6g?RyI`u+4Xx znL4_yMW`tLoCVjvlJ@&CPv-aO7{o@&0%Z*eHZdHxr7$-$!h^qxOaTj#)(p$=@7JIV27WTP>NlaF0%et`t+Yk<2ejdC-uW zx;Kd6-ih=%{AY$KIhSRZv33|SR-#Ygl?J!|w^RK96V9u0iT&L?s4rD?Q?AV8o4iI* ztgE~Wv^jXs;Nhaar=bnEh5;nSX#PEg8UC?Sf0b`V&0(VyJOW$Cx!J8RHN8};4@y8X%>DavwD;#y4 zX#j@a*rNk15zFqrRiAsZyo6+)dEvbmbX;yd>dU><>qS5OgiI5A%uGnMR>Lo6C_(y! zH(p#<_urDtl9z8R^h_WQZB{t*8!Y>d4U9x)x~~n@6;6D23#K;jfo|_wDCWU3%Mhq3 z%{F9d9Z<;&Pw~83*Rw`mi>ef&brx+P!xYyGM1vc0o710_;mqx)(%#67T1#g0ix#KZ2$lO literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Tinker.png b/src/assets/heroes/Tinker.png new file mode 100644 index 0000000000000000000000000000000000000000..d52503ed12ba5e4f4a8220959e0b47c85bf34c0d GIT binary patch literal 1265 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1cpgOK~z{r?N!@P z({~hSl4TD=8M-a9Y)%9NMCGE$whr1t>4k#D76(Wd?&T&$B65>CVH?ZhxLOe*b3vDA zW|olYvSn`m0n3uj7oV2!WU{v{G4WA9`+ZLNHoul4oor?gJIN>Kd(QcMKIc$Mh}&Rb zB|r7xVhs5mkJOvZrxCL3!y`Fg&bgEE)yZ5ivsN>b{*4gx;Wl&sXyu-JQw7iC)3TSb z*qtYtHT#?^E=B)T;PS9LaHheqJnTuwtYZtNi?(2*Iu%ztvLv%+pL6oar!FYpSYXVP zUDWExK)dlZ1e`BozVrnI3KKBtOvX}Mx@6YU*XHDrPaX9^nmG#Q+U(}}I zoO3%qb0lJ+H~|+ei8$}rhMV4G$*kGuoILWWqnF-!|-)%$j}9qv`a%8rBThTqUTju}h}#*TL*Cu(#mcsx3^!oOK&+weOeA zn*Fsj^i;mw6I{1CgrGpN=fbG-;8BP_q62J-_(=9~(SC6YIgAI$*KvCH&ZHlpJe2q7XJ44_?qQCdFWO5ZaC!ad%^?n*+ijW}hZ4Ywa ztUzDSrLdnk8pxxjeAjcR(>{UpeJ0WC{WQcBLhd;E4N49TN;cU1xPIxku!T)cBWP_N zm8^RH&dJab%=yL!wOEgJLzW({>O;xlQ}VV{45H09i&KM37#Y3>le0@c>Oy;uWY+9+ z?r{&uqG@vi+IlSjU_?1U`5uyVkRIkp2B@YYQ%(a2FTfJ*OKF}1mdP-yAG(WV)= zs)y0tw*Zs1Su$((IVX>N>Zp&8e-@iI#XqEP(0=`pON)<8YbGNKw$=~5Nu+2!lW2TB{*V7! b#KrvuosN(4;(cXD00000NkvXXu0mjfjz4nT literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Tiny.png b/src/assets/heroes/Tiny.png new file mode 100644 index 0000000000000000000000000000000000000000..48564f6d24dc57c11f22ee49a435ebdc20a80464 GIT binary patch literal 2321 zcmV+s3GViZP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2&PFyK~z{r<(6r1 zQ`Z&84Frl|!j1`8Ua$>b3g z922$xg;MA=nSm4%AQNDi$3`Rr-Q|~Gefibh8`r-3 z;?t`jzkBl&{Q3T$o~)C*+Ws?p7I^d4XZH_{k3ZVA_W;fupTHM4uHy3fv&<=`T+7;a zm@6uA^Umi#JlpHSy}SXKN{tU5e*N(7@9+KN%GGN>d~oy-e!givtd-Rm?CHk6>mT9L znG?8u{Tj}koWz-lF|2b`qe!a+)qZ^K6Wsm7J^byPuU~D5uC6Yp_@js4{q>s%IQhY8 zoH;g$U!8gn2Zpy{m0k~P`D%QA`PaDi;RT$1{|GLeIEsn=Z=*z`My@Oy8#-Ds*wxN@ ziSgj?-@fz^Q>gI#g^S;R^qX@yb>tx8qhnw*8FA&(X&e~YfjpTUC543;8yUup%fH2y zi)V5C-~sftH$#&nN47K*oh{AS+TV-OUE49XXD5ioF@JoBebLWCs#3Z(Bh$&9VXNd)HlqUutE!ZDR7V(f2p9qCa2Bks)Te%4}6=rlaIM7ySNBi0a zNR!jJA%h@`Pe7hH8j6T{@SFP@V-lM*NXsSr)Ye+9^J#I%<_$;{OR#YEJSaj|;?o1m zfk#U*S{;gIuPs1iL=?&j4Nzt&P^i|R)?z_Jbq(swX4Km&krbDNH|8xv)M5`@9reTa ze_4PILm*=kn>0wvCHvGII-UDmPITwCLG0eT9{u&Juqrhi8_YahKjx1ii#Jk2R-j=` z6Zbkg;LG!akEb7UvhtwUR)ra=@Tgdi*efdMNq zfA#{1!lKdN){cE6L)_Dm!=jgA%Ni{@E2Y@Kv5c{40Mc?wx{Q*KJtCM7v!NKavSMuQ ztio_lEw*+ypugRLPVTCel`CN^&xKlh0HOO=tapVe~7I|mr(S%0g5`xWDdL~uJ3u^}prg{UgaN8cs~TDr<0my3{^ z69C(qG~}s;a5%Uf_vNCuPm4TVG?cn9*lY7(EXjtJ+x@0~8){7|)K?WVCb3Clptt+Q z0cqMh!ch}rKhNMa%3?sSo%5H(g4%qH%J z6ltJWVv~keEq(OD0KtM_lf|lpzAy=k0%jmvAAv*f z_HbXk_t=MKVtgDEM<;M_{|+2JG=lMWw&B#_G3FFgj@GD#)p9-5OAKNWlh~w@p%C7B zVF2GCPfMmMf;;7z;Kwb2zhD;3wiFC)Y2`jj6Wm8-FNzDaP~@Z{B~`+?7}5;xadS>_ zGUr*cBvwPU)I+_*AePz~z}TcAN%uMR+yG>hh*S6>Ssnzb+K+oz9*9g>h#XBcTAC_g zD9(UZm4&>VbnZaPkeU_;p_tE{VtIBNcUV(c4b@T)^%8?vrPX}KCJoZESlp(&q@6~| zc;yPD7kDFG?TyBcNW@A#ke26(n2bdzFo(iXUx@0}1*o&@P-iQFB#GM%=M+64f#Uu(|OjCFCXT0FWsHzV~u08-+ zN*>I;p=j)mVgvMUiGf@bh@y&MY}hPfG3Cl^p-`0tqkf|ROMSV=9O3~%tQTZDe>8SQ zA~138IBAfUQ}TJ6A{4q!r-G%z8OkML?$8^9piqS(DcuX!rcm^6lb~^ZBpSM6k!#?y zVFtFxu$XdXH3HPNMWecj5BJw+v0h?i=JODguy`-ANrSYUlK;Y}@QrZyDshS*GPL1H z*ZH8nEev%n@l3R>UySlKG03msa|bMnJ76I!XRZ^VyFU^3`amoWn!|dD5fD3Pk89^I zZ`42@CyGH(lqb}tU`SPucP&P7MKrtvJyBR1!s1^XNkoMs9IGq>t~P}AQ14@o3;Svo z5)v}wF+h~!kMLOTMwonINw91q8Q=Gw500000NkvXXu0mjf1Z`2P literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Treant Protector.png b/src/assets/heroes/Treant Protector.png new file mode 100644 index 0000000000000000000000000000000000000000..3be067f8f9f487b209ca0133c9a0ecbd66f1d5dc GIT binary patch literal 1817 zcmV+!2j=*RP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2Chj&K~z{r?U#F0 zS5+3rFPNgZ&@Aa8VCD-6ha7qRL>?mXrpN~m4MZI)R36f@!Zn1jlu)b@1QZ1XB~V_8 zfC`BMN$Mb?StyX2j#D}|&XhH_nws^QbMKG)8-Br3QvaOqTHm$rIs4qbzvte4_Wk{& zyMVi}KlHb*H}4C?1{zS9HG{e|TW%fjpecV@e*vjqtKo-+6?|9Y&E-;G_GNl#*B3nbP?D=)tm%_F z@=1ukfD_SNDSbh2jXbY)KOp2p%O*(_xk$9Fvfxabya@<YDu2qFloa720N5k2T@Y#FBgp61G8&*tF?9Cc`PGmhp+xr&OWxA^O z-xH)PGGg!`iJ+N=)Fe-$_zfE+_&0c|LHMRV9J(vv%vxx9O_y9=BVQN2ZADh(7={d% zupTdQE!T{etNrW$}CHXu-U_~w31ljX~2i8pT4&Mb5rfkx2_mP)w^bddl(byX3X(y zXD*h{6^}KHoqx2Wv*IN2^OQu3i*fZ2Yo;#Fep$L$9Fl8#4QMPu;ZiZ3AHGaR9@0*sx*L85cp4%-8DcNAl zc5!l!B~7Ow$`mgL6FmXy279x|rGVC*FLSyel;%`tol~~kMA4-!n##s-3sDEpksKz9 zE!>P({LT17kU7~&W@Nr?Nlt=|cs-Wvj-5!b#zZfPY)_Yja<+WA=oxG1*k;#Pz=eD- zI)D}>Ln>j^qP9uKF1X7nzBri!+{?ZXNXIe4G zbp)1A4~8Qvq2603qBVUU?YX{Ug8_6GhtQJ0u&;nmi+t(Y;l;TOCmJ{V(OEQ)D+NCM zr@@cBH?5WA|7v=X1uoj7WMpW_^HWChtobN0*6mhd=2A;&TE*2O5B{<@n6{m>Iki>9 z%nRbvok5(;nb%jqxeo%lT;NZ4o-b#!-1s8LU39s{9NjcS33}(CJ3pPA!-*{pBrdkZ zWT@_&uVY=ZBfFx^dDKLrF~v!=<|r-}`qNP;ex{Z9bE#}0m-a5CF(;z0fUm@{x=}Wd z>(#+&e2JmmIOyV(8SbvCq>&f@k*e$W~#no%4-91f;2+m@~ZJC0^eC;zR zEamxT`TFzy8oKuSh)=R8*b*Nu3McEZ17GofUp`ReA}! z=o0m|&^5M9LgH6jK3DWp>vNn=gKrXzlx0LiAM5VO{(@@ zhnX*EdRzlXfURUK-~8*~>R9#lw?;;9pMyrz$Nzswk|g~XlJd6)VfMz200000NkvXX Hu0mjfI%I(L literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Troll Warlord.png b/src/assets/heroes/Troll Warlord.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6323b5ac4a182bb79c02161c595bbe7ed3b462 GIT binary patch literal 1375 zcmV-l1)%zgP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1oTNnK~z{r%~cId zm1P)xA#>V4IhYxl>9916R4ji$w8b#VAPofpQ3Jxi6aiZU@d9-nWm$_9L5LQY91+Yv zBt({A{CGudl?`R2HH~Gh)vA>>PtSQ@ZeA-3(AzrO*?sQwoO7Q0efPWXRs8_|g)Rkr z7p5WL%~DJ)trEV|!z$eiDy(q%hrk1=n-P$egOGg(5WK5KlQnysQDda80jA~H;NdkK zo)dyF!gsPJYxX#!#zY4rho8K*6h&#W zW{)!?aUBqM7Kr{02+OeI*i%X~zWtQ$aYl`iUR^kXF}-jX?oPJio9!W}Oqr<3`mVZD zdgiPZUKIdch0cLc)^4C82<2NMHCeN#X9j=v^c(ojUIJjhBMkQ3+u${H3eHq5!MUS( znylI5%%P))-k$gU25|mugiZ2>zn3~~iMR!puz}bRG8iclv(dU^t>%J>!>}>pX5=ot z4!J9baba6dupdd569%u&6?v^X6#g8W%P-oi)n>7(O%fmQcovF#1J4nBjEvbe1@UXwL@oKZt9J@hhz zStj!GaELBpdB$v1Z(D`~o2JUubmDa5%lP@DeBhU6G`_JM-A#p>tl8s?8fxjGml=PT z-NQ?O9abN-R4(YgaBgkRg^!~$^U@chYhMPoXDvqTtkEcl^+4@g39{gGRBcSew3CjfAN!N%~5D8 zPsQQlXie77&AT{vXz67JvzY0a3oi@2k~9Vd^9E>PSDh7UkB&e`vci-b6#QZZ^aREAmGiEZIweTN-_p(Q6;jbrNL~8I5G%r@jnWC^U zRG~9ZA!4ljEnll}$QGkHO%}4p88y_>vmtJV&T!7;g5Cht5elao(vk7x1dNpTopKjm z3X*@p0Sd1MC_H$*LgVY>ad7iEU9-m-HPq5$Sv5mvFpHTcy7$1>Z7%>nl;RF!Mq{jm zXDTGgtxl7Ldm;^4v&R`V)ZQtiml=G|z`j76?7LT^+A>p~a6970$iJQ}@o`fK8>LY4 zh%C%DWX&FD)Fk-xD7I@aGaPvg?hR0%Kfe~|OHgl1fMu2kKHReo@qTWYGgJLyUu2Hbc zgBB}`X3Fg*S+mF4yWt9R@3}^M=w$}8m}#PW4^%DjlJk5$K9Sp5{d^$C-zYz~;R*+% z<(97!$^oM(HG7;H+AT9=%^qjz!ER@$rN>yW9)Ru|M=&bnVat-=JIUJ7cha~7&cS~y h?V$tC_5U48{SFqdFfm&Ns;>Y5002ovPDHLkV1g(ZhK>LL literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Tusk.png b/src/assets/heroes/Tusk.png new file mode 100644 index 0000000000000000000000000000000000000000..e2cad03b01f13c4a9399c34b664425cb1fdacf83 GIT binary patch literal 1506 zcmV<81s(c{P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1$RkAK~z{rwU&KM zm30_~4+st&`NcpDbSO%uf9RlT8jAQ?Gn-~7sZ=tVA_|I{X(Fg;e<-0izfeOIO=E!q zegw|6Oe1TWeXo@Zmu;h!UZsbe#%1mB;Pso|xq^d(u2?Sy z*ef<#PfoD@_KVXs=h+FS=$Wx|eNN_%Wneve$7@yYe4VY`tDQw_^xJnI>#v``kaXD; zJu`NA@RD)!fLbEe9XojS-D9uopYK1EeyG>Auj{mMewKFcEYijIs#Q~3Xo{X0J3M&F zkc9!uM&5?3j}+v#m0R+(Y1LfqE6UUMwM+EX@h!S~p;9mBEzxsRQFBX)Wv5TpnibiK2oKeQk}?DA8yT#Ii*>sE?Ilz6%-G?UNU51z=CO`Z%-zWHZNbf z%a`i%#lu>bJw^LVH|qDluPJ-}0&Cx1o~TK7Sv@m$c<_=T3&Z6BZmx9Y%TqdCQ>N5O z<8-e6q|RTc*Pp*O==_-z@`Uv>MQ>)-4i8>3WMSB-mP;Yg4`{XZX^vFvQB}nOy>-<3 ze(c+;2~UhSMbC^K9=v48+K4-odJTS9gB}{Cvvt)vS$j;I3JQE*NQ#~rJ3M&FIQwQP zFrekzURAgL!_1MA;?3H)zDV)$@k)s6ra5C0P0=%BhX*eivM_9vPfb3Q#%0X$52(Il zS0yBmFf)z-re>v0wT>0&;Ql?P=$W~Dye4C1VbBBQHQ+`g>Cwy=+@)R`I#L_0*Q$sZ z^B!pa>={}qo+NPrk0L{yqt!-;ps=Rcw4(#5d>WVT`^vu}daUXyz3|KH>bAufR1EnDoQ`Nq6 z5B2FkP(#zR6xlXh>7MIfw%n{)S~O#-ir25!zFnJC_1Z2|^vu}das6arz=8>z8_vFw zG;B(yg2Fl}rsn{~-Jhs_k4#crv`v1Y+ztShCs$k_3tz5dm6g{&*A6XcNWierM zgIkWrC+o?cR%A?Xb?6+YsOVmbN=Q<4*gcx)X>)_wl9}bq&ot$}XW=K4g#imDY;JIi zy=}9lo&$!clVxZZ*qJ2N9nvy>0JkS)qJ-Vq33npxCaLde5W~MjX6BMCV?YgQ}M0aP=&MNcieag?z z4|ZBtzV86NJ+gJ97Zyy9xxp=Nn%lNQ)wXSf!fa3@7_tWDe|Wjq+bTafxzR5sr;OO) zp?5O@GB>!zO=os%<$JxY`9xkD90+an0FHw2k|FENnvloyFI!WBIk$}Zwg3PC07*qo IM6N<$g5fObe*gdg literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Underlord.png b/src/assets/heroes/Underlord.png new file mode 100644 index 0000000000000000000000000000000000000000..e6558c6c3b3ea13a314bda7fee282a4b8221f7bf GIT binary patch literal 5147 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 OHo)A(23}?48TT(~vFC&U literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Vengeful Spirit.png b/src/assets/heroes/Vengeful Spirit.png new file mode 100644 index 0000000000000000000000000000000000000000..b32f39775164e70ac5125b279679013f5c0e3e32 GIT binary patch literal 2148 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 literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Visage.png b/src/assets/heroes/Visage.png new file mode 100644 index 0000000000000000000000000000000000000000..c7bb6a305defa9c2a8cd7617c06f74a5794355ce GIT binary patch literal 2191 zcmV;A2ypj_P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2qZ~FK~z{rtyb-C z)7KTYP0~OD2?$X|(~n7UOuXOch0EoMCGmw{ zga$f@QS08;dt(!0cRe2OCn=hgN7Sj+YDr>R4Rso#!NZ0~sLvP)9%C2D95JngdXoK! zvsfw~zR=fmcVv9z9(9Rj`P?QFkPc#G89!EhAh7@MXHLC*KRqq|kxHXMdq+DoDH<4~ zp%dbtpEX7ne_)6#&dVNM{GLc?j&}OdfBkdoA9>uq2NP3M|FE5y(vz3v}u#c^e&<6*VadB3o@5C?mEFdv*pZdMjVuvZMx(27XnO_9u7V*ED8B9W_E8#m(g zcTVHT@E|tlY(|CM{=n;Pct}3h2y01+CHj9fv^2S;frUiL?()=#M6CGc>@?;tU4TZV zL6%G+^qw&idSA$&iNH50si*zu=m1W?bOsiSQQ{RY-Ezo8sl<6)53!cyC})e zIC9KoNGeElwlyMSdltM6^$Ak;;?h#=@9T!Kssb4s)F>&)gtlxO45kv)yR9%=%V09> zMCpz!X{X=wy$2;OnTNdOXB^IXR>TT2{ssE`4g`1c?6#uIZ%0pSEqa=35NND~w`!NP(=QpvPCoLIpK++;;TB6EzV&SNZgh0Cp+RJ- zE!!^sX#sM}DzIHENXtr4qSK+#<-qhn3r-DpN8T9Y0A&US1RE0r$n=He2lvbUktQ-$E{ zF}!+u1fiEk@!Ge?5Ii}IW|v*s=|_L!h$j#E$V+~GZQZAg#~qhQAod$`{shQa@*LlQ2qe7Lb2sgrK@%FisxOU-$oKsIb{pe2|@#G<2d8PGZ zC5CS8@)pL7{dtiEC#E+-TlH&U8y#%BieRd;N$1&Hx4@?P+n*u!C#H`dN3E+CZ7vJm z`~EDNohCSH9GDm#m3I2E5l1|E$S21u;dr_*SN1RLo5!q^0gZ8q!>+2^P?AXk-! zR8=ZkfASX0d3i7t6``i6OcY(QoKsIb{pe2|@#K-gqoHmdaK^~R9f<^#gNVf-9~sdr zUokBQ9R!>TU&i2>89|r|^YtaDyww=I{XS+s`V*%9@<*XpVRU{DTZJ6{@D7d(J?-?P zKXJs9hkU$6jVqU|jKNs3e;;p5fXl$@G_Ebmn`=TGzuhx45`6OBhxjQTK=s=nz$4U}!{wcZgz}{NOe&fBH{ofB7Rct-Xe?|4vl7D7LN-eu3R$PCf1Pqd#%PADEqx z`<{;$79eli#|4<&go2qVx1qPE`$5a0Zb`(x{=_JLjYkN*{t7w^GLU)a7Iyvox|Ez# zPdoh-4Dr6h2S4FhzZx`Ftc3GE^Z64kUX03}ZS5WZO~d|ul1Mx@!r3Ie`409ttvKX! zq1Imq%lsKBIj5d>`iZOhhr|(YJu-2JV-|Q~`#q^K0UkO@_Wb-J z6p3rrZMUJ_UM(&stEhIX)GI!s;?Gkmc=Ph2mXB5bdwKf(_xdZ1MkNU`MaRgPB#6BO z7Y8^l6Z^Wx>w%|j4}9XRcem_DRlT^t#J;CpypE0=R~AQ-@vMAqb9nw>@0kH%&{d`&)h8hvoqi3FVS1XekB{q zXIeZ7j%@86u>{0rMakYj@C}T-IE238VGPZVqW5Tj;(5lkPR8+{%iz!4V%fs6XOARO z>LPnnK012)(RX|Vy_2I-a!x(%@{mcwJ>6&jye1OR`RnC+vMY75DLWrSCx@_a_z1d( zk4ecn^|Z(TtsLvT-n~!%*`L%%p!E2%sMo2nE;SV?YK@efQ=bU-)In9Me*>RhH5#`w RHM9T#002ovPDHLkV1la;JmvrZ literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Warlock.png b/src/assets/heroes/Warlock.png new file mode 100644 index 0000000000000000000000000000000000000000..8edde438cb4a3c3951032727c7da1867bec3bafc GIT binary patch literal 1500 zcmYjRdo&Yz9G^U5Y@{(}-mk@I;cXMv{^vC!2J>PSF-}5=&&-e5BCObM{K|mM~004k&tSy{) zS%n{>BD^;&I(mbb1j3xK7(jV1e4bYb5zXw)0DwxW_@1XQuNJ#u?HUFEfZy{&fEirs z0{{qz*jSk1T(HadDomBk! ziMXqwZ^m+0bJu%%tE-AeuKlXCg|)QCZ0avVjC)nQuPqjK)Bj%3>8&>qe%*5q_=X+efkwDS>j-D-cB+f7iT zgkXn0=;6%Fm9Ia22(bdyY-Coc%77O|!jmdkI2pzLCIQ=Ek$}?YiG;LwWthu@=W=!^ zwf+nDErV!+!}^x7cXuDTMbG&rbdFst&{JZ*E!8=Mt6tEl)dKoB);c30&jjiOqsY&M zZinVxG}klPI2q?UCBJt8_*wzRf$5B9XiHfIBT2$4Qwek zS%aS8Kyhxzu=1lDQKEqX;8<4z!r^#Io2gKSL80{9Q4}GrGiBW| z3-_G2DdgFz%udn@YR61dxhQc`M>aYb8F37(fiVrCuA@SH4(*%|4*$9G4W~qD1dM;?=4@ zl`(d+(th9;uT=G0T%%pDe$z3s1vr`8K8jJHd%3wvixYA5CXM7BUnBCIe@hnVVPB1p zNCU0sV37yf@hc{V9*)RjhIKyd}MzIToxrO!~HUuqGQ`;vhjk0NHV)7NQuTB4s z|89i2p6*HT%1P>S8^;B1yWXzOl8a=t?+jooB6_@*f?k@lYDMmZlTM}9peH`=IDhBY zX9ksHT;Dad)aIt13f*>q){HHZ4B@~V)9|;u^uu{M`OFJr`Bo7Fz`fyn7yolqemC4N zj5ps1#i{B|-zzN2T_(8c^LSa`pkt!=>aB@~X^Pv^{j-L(>zW%^&*<`{H|Ur%Pt@WQ zDs-v>PkS0U>D8x3P+RbxplGi$s#@AUe#Wx*W3=wvTQP@!ZaDPr+g{#*iPGl1Weu`= z6h}0-ugE$i+!|!0AyUEQ&D{+)c$_63S$Ef@ocvEE|F7=?U)6`nxx{-n{>5TgNpJfGS69>Lc)gu_c7(OBu$v}T5zJI3 qQ)jWU%^l7j_?fkDn^%#RI|@zK8-A%a%2vFK46w0uuqelP#QqD5$;Uka literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Weaver.png b/src/assets/heroes/Weaver.png new file mode 100644 index 0000000000000000000000000000000000000000..87257b466a8fd79535337d27c06a7c472cb72a7b GIT binary patch literal 1606 zcmYk6dpHw%7{@1<2%%hN$>iXvr;LV>+-9+nOPpkMrX9mEgSV7!vOIv!6?2-i8k)SiMuFYtI-Y|17yH?ZtcLR*hhyLlB(8IFW7MU|^`fb)@7Du1}49wKJ(cUdKF@5Yihh zE?!(+K67UA*<#ZhOCyicOK$@vR@dx#s}`n+{hHEAY0Grt=K@5I&9CKkt%oD$6i2sz zuhLS?5u|tpA>BncLCTGyem6Ok6vQI0AqCh@9XPxk_;T2R&VTk`zkZ=K;6oy3Av z{5<2~1}Ijf#2vJ+*9A zwtW3w71>Ij^|ckRS+V55$nUo_jbMGdll3yz%GFJ6Wyy%$dQVS71tta)1q&GwDf41E zznuxI9+A)l++)oBurih+ydtFJ&O{0*>z}?O9hUo<@hVuJTU~s_jheVhPPJZst=|(1 zLh*SgW7`3ZK?i64r)&t+7@tTKaWbPX4E=d@ARYe>(N^m(hZFu0;%&ql#k>PDInWXi^I{~*A6_beMT%^S6{k~ zCOqZ{Vw`_qz5camYmfKj#_`uSpz}y=1Q;sQTNQd4JnfR?4Gl5qaKwFV72>5MYy)Ax zZ%Q#^TXOw(0lslE(Z=3Kp5mH@-@FxIbJuOfAtS`Wf6UatW^d9HG@A+=xkz`ya?uDb zf&4Vm7q=_9n@S57=&KqK*Pj~q8^i#nnsZ8>30q8CIu@NvfyIif@=tJG>LwBvqIPsI z(ayxpo-`vJ$UU=RU`_HT z!}Jq7ic1MKUs{A6z*e9)ZeZDp>+o>Ds_WzZ6=CF=TyjkE+jBpZqjF6t!37vO*T=_c zk;WAfr6DQ7f0QS>kDDAILY9>b>}&wJV-1hN~rHxMK38Ck^>O#Mtaejyyx5g`_xn z0+Qa80LdoJ3TH#LmsOuqD1giuD{D^1>HFi>Lb~-Pii~D@9e*MM7Sn& zvW5o7KX_(mlfY_RJvw)FzFh3#a};5J`1>q^fa!iB#<->q%;heW`FsJ}6PIL@58cEl z?VH~182b*Sq8lAGPJ1pCxy;;NK6*O7yWrv-1Jrc?KsDpcoP@?_jL-q-BVe|Zxua8d wG<$Pax}X0FFv_I!+_xYZr1cl7#tm1v7IRxy^7jLfXFcF_*yXhU09%a{8~^|S literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Windranger.png b/src/assets/heroes/Windranger.png new file mode 100644 index 0000000000000000000000000000000000000000..dc8b6d823359c84fd66f1b81d364617c4e48c02d GIT binary patch literal 2405 zcmV-r37YnaP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2>MAxK~z{r?Ur{` z6X_bpLqZ^w&;&JrNRy_Z)C4e)grc;iiFA}|2SKsHf`}-xN>M}egVtM%zeY&3rf=U8^khY%J2M&)Pgi;4;Q|}naW}y~S9#!%tzjaA zWX5Q;wx&u99gYP1ioH>FY%a>n-0`|2p-(tBc!>m^TNmJdv@>>br(>^yBJR4`pgnp4 zTE8*FU28ownzQh1F(2j%@oI{%i~uM6Wp=a!La1dk^|4N`p!$Rdjtanyuk%Es9P`8mcoTx>zk zrzz4=H_r|gR@zvgAd736EAZyRVRT=u#*N}F$kbHE?_QSJp*0b^4VCen=#PiQPFzr? zp}~)h_kZ=onBaNGqLGV`o?$?qZ&H!KnP^ws^tQqtO?f0)=;PHtj-uzzb$q;Y74L7J z!D_B4Dh=fECfE*1Y6?i4qKMnR*7(iY5I3|Kc#!CW7XenEgnFdK zo^aL42JP@Q8P*&XTsSiWdy5?L+lviYyI%J*182=NP;0FP9|;!@K4>JUV|65zbZ!l9Rv{z5(vLn_=^0Cc=~$Xql~!Cmu6My_gtty0GAvASYWF z)m3(Q(7qZcYCMpZ&L$Hwt+jE)b{YZ+Ve3gssLhQ>d8`|@m`_5EA0I8pi}AF+8n2p8 zBZugdco#$1PiJAiiX=+RScsS)gHS~Vt_t*UnKNZTs7Y4*0-UJip!Fv%N)9;U)F}ti z-RIk=VIhM83*vlNxD)1@>40r-3r7b_SWlF~R)1G?{o0J;*dR<}ii1rwsxT%AFG)keOf{V5Xpp*O#Zkb~L$gr2e;OJa=86pL)@5QIi-|xLSu|y@!^z|&2yn82 zzyBPhMg^jBeJDOWy@{&z3y~D;iI6~71o+Isrg=OpXX_x0Nr$g20~ymMpxk8g_y$r^ zX5!{GzNmPb0v$`KG^7yE`Wgck8nV6xZePZ;nqstlpNGdM3UN7a9saoX1J3P8KwH^X zv=nT__3T7Es>nv^N?*iGkVLGC95(4F@0PZ z#RQw#shw*dGKKxRdi~jC6czm`PE#=vGR+*2d6?<{7JQsNpUf?pQSTjWd zTXYq1eAc8<4WQ<@=yi#tlVzKf_YL@r0OVOr=b!mEL6uf(0n`uj_M*@$w@*(K{^`p)6iO3fY$GK;PSS$*tN(Dt}J;ZsLLZ$Um5u`CL)!1QJuBd zJ2X_|Ge{G+Z$+ZI##>}SI0|Ff0P+3CB0Ce*rmsY8W+Kx4oRRI~ilb3cs9v%HNzSuz zATbiBQkEjrMxV^xZK{iO!hk?Y78e59IAm{FI;8sUG^EX&4eg0C;L9_yS(^pE z5)+X*Y{CSS)EbKa0ELAv8)!_NAd|CTnYytqhS+kg685U;(hR-rUdtn?ZMu)A>{lLBNkHhSr8DPZoAD=;73Zr zB~An38_kfE<=HhAf7?@z( zAG@88;%eeGT%-k;5Cyn~E5kmXB{Cw6fE5-9Nar9Z(*cgkOpyV>aw*JSC;@h$1RN4X z%{?yiRJvIAG>*heV}azKTwmor?-jZO5u44CRN?~n92JDDFoj(l3%uyb;4PUvz+cW9 z@K|p^Y_&G{Vafvn5Bgwnq6hdPV&I00!^~IitBR9&rcPC$iHr5IF-_;qD>i4H5P-GIT0KxG%To?Vk!nT6R{V=Ylrgw=Zw6wvEu)X1BLQ$ X_BKZXaNbNT00000NkvXXu0mjfu)}mX literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Winter Wyvern.png b/src/assets/heroes/Winter Wyvern.png new file mode 100644 index 0000000000000000000000000000000000000000..e72fb453fc267bed429ffa7ffde4a18c31edfc35 GIT binary patch literal 2324 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 RmZ$ovPDHLkV1gD2dD#E} literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Wraith King.png b/src/assets/heroes/Wraith King.png new file mode 100644 index 0000000000000000000000000000000000000000..c4afa07e1e4f12d0e1801362c45e9eb5c9265860 GIT binary patch literal 1775 zcmYL~c{CgP62}w0wD!h+5!TzaEIc(myCg4(x+&?>PdTKjrcVu`9YwrVL2 zPX$FRl~|$(X$7^`8e36Y`z+Us_MH3vnBSZ^=lA)|%$e_*Uz+VrxFDZ29{>Olw6uWT z;&_EqJIBL0(OB#*#{to|;MW1w4A~V<@C(x9h6w=h2G4)w$<2v*?^`&b0RSP|sR4U} zUikn3Jc*Vt6MIK^S1!id9x2uZ7f@q4a$8Q`27yxf69g3Eg=n!#62By6nTe$tq5?pY zeN2eA(kgWQKd5x;mDTGq=_?T%Q943a-~)%C z5cG^IW0SHu&@V%?5-4aT^?xpT?);J6yqx=O>^|wr$^Oh+B(S{)5W{_fjMZk^*$81s z{urrkx z+U)vJ_b1D}iufi(c#y%zr;|cHYHwJ;aPiVs<5fteTA2A#%j4=h*uhF8(@1O;JUJms zL#fl79IJQ7Fb_J=u+G01b&f$(cW!|#=}w@DIylT~ucFQ79(`-4{$k{VYv-Ry?mg@z zLY>PNQD1QDY&4puFD_D~Sff~JCo^MQgosv$o|dTEqMH0$`6EB|l>};2n@0a=8OF>0 zg?vkS5^d-**YN{mR)P4kO))fNiP0&}_>nd3VkoxzS zfM}*vHpS%kNJI+V@Q^rf6gHe=TDTnL*Ep&to8<2%B|0YWFww0TfQ^B5C(f0c%g7a` zzst4q9@_R)Xh=M?^kMvs$u&t&x0Y1A(pNebRI9Lp-bfRkp4pOS$m8D4*gu@E?_(QDw#UwMcqA=vPx6-ffLKJ+qQ_(u?tqtTOBX&sFQBvj43L!f#l14A#U)c&RLOsyp*>2k@N-? zH=laW4)3NQ3ysW?+7S$W zabKP};}ZLA)oaTs%R~wN|A~cG%ihdEW7s%KMDt%Dbvi%Htf2w=wMbX3_1_7*o$5Xr zeTljT66x(#RM2Eru84lajq#g+ zI(b;21g610_7oVT1j1Un37Dn8woiM(OY-q1U zNofU3-vbL1xT%-WnbRKd;~;q&0of6M!16noC%~3S5+TYyy$1H!!L!( z@GrFh;phWXv1~~mnm4wldBWFVe_egLsYSduDlpYC|H6-waXZ6%e-_M#1IN>q2@@=? z%H*^pr#b!oJripTPckFz-NFZ{?}Pf(nD_RM)6e3T`N%&LGX8kGK?$??4M;eSA{8ju+#hJuP_q})u6<#Y$205o z4wwxY$a*#C9u2baSED}Pk%_w$twi9)-8CPpjU>!ecRNe!%`TLtH^xVa)p9B**}Octsy-2hst4(ILW;hq=aiT#wNa3qg?@3Kj8`}NFl%%{cTq7g zw~$#r*cJ+Wisn6NYt8!J!b~;!T9Vy^=)bjjWZg8< zZYz{ycqr=7*~i&f%t5Uxgn+MM;fEYtx)h O3Sen=6IOlQBmRH--feCG literal 0 HcmV?d00001 diff --git a/src/assets/heroes/Zeus.png b/src/assets/heroes/Zeus.png new file mode 100644 index 0000000000000000000000000000000000000000..c2bcb3ddf41f8377396970c5bc9c0d43d6fe7f65 GIT binary patch literal 1800 zcmZvddo&bi8^C8WB*vh1CuAmODMM)+#9&5q!-QIw#TewWl=~%x)|3jFvAKkG8&jqg za#U18I%ofQ-se1jJm)>X=ltI1y?NRJDQ1pokK z@HmW1nImNdD0J@dlNjX9r%b$kKA-6xJoeD3{rARFhBkY?>!B3a zQeW&D+?=ZmF1Vu2)p?wJSghkAOCjwrqc+vmzTln~Y5YSAgs9MO7!-e7FLtSQc6;gA zvAmwglV4QgcpJk$7kY$)L3VaeI06CU&c*j?Z@;T!_$QS*n0;}b*hm}ix~@s`aW#XM zISRps{#U& zIv0l9h^^&;7nZS?V`})(wmV-lC@fC);x4UYv``DRX?c>LY|H!}yu%NBK3$*gECB zKZL}{c~&_sF@g(q>1spqOBT9&M_b{Khp1U`M+`@hr7JDpMdgwhGcC8GGD_B3j?5d5 zloAp!elHdy9S(e4?I%GlPW_6gzGw~>Ga+|MTGwV0|&^$Ps=ae%wzzB&K_ad zGOM$!vVQ<+9xKzwL&+Q?jPEGA5#(Q57K<@sH~wD9q5c;5XHJEY zvu0}l<)kQ%Cfb<^okzeiUxO}nSPZx+aKR9HYRZd54H>T0&uf32$fYBWW+^Avgdoyq z*1eIV>J~S#(Y!6(WaZK85Kp0ZPv*kR>;$b?51TvFws} zo?`sD<}mE}TPr1KxNO7zyyIKHIb$snR&R@%Qx3e=tM=50OrF%Y@Nuq&9&Q9>s6!_C zO6DVrk<{V}waP*ooqQVjkrD|*=BIr{8`?CTZt6&JGwAT0mwTrueLWhbEwGRpe9JR7 zeZNP48F%MFtW9m2Vw5o<)2)tY8Z8*aqD-d}R>dcsnjJN@cbZrqQ{A9TTfHBeO*53co6#*3OMFd=qFNftxg$`1@p~s;WS{Yn zb%u6zfj#j{I(7cV|206#>&m4@l9#y_(tkler6&d@#crDL=4ct6%I0aBfZR$C3HFWE zl=E4Rll9XFJzT{9qU1Y$>jBR~G?_wKhM}yZ)%QNCPg?iUdM)b^TF5MpP+pG3Ug8n0m`pAWD1UskP z(d%Q-w>WlH^0__ENd+2LAb(~pXXO2u|KjKP<5@EiUmIb#@tU2m@@m7%cMHm#IRUjS zSA50L<@k9~Tc<6~rVKqEp8d3wP@s z2;BrSemy1^{#m0TF9gfah~^TSbSx6>eO6zpG$+oZ2j3R=^9K$74d=QFY=%I##vE`r z+cYvZroMRsoU5)^skELk?CFMAiG_bfg*+bH}?I@Cb@YjHA(mY=u_Zy*P`N8WMn zOGitlSKHiP9rrr@hC0Fh8M!{zo@fiVYcolnm4L#QJkvsc^8KcL%UXGYjSlgbJ~`AG zCfmAixNiCeq3uxm<0o!nWxOAKhRO{n4fE2AjF@-uaS4# z{h(U~8}We;9_eg9G_E%^cNB(RJN(F#v8x|gQ?%-69%!-|QG&qKd)e^}lJ$b83I;A0 zs%OSTsZT2E;!rgQn!GM$-mjP2eTsU|Z6!sEr#5GlxHnaQS?%ibes&UXrh%TYqSsC| z+LhX^0S*cV#=g8lxVt&kyAXQ~xLWn0FOL0F#AmIpRK=t{vH&TMcbSx4(eDMo+d5#X IY`l~I14*7}Qvd(} literal 0 HcmV?d00001 diff --git a/src/assets/heroes/hero 112.png b/src/assets/heroes/hero 112.png new file mode 100644 index 0000000000000000000000000000000000000000..90d37babe1c0bf3ff54a7e5ba1b04bbc9afa3bf0 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!pp>VJV@QPi+k=dZKwgu=|Mhtu4nWp{ol*h{ V42*LtJe`3&22WQ%mvv4FO#p-$AJ_l@ literal 0 HcmV?d00001 diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts new file mode 100644 index 0000000..3612073 --- /dev/null +++ b/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/src/environments/environment.ts b/src/environments/environment.ts new file mode 100644 index 0000000..f56ff47 --- /dev/null +++ b/src/environments/environment.ts @@ -0,0 +1,16 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: false +}; + +/* + * For easier debugging in development mode, you can import the following file + * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. + * + * This import should be commented out in production mode because it will have a negative impact + * on performance if an error is thrown. + */ +// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/src/favicon.ico b/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e0e8d5a5236bcfce634f65dbfc39b30eea149df5 GIT binary patch literal 21227 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 q+X_%;Ps)yJ>~9q%NvFpkiItq#db$AHB0sqi literal 0 HcmV?d00001 diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..e320e9c --- /dev/null +++ b/src/index.html @@ -0,0 +1,13 @@ + + + + + Dota 2 Protractor + + + + + + + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..c7b673c --- /dev/null +++ b/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/src/polyfills.ts b/src/polyfills.ts new file mode 100644 index 0000000..373f538 --- /dev/null +++ b/src/polyfills.ts @@ -0,0 +1,65 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** + * IE11 requires the following for NgClass support on SVG elements + */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). + */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js'; // Included with Angular CLI. + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/src/styles.scss b/src/styles.scss new file mode 100644 index 0000000..90d4ee0 --- /dev/null +++ b/src/styles.scss @@ -0,0 +1 @@ +/* You can add global styles to this file, and also import other style files */ diff --git a/src/test.ts b/src/test.ts new file mode 100644 index 0000000..2042356 --- /dev/null +++ b/src/test.ts @@ -0,0 +1,25 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..41886b3 --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,16 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [ "node" ], + "typeRoots": [ "../node_modules/@types" ] + }, + "files": [ + "src/main.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..df8fb55 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,31 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "target": "es2020", + "module": "es2020", + "lib": [ + "es2020", + "dom", + "esnext" + ] + }, + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/tsconfig.spec.json b/tsconfig.spec.json new file mode 100644 index 0000000..092345b --- /dev/null +++ b/tsconfig.spec.json @@ -0,0 +1,18 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "files": [ + "src/test.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +}