From 11a6e971d22f079c7c2e428a93605a8e88389f46 Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Tue, 17 Nov 2020 15:17:21 -0800 Subject: [PATCH 001/129] Ran rails nw --- .browserslistrc | 1 + .gitignore | 36 + .ruby-version | 1 + Gemfile | 78 + Gemfile.lock | 298 + Guardfile | 9 + Rakefile | 6 + app/assets/config/manifest.js | 2 + app/assets/images/.keep | 0 app/assets/stylesheets/application.scss | 18 + app/channels/application_cable/channel.rb | 4 + app/channels/application_cable/connection.rb | 4 + app/controllers/application_controller.rb | 2 + app/controllers/concerns/.keep | 0 app/helpers/application_helper.rb | 2 + app/javascript/channels/consumer.js | 6 + app/javascript/channels/index.js | 5 + app/javascript/packs/application.js | 19 + app/jobs/application_job.rb | 7 + app/mailers/application_mailer.rb | 4 + app/models/application_record.rb | 3 + app/models/concerns/.keep | 0 app/views/layouts/application.html.erb | 15 + app/views/layouts/mailer.html.erb | 13 + app/views/layouts/mailer.text.erb | 1 + babel.config.js | 72 + bin/bundle | 114 + bin/rails | 9 + bin/rake | 9 + bin/setup | 36 + bin/spring | 17 + bin/webpack | 18 + bin/webpack-dev-server | 18 + bin/yarn | 11 + config.ru | 5 + config/application.rb | 23 + config/boot.rb | 4 + config/cable.yml | 10 + config/credentials.yml.enc | 1 + config/database.yml | 85 + config/environment.rb | 5 + config/environments/development.rb | 62 + config/environments/production.rb | 112 + config/environments/test.rb | 49 + config/initializers/action_view.rb | 1 + .../application_controller_renderer.rb | 8 + config/initializers/assets.rb | 14 + config/initializers/backtrace_silencers.rb | 7 + .../initializers/content_security_policy.rb | 30 + config/initializers/cookies_serializer.rb | 5 + .../initializers/filter_parameter_logging.rb | 4 + config/initializers/inflections.rb | 16 + config/initializers/mime_types.rb | 4 + config/initializers/wrap_parameters.rb | 14 + config/locales/en.yml | 33 + config/puma.rb | 38 + config/routes.rb | 3 + config/spring.rb | 6 + config/storage.yml | 34 + config/webpack/development.js | 5 + config/webpack/environment.js | 13 + config/webpack/production.js | 5 + config/webpack/test.js | 5 + config/webpacker.yml | 96 + db/seeds.rb | 7 + lib/assets/.keep | 0 lib/tasks/.keep | 0 log/.keep | 0 package.json | 18 + postcss.config.js | 12 + public/404.html | 67 + public/422.html | 67 + public/500.html | 66 + public/apple-touch-icon-precomposed.png | 0 public/apple-touch-icon.png | 0 public/favicon.ico | 0 public/robots.txt | 1 + storage/.keep | 0 test/application_system_test_case.rb | 5 + .../application_cable/connection_test.rb | 11 + test/controllers/.keep | 0 test/fixtures/.keep | 0 test/fixtures/files/.keep | 0 test/helpers/.keep | 0 test/integration/.keep | 0 test/mailers/.keep | 0 test/models/.keep | 0 test/system/.keep | 0 test/test_helper.rb | 21 + tmp/.keep | 0 tmp/pids/.keep | 0 vendor/.keep | 0 yarn.lock | 7638 +++++++++++++++++ 93 files changed, 9448 insertions(+) create mode 100644 .browserslistrc create mode 100644 .gitignore create mode 100644 .ruby-version create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 Guardfile create mode 100644 Rakefile create mode 100644 app/assets/config/manifest.js create mode 100644 app/assets/images/.keep create mode 100644 app/assets/stylesheets/application.scss create mode 100644 app/channels/application_cable/channel.rb create mode 100644 app/channels/application_cable/connection.rb create mode 100644 app/controllers/application_controller.rb create mode 100644 app/controllers/concerns/.keep create mode 100644 app/helpers/application_helper.rb create mode 100644 app/javascript/channels/consumer.js create mode 100644 app/javascript/channels/index.js create mode 100644 app/javascript/packs/application.js create mode 100644 app/jobs/application_job.rb create mode 100644 app/mailers/application_mailer.rb create mode 100644 app/models/application_record.rb create mode 100644 app/models/concerns/.keep create mode 100644 app/views/layouts/application.html.erb create mode 100644 app/views/layouts/mailer.html.erb create mode 100644 app/views/layouts/mailer.text.erb create mode 100644 babel.config.js create mode 100755 bin/bundle create mode 100755 bin/rails create mode 100755 bin/rake create mode 100755 bin/setup create mode 100755 bin/spring create mode 100755 bin/webpack create mode 100755 bin/webpack-dev-server create mode 100755 bin/yarn create mode 100644 config.ru create mode 100644 config/application.rb create mode 100644 config/boot.rb create mode 100644 config/cable.yml create mode 100644 config/credentials.yml.enc create mode 100644 config/database.yml create mode 100644 config/environment.rb create mode 100644 config/environments/development.rb create mode 100644 config/environments/production.rb create mode 100644 config/environments/test.rb create mode 100644 config/initializers/action_view.rb create mode 100644 config/initializers/application_controller_renderer.rb create mode 100644 config/initializers/assets.rb create mode 100644 config/initializers/backtrace_silencers.rb create mode 100644 config/initializers/content_security_policy.rb create mode 100644 config/initializers/cookies_serializer.rb create mode 100644 config/initializers/filter_parameter_logging.rb create mode 100644 config/initializers/inflections.rb create mode 100644 config/initializers/mime_types.rb create mode 100644 config/initializers/wrap_parameters.rb create mode 100644 config/locales/en.yml create mode 100644 config/puma.rb create mode 100644 config/routes.rb create mode 100644 config/spring.rb create mode 100644 config/storage.yml create mode 100644 config/webpack/development.js create mode 100644 config/webpack/environment.js create mode 100644 config/webpack/production.js create mode 100644 config/webpack/test.js create mode 100644 config/webpacker.yml create mode 100644 db/seeds.rb create mode 100644 lib/assets/.keep create mode 100644 lib/tasks/.keep create mode 100644 log/.keep create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 public/404.html create mode 100644 public/422.html create mode 100644 public/500.html create mode 100644 public/apple-touch-icon-precomposed.png create mode 100644 public/apple-touch-icon.png create mode 100644 public/favicon.ico create mode 100644 public/robots.txt create mode 100644 storage/.keep create mode 100644 test/application_system_test_case.rb create mode 100644 test/channels/application_cable/connection_test.rb create mode 100644 test/controllers/.keep create mode 100644 test/fixtures/.keep create mode 100644 test/fixtures/files/.keep create mode 100644 test/helpers/.keep create mode 100644 test/integration/.keep create mode 100644 test/mailers/.keep create mode 100644 test/models/.keep create mode 100644 test/system/.keep create mode 100644 test/test_helper.rb create mode 100644 tmp/.keep create mode 100644 tmp/pids/.keep create mode 100644 vendor/.keep create mode 100644 yarn.lock diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000000..e94f8140cc --- /dev/null +++ b/.browserslistrc @@ -0,0 +1 @@ +defaults diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..f22dd34725 --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files for more about ignoring files. +# +# If you find yourself ignoring temporary files generated by your text editor +# or operating system, you probably want to add a global ignore instead: +# git config --global core.excludesfile '~/.gitignore_global' + +# Ignore bundler config. +/.bundle + +# Ignore all logfiles and tempfiles. +/log/* +/tmp/* +!/log/.keep +!/tmp/.keep + +# Ignore pidfiles, but keep the directory. +/tmp/pids/* +!/tmp/pids/ +!/tmp/pids/.keep + +# Ignore uploaded files in development. +/storage/* +!/storage/.keep + +/public/assets +.byebug_history + +# Ignore master key for decrypting credentials and more. +/config/master.key + +/public/packs +/public/packs-test +/node_modules +/yarn-error.log +yarn-debug.log* +.yarn-integrity diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000000..57cf282ebb --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +2.6.5 diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000000..48cdee19cb --- /dev/null +++ b/Gemfile @@ -0,0 +1,78 @@ +source 'https://rubygems.org' +git_source(:github) { |repo| "https://github.com/#{repo}.git" } + +ruby '2.6.5' + +# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' +gem 'rails', '~> 6.0.3', '>= 6.0.3.4' +# Use postgresql as the database for Active Record +gem 'pg', '>= 0.18', '< 2.0' +# Use Puma as the app server +gem 'puma', '~> 4.1' +# Use SCSS for stylesheets +gem 'sass-rails', '>= 6' +# Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker +gem 'webpacker', '~> 4.0' +# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks +gem 'turbolinks', '~> 5' +# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder +gem 'jbuilder', '~> 2.7' +# Use Redis adapter to run Action Cable in production +# gem 'redis', '~> 4.0' +# Use Active Model has_secure_password +# gem 'bcrypt', '~> 3.1.7' + +# Use Active Storage variant +# gem 'image_processing', '~> 1.2' + +# Reduces boot times through caching; required in config/boot.rb +gem 'bootsnap', '>= 1.4.2', require: false + +group :development, :test do + # Call 'byebug' anywhere in the code to stop execution and get a debugger console + gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] +end + +group :development do + # Access an interactive console on exception pages or by calling 'console' anywhere in the code. + gem 'web-console', '>= 3.3.0' + gem 'listen', '~> 3.2' + # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring + gem 'spring' + gem 'spring-watcher-listen', '~> 2.0.0' +end + +group :test do + # Adds support for Capybara system testing and selenium driver + gem 'capybara', '>= 2.15' + gem 'selenium-webdriver' + # Easy installation and use of web drivers to run system tests with browsers + gem 'webdrivers' +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] + +gem 'jquery-rails' +gem 'jquery-turbolinks' +gem 'bootstrap' +group :development, :test do + gem 'pry-rails' +end + +group :development do + gem 'guard' + gem 'guard-minitest' + gem 'debase', '>= 0.2.4.1' + gem 'ruby-debug-ide', '>= 0.7.0' +end + +group :development do + gem 'better_errors' + gem 'binding_of_caller' +end + +group :test do + gem 'minitest-rails' + gem 'minitest-reporters' +end diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000000..6283750b6c --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,298 @@ +GEM + remote: https://rubygems.org/ + specs: + actioncable (6.0.3.4) + actionpack (= 6.0.3.4) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.0.3.4) + actionpack (= 6.0.3.4) + activejob (= 6.0.3.4) + activerecord (= 6.0.3.4) + activestorage (= 6.0.3.4) + activesupport (= 6.0.3.4) + mail (>= 2.7.1) + actionmailer (6.0.3.4) + actionpack (= 6.0.3.4) + actionview (= 6.0.3.4) + activejob (= 6.0.3.4) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.0.3.4) + actionview (= 6.0.3.4) + activesupport (= 6.0.3.4) + rack (~> 2.0, >= 2.0.8) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.0.3.4) + actionpack (= 6.0.3.4) + activerecord (= 6.0.3.4) + activestorage (= 6.0.3.4) + activesupport (= 6.0.3.4) + nokogiri (>= 1.8.5) + actionview (6.0.3.4) + activesupport (= 6.0.3.4) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.0.3.4) + activesupport (= 6.0.3.4) + globalid (>= 0.3.6) + activemodel (6.0.3.4) + activesupport (= 6.0.3.4) + activerecord (6.0.3.4) + activemodel (= 6.0.3.4) + activesupport (= 6.0.3.4) + activestorage (6.0.3.4) + actionpack (= 6.0.3.4) + activejob (= 6.0.3.4) + activerecord (= 6.0.3.4) + marcel (~> 0.3.1) + activesupport (6.0.3.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + zeitwerk (~> 2.2, >= 2.2.2) + addressable (2.7.0) + public_suffix (>= 2.0.2, < 5.0) + ansi (1.5.0) + autoprefixer-rails (10.0.2.0) + execjs + better_errors (2.9.1) + coderay (>= 1.0.0) + erubi (>= 1.0.0) + rack (>= 0.9.0) + bindex (0.8.1) + binding_of_caller (0.8.0) + debug_inspector (>= 0.0.1) + bootsnap (1.5.1) + msgpack (~> 1.0) + bootstrap (4.5.3) + autoprefixer-rails (>= 9.1.0) + popper_js (>= 1.14.3, < 2) + sassc-rails (>= 2.0.0) + builder (3.2.4) + byebug (11.1.3) + capybara (3.33.0) + addressable + mini_mime (>= 0.1.3) + nokogiri (~> 1.8) + rack (>= 1.6.0) + rack-test (>= 0.6.3) + regexp_parser (~> 1.5) + xpath (~> 3.2) + childprocess (3.0.0) + coderay (1.1.3) + concurrent-ruby (1.1.7) + crass (1.0.6) + debase (2.3.0) + debase-ruby_core_source (~> 0.10.10) + debase-ruby_core_source (0.10.11) + debug_inspector (0.0.3) + erubi (1.10.0) + execjs (2.7.0) + ffi (1.13.1) + formatador (0.2.5) + globalid (0.4.2) + activesupport (>= 4.2.0) + guard (2.16.2) + formatador (>= 0.2.4) + listen (>= 2.7, < 4.0) + lumberjack (>= 1.0.12, < 2.0) + nenv (~> 0.1) + notiffany (~> 0.0) + pry (>= 0.9.12) + shellany (~> 0.0) + thor (>= 0.18.1) + guard-compat (1.2.1) + guard-minitest (2.4.6) + guard-compat (~> 1.2) + minitest (>= 3.0) + i18n (1.8.5) + concurrent-ruby (~> 1.0) + jbuilder (2.10.1) + activesupport (>= 5.0.0) + jquery-rails (4.4.0) + rails-dom-testing (>= 1, < 3) + railties (>= 4.2.0) + thor (>= 0.14, < 2.0) + jquery-turbolinks (2.1.0) + railties (>= 3.1.0) + turbolinks + listen (3.3.1) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + loofah (2.7.0) + crass (~> 1.0.2) + nokogiri (>= 1.5.9) + lumberjack (1.2.8) + mail (2.7.1) + mini_mime (>= 0.1.1) + marcel (0.3.3) + mimemagic (~> 0.3.2) + method_source (1.0.0) + mimemagic (0.3.5) + mini_mime (1.0.2) + mini_portile2 (2.4.0) + minitest (5.14.2) + minitest-rails (6.0.1) + minitest (~> 5.10) + railties (~> 6.0.0) + minitest-reporters (1.4.2) + ansi + builder + minitest (>= 5.0) + ruby-progressbar + msgpack (1.3.3) + nenv (0.3.0) + nio4r (2.5.4) + nokogiri (1.10.10) + mini_portile2 (~> 2.4.0) + notiffany (0.1.3) + nenv (~> 0.1) + shellany (~> 0.0) + pg (1.2.3) + popper_js (1.16.0) + pry (0.13.1) + coderay (~> 1.1) + method_source (~> 1.0) + pry-rails (0.3.9) + pry (>= 0.10.4) + public_suffix (4.0.6) + puma (4.3.6) + nio4r (~> 2.0) + rack (2.2.3) + rack-proxy (0.6.5) + rack + rack-test (1.1.0) + rack (>= 1.0, < 3) + rails (6.0.3.4) + actioncable (= 6.0.3.4) + actionmailbox (= 6.0.3.4) + actionmailer (= 6.0.3.4) + actionpack (= 6.0.3.4) + actiontext (= 6.0.3.4) + actionview (= 6.0.3.4) + activejob (= 6.0.3.4) + activemodel (= 6.0.3.4) + activerecord (= 6.0.3.4) + activestorage (= 6.0.3.4) + activesupport (= 6.0.3.4) + bundler (>= 1.3.0) + railties (= 6.0.3.4) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.0.3) + activesupport (>= 4.2.0) + nokogiri (>= 1.6) + rails-html-sanitizer (1.3.0) + loofah (~> 2.3) + railties (6.0.3.4) + actionpack (= 6.0.3.4) + activesupport (= 6.0.3.4) + method_source + rake (>= 0.8.7) + thor (>= 0.20.3, < 2.0) + rake (13.0.1) + rb-fsevent (0.10.4) + rb-inotify (0.10.1) + ffi (~> 1.0) + regexp_parser (1.8.2) + ruby-debug-ide (2.3.0) + debase (~> 2.3.0) + ruby-progressbar (1.10.1) + rubyzip (2.3.0) + sass-rails (6.0.0) + sassc-rails (~> 2.1, >= 2.1.1) + sassc (2.4.0) + ffi (~> 1.9) + sassc-rails (2.1.2) + railties (>= 4.0.0) + sassc (>= 2.0) + sprockets (> 3.0) + sprockets-rails + tilt + selenium-webdriver (3.142.7) + childprocess (>= 0.5, < 4.0) + rubyzip (>= 1.2.2) + shellany (0.0.1) + spring (2.1.1) + spring-watcher-listen (2.0.1) + listen (>= 2.7, < 4.0) + spring (>= 1.2, < 3.0) + sprockets (4.0.2) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.2.2) + actionpack (>= 4.0) + activesupport (>= 4.0) + sprockets (>= 3.0.0) + thor (1.0.1) + thread_safe (0.3.6) + tilt (2.0.10) + turbolinks (5.2.1) + turbolinks-source (~> 5.2) + turbolinks-source (5.2.0) + tzinfo (1.2.8) + thread_safe (~> 0.1) + web-console (4.1.0) + actionview (>= 6.0.0) + activemodel (>= 6.0.0) + bindex (>= 0.4.0) + railties (>= 6.0.0) + webdrivers (4.4.1) + nokogiri (~> 1.6) + rubyzip (>= 1.3.0) + selenium-webdriver (>= 3.0, < 4.0) + webpacker (4.3.0) + activesupport (>= 4.2) + rack-proxy (>= 0.6.1) + railties (>= 4.2) + websocket-driver (0.7.3) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + xpath (3.2.0) + nokogiri (~> 1.8) + zeitwerk (2.4.1) + +PLATFORMS + ruby + +DEPENDENCIES + better_errors + binding_of_caller + bootsnap (>= 1.4.2) + bootstrap + byebug + capybara (>= 2.15) + debase (>= 0.2.4.1) + guard + guard-minitest + jbuilder (~> 2.7) + jquery-rails + jquery-turbolinks + listen (~> 3.2) + minitest-rails + minitest-reporters + pg (>= 0.18, < 2.0) + pry-rails + puma (~> 4.1) + rails (~> 6.0.3, >= 6.0.3.4) + ruby-debug-ide (>= 0.7.0) + sass-rails (>= 6) + selenium-webdriver + spring + spring-watcher-listen (~> 2.0.0) + turbolinks (~> 5) + tzinfo-data + web-console (>= 3.3.0) + webdrivers + webpacker (~> 4.0) + +RUBY VERSION + ruby 2.6.5p114 + +BUNDLED WITH + 2.1.4 diff --git a/Guardfile b/Guardfile new file mode 100644 index 0000000000..e34f706f4a --- /dev/null +++ b/Guardfile @@ -0,0 +1,9 @@ +guard :minitest, autorun: false, spring: true do + watch(%r{^app/(.+).rb$}) { |m| "test/#{m[1]}_test.rb" } + watch(%r{^app/controllers/application_controller.rb$}) { 'test/controllers' } + watch(%r{^app/controllers/(.+)_controller.rb$}) { |m| "test/integration/#{m[1]}_test.rb" } + watch(%r{^app/views/(.+)_mailer/.+}) { |m| "test/mailers/#{m[1]}_mailer_test.rb" } + watch(%r{^lib/(.+).rb$}) { |m| "test/lib/#{m[1]}_test.rb" } + watch(%r{^test/.+_test.rb$}) + watch(%r{^test/test_helper.rb$}) { 'test' } +end diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000000..e85f913914 --- /dev/null +++ b/Rakefile @@ -0,0 +1,6 @@ +# Add your own tasks in files placed in lib/tasks ending in .rake, +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. + +require_relative 'config/application' + +Rails.application.load_tasks diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js new file mode 100644 index 0000000000..591819335f --- /dev/null +++ b/app/assets/config/manifest.js @@ -0,0 +1,2 @@ +//= link_tree ../images +//= link_directory ../stylesheets .css diff --git a/app/assets/images/.keep b/app/assets/images/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss new file mode 100644 index 0000000000..17320fb11e --- /dev/null +++ b/app/assets/stylesheets/application.scss @@ -0,0 +1,18 @@ +/* + * This is a manifest file that'll be compiled into application.css, which will include all the files + * listed below. + * + * Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's + * vendor/assets/stylesheets directory can be referenced here using a relative path. + * + * You're free to add application-wide styles to this file and they'll appear at the bottom of the + * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS + * files in this directory. Styles in this file should be added after the last require_* statement. + * It is generally better to create a new file per style scope. + * + */ + +/* Custom bootstrap variables must be set or imported *before* bootstrap. */ +@import "bootstrap"; + +@import "**/*"; diff --git a/app/channels/application_cable/channel.rb b/app/channels/application_cable/channel.rb new file mode 100644 index 0000000000..d672697283 --- /dev/null +++ b/app/channels/application_cable/channel.rb @@ -0,0 +1,4 @@ +module ApplicationCable + class Channel < ActionCable::Channel::Base + end +end diff --git a/app/channels/application_cable/connection.rb b/app/channels/application_cable/connection.rb new file mode 100644 index 0000000000..0ff5442f47 --- /dev/null +++ b/app/channels/application_cable/connection.rb @@ -0,0 +1,4 @@ +module ApplicationCable + class Connection < ActionCable::Connection::Base + end +end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb new file mode 100644 index 0000000000..09705d12ab --- /dev/null +++ b/app/controllers/application_controller.rb @@ -0,0 +1,2 @@ +class ApplicationController < ActionController::Base +end diff --git a/app/controllers/concerns/.keep b/app/controllers/concerns/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb new file mode 100644 index 0000000000..de6be7945c --- /dev/null +++ b/app/helpers/application_helper.rb @@ -0,0 +1,2 @@ +module ApplicationHelper +end diff --git a/app/javascript/channels/consumer.js b/app/javascript/channels/consumer.js new file mode 100644 index 0000000000..0eceb59b18 --- /dev/null +++ b/app/javascript/channels/consumer.js @@ -0,0 +1,6 @@ +// Action Cable provides the framework to deal with WebSockets in Rails. +// You can generate new channels where WebSocket features live using the `rails generate channel` command. + +import { createConsumer } from "@rails/actioncable" + +export default createConsumer() diff --git a/app/javascript/channels/index.js b/app/javascript/channels/index.js new file mode 100644 index 0000000000..0cfcf74919 --- /dev/null +++ b/app/javascript/channels/index.js @@ -0,0 +1,5 @@ +// Load all the channels within this directory and all subdirectories. +// Channel files must be named *_channel.js. + +const channels = require.context('.', true, /_channel\.js$/) +channels.keys().forEach(channels) diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js new file mode 100644 index 0000000000..529f85b082 --- /dev/null +++ b/app/javascript/packs/application.js @@ -0,0 +1,19 @@ +// This file is automatically compiled by Webpack, along with any other files +// present in this directory. You're encouraged to place your actual application logic in +// a relevant structure within app/javascript and only use these pack files to reference +// that code so it'll be compiled. + +require("@rails/ujs").start() +require("turbolinks").start() +require("@rails/activestorage").start() +require("channels") + +import "bootstrap" + + +// Uncomment to copy all static images under ../images to the output folder and reference +// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>) +// or the `imagePath` JavaScript helper below. +// +// const images = require.context('../images', true) +// const imagePath = (name) => images(name, true) diff --git a/app/jobs/application_job.rb b/app/jobs/application_job.rb new file mode 100644 index 0000000000..d394c3d106 --- /dev/null +++ b/app/jobs/application_job.rb @@ -0,0 +1,7 @@ +class ApplicationJob < ActiveJob::Base + # Automatically retry jobs that encountered a deadlock + # retry_on ActiveRecord::Deadlocked + + # Most jobs are safe to ignore if the underlying records are no longer available + # discard_on ActiveJob::DeserializationError +end diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb new file mode 100644 index 0000000000..286b2239d1 --- /dev/null +++ b/app/mailers/application_mailer.rb @@ -0,0 +1,4 @@ +class ApplicationMailer < ActionMailer::Base + default from: 'from@example.com' + layout 'mailer' +end diff --git a/app/models/application_record.rb b/app/models/application_record.rb new file mode 100644 index 0000000000..10a4cba84d --- /dev/null +++ b/app/models/application_record.rb @@ -0,0 +1,3 @@ +class ApplicationRecord < ActiveRecord::Base + self.abstract_class = true +end diff --git a/app/models/concerns/.keep b/app/models/concerns/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb new file mode 100644 index 0000000000..74961e61a4 --- /dev/null +++ b/app/views/layouts/application.html.erb @@ -0,0 +1,15 @@ + + + + Betsy + <%= csrf_meta_tags %> + <%= csp_meta_tag %> + + <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> + <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> + + + + <%= yield %> + + diff --git a/app/views/layouts/mailer.html.erb b/app/views/layouts/mailer.html.erb new file mode 100644 index 0000000000..cbd34d2e9d --- /dev/null +++ b/app/views/layouts/mailer.html.erb @@ -0,0 +1,13 @@ + + + + + + + + + <%= yield %> + + diff --git a/app/views/layouts/mailer.text.erb b/app/views/layouts/mailer.text.erb new file mode 100644 index 0000000000..37f0bddbd7 --- /dev/null +++ b/app/views/layouts/mailer.text.erb @@ -0,0 +1 @@ +<%= yield %> diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000000..12f98da5af --- /dev/null +++ b/babel.config.js @@ -0,0 +1,72 @@ +module.exports = function(api) { + var validEnv = ['development', 'test', 'production'] + var currentEnv = api.env() + var isDevelopmentEnv = api.env('development') + var isProductionEnv = api.env('production') + var isTestEnv = api.env('test') + + if (!validEnv.includes(currentEnv)) { + throw new Error( + 'Please specify a valid `NODE_ENV` or ' + + '`BABEL_ENV` environment variables. Valid values are "development", ' + + '"test", and "production". Instead, received: ' + + JSON.stringify(currentEnv) + + '.' + ) + } + + return { + presets: [ + isTestEnv && [ + '@babel/preset-env', + { + targets: { + node: 'current' + } + } + ], + (isProductionEnv || isDevelopmentEnv) && [ + '@babel/preset-env', + { + forceAllTransforms: true, + useBuiltIns: 'entry', + corejs: 3, + modules: false, + exclude: ['transform-typeof-symbol'] + } + ] + ].filter(Boolean), + plugins: [ + 'babel-plugin-macros', + '@babel/plugin-syntax-dynamic-import', + isTestEnv && 'babel-plugin-dynamic-import-node', + '@babel/plugin-transform-destructuring', + [ + '@babel/plugin-proposal-class-properties', + { + loose: true + } + ], + [ + '@babel/plugin-proposal-object-rest-spread', + { + useBuiltIns: true + } + ], + [ + '@babel/plugin-transform-runtime', + { + helpers: false, + regenerator: true, + corejs: false + } + ], + [ + '@babel/plugin-transform-regenerator', + { + async: false + } + ] + ].filter(Boolean) + } +} diff --git a/bin/bundle b/bin/bundle new file mode 100755 index 0000000000..a71368e323 --- /dev/null +++ b/bin/bundle @@ -0,0 +1,114 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'bundle' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require "rubygems" + +m = Module.new do + module_function + + def invoked_as_script? + File.expand_path($0) == File.expand_path(__FILE__) + end + + def env_var_version + ENV["BUNDLER_VERSION"] + end + + def cli_arg_version + return unless invoked_as_script? # don't want to hijack other binstubs + return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update` + bundler_version = nil + update_index = nil + ARGV.each_with_index do |a, i| + if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN + bundler_version = a + end + next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/ + bundler_version = $1 + update_index = i + end + bundler_version + end + + def gemfile + gemfile = ENV["BUNDLE_GEMFILE"] + return gemfile if gemfile && !gemfile.empty? + + File.expand_path("../../Gemfile", __FILE__) + end + + def lockfile + lockfile = + case File.basename(gemfile) + when "gems.rb" then gemfile.sub(/\.rb$/, gemfile) + else "#{gemfile}.lock" + end + File.expand_path(lockfile) + end + + def lockfile_version + return unless File.file?(lockfile) + lockfile_contents = File.read(lockfile) + return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/ + Regexp.last_match(1) + end + + def bundler_version + @bundler_version ||= + env_var_version || cli_arg_version || + lockfile_version + end + + def bundler_requirement + return "#{Gem::Requirement.default}.a" unless bundler_version + + bundler_gem_version = Gem::Version.new(bundler_version) + + requirement = bundler_gem_version.approximate_recommendation + + return requirement unless Gem::Version.new(Gem::VERSION) < Gem::Version.new("2.7.0") + + requirement += ".a" if bundler_gem_version.prerelease? + + requirement + end + + def load_bundler! + ENV["BUNDLE_GEMFILE"] ||= gemfile + + activate_bundler + end + + def activate_bundler + gem_error = activation_error_handling do + gem "bundler", bundler_requirement + end + return if gem_error.nil? + require_error = activation_error_handling do + require "bundler/version" + end + return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION)) + warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`" + exit 42 + end + + def activation_error_handling + yield + nil + rescue StandardError, LoadError => e + e + end +end + +m.load_bundler! + +if m.invoked_as_script? + load Gem.bin_path("bundler", "bundle") +end diff --git a/bin/rails b/bin/rails new file mode 100755 index 0000000000..5badb2fde0 --- /dev/null +++ b/bin/rails @@ -0,0 +1,9 @@ +#!/usr/bin/env ruby +begin + load File.expand_path('../spring', __FILE__) +rescue LoadError => e + raise unless e.message.include?('spring') +end +APP_PATH = File.expand_path('../config/application', __dir__) +require_relative '../config/boot' +require 'rails/commands' diff --git a/bin/rake b/bin/rake new file mode 100755 index 0000000000..d87d5f5781 --- /dev/null +++ b/bin/rake @@ -0,0 +1,9 @@ +#!/usr/bin/env ruby +begin + load File.expand_path('../spring', __FILE__) +rescue LoadError => e + raise unless e.message.include?('spring') +end +require_relative '../config/boot' +require 'rake' +Rake.application.run diff --git a/bin/setup b/bin/setup new file mode 100755 index 0000000000..5853b5ea87 --- /dev/null +++ b/bin/setup @@ -0,0 +1,36 @@ +#!/usr/bin/env ruby +require 'fileutils' + +# path to your application root. +APP_ROOT = File.expand_path('..', __dir__) + +def system!(*args) + system(*args) || abort("\n== Command #{args} failed ==") +end + +FileUtils.chdir APP_ROOT do + # This script is a way to setup or update your development environment automatically. + # This script is idempotent, so that you can run it at anytime and get an expectable outcome. + # Add necessary setup steps to this file. + + puts '== Installing dependencies ==' + system! 'gem install bundler --conservative' + system('bundle check') || system!('bundle install') + + # Install JavaScript dependencies + # system('bin/yarn') + + # puts "\n== Copying sample files ==" + # unless File.exist?('config/database.yml') + # FileUtils.cp 'config/database.yml.sample', 'config/database.yml' + # end + + puts "\n== Preparing database ==" + system! 'bin/rails db:prepare' + + puts "\n== Removing old logs and tempfiles ==" + system! 'bin/rails log:clear tmp:clear' + + puts "\n== Restarting application server ==" + system! 'bin/rails restart' +end diff --git a/bin/spring b/bin/spring new file mode 100755 index 0000000000..d89ee495fa --- /dev/null +++ b/bin/spring @@ -0,0 +1,17 @@ +#!/usr/bin/env ruby + +# This file loads Spring without using Bundler, in order to be fast. +# It gets overwritten when you run the `spring binstub` command. + +unless defined?(Spring) + require 'rubygems' + require 'bundler' + + lockfile = Bundler::LockfileParser.new(Bundler.default_lockfile.read) + spring = lockfile.specs.detect { |spec| spec.name == 'spring' } + if spring + Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path + gem 'spring', spring.version + require 'spring/binstub' + end +end diff --git a/bin/webpack b/bin/webpack new file mode 100755 index 0000000000..1031168d01 --- /dev/null +++ b/bin/webpack @@ -0,0 +1,18 @@ +#!/usr/bin/env ruby + +ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development" +ENV["NODE_ENV"] ||= "development" + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +require "bundler/setup" + +require "webpacker" +require "webpacker/webpack_runner" + +APP_ROOT = File.expand_path("..", __dir__) +Dir.chdir(APP_ROOT) do + Webpacker::WebpackRunner.run(ARGV) +end diff --git a/bin/webpack-dev-server b/bin/webpack-dev-server new file mode 100755 index 0000000000..dd9662737a --- /dev/null +++ b/bin/webpack-dev-server @@ -0,0 +1,18 @@ +#!/usr/bin/env ruby + +ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development" +ENV["NODE_ENV"] ||= "development" + +require "pathname" +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +require "bundler/setup" + +require "webpacker" +require "webpacker/dev_server_runner" + +APP_ROOT = File.expand_path("..", __dir__) +Dir.chdir(APP_ROOT) do + Webpacker::DevServerRunner.run(ARGV) +end diff --git a/bin/yarn b/bin/yarn new file mode 100755 index 0000000000..460dd565b4 --- /dev/null +++ b/bin/yarn @@ -0,0 +1,11 @@ +#!/usr/bin/env ruby +APP_ROOT = File.expand_path('..', __dir__) +Dir.chdir(APP_ROOT) do + begin + exec "yarnpkg", *ARGV + rescue Errno::ENOENT + $stderr.puts "Yarn executable was not detected in the system." + $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install" + exit 1 + end +end diff --git a/config.ru b/config.ru new file mode 100644 index 0000000000..f7ba0b527b --- /dev/null +++ b/config.ru @@ -0,0 +1,5 @@ +# This file is used by Rack-based servers to start the application. + +require_relative 'config/environment' + +run Rails.application diff --git a/config/application.rb b/config/application.rb new file mode 100644 index 0000000000..39167e2e9a --- /dev/null +++ b/config/application.rb @@ -0,0 +1,23 @@ +require_relative 'boot' + +require 'rails/all' + +# Require the gems listed in Gemfile, including any gems +# you've limited to :test, :development, or :production. +Bundler.require(*Rails.groups) + +module Betsy + class Application < Rails::Application + config.generators do |g| + # Force new test files to be generated in the minitest-spec style + g.test_framework :minitest, spec: true + end + # Initialize configuration defaults for originally generated Rails version. + config.load_defaults 6.0 + + # Settings in config/environments/* take precedence over those specified here. + # Application configuration can go into files in config/initializers + # -- all .rb files in that directory are automatically loaded after loading + # the framework and any gems in your application. + end +end diff --git a/config/boot.rb b/config/boot.rb new file mode 100644 index 0000000000..b9e460cef3 --- /dev/null +++ b/config/boot.rb @@ -0,0 +1,4 @@ +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) + +require 'bundler/setup' # Set up gems listed in the Gemfile. +require 'bootsnap/setup' # Speed up boot time by caching expensive operations. diff --git a/config/cable.yml b/config/cable.yml new file mode 100644 index 0000000000..f2a452f546 --- /dev/null +++ b/config/cable.yml @@ -0,0 +1,10 @@ +development: + adapter: async + +test: + adapter: test + +production: + adapter: redis + url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %> + channel_prefix: betsy_production diff --git a/config/credentials.yml.enc b/config/credentials.yml.enc new file mode 100644 index 0000000000..4d9fbdc66f --- /dev/null +++ b/config/credentials.yml.enc @@ -0,0 +1 @@ +PV8fzrtT5NErGrTwQZC4y+DNX/fRvG0cs5ivMVfcHnieaLSWQ9cpysDb5q2ug6sBZO3YeTwkGasnRdlfNQuY8YbJLNiUNIrrU6sqwvCK/sE71kg6FNZ5If9t0eJwJBpFU0u8b5eRZxoAwqTyV7aORe7BoM2CGYh2n04m2uYTf/d/RIWlmXZTYVeHhNqoGbHp6Cw5H6yTZCyJsbNSovXY512xHPEe13G1e05beC3pxbQojrd7ogeHK373jZpsPHn8jdst5QsJrTBxEBru+qw8/dsAJ6hJ8F+FRIW6OCEw16aYhf+6ALukj+yzNfZVNv+6YRWGS7OWJKMp1echccKBM5jAqhgY4RNLRsEPYegQn+bttJxmY0u0omMfX0DwLJ88RIxRdj9sJuZm+O/f1scsZTUS66lLBH0Rljug--8RG0/Khgt/u3FY9Q--Ebis6pgs4q3RI0OwcU+iDA== \ No newline at end of file diff --git a/config/database.yml b/config/database.yml new file mode 100644 index 0000000000..8b9bc23f0c --- /dev/null +++ b/config/database.yml @@ -0,0 +1,85 @@ +# PostgreSQL. Versions 9.3 and up are supported. +# +# Install the pg driver: +# gem install pg +# On macOS with Homebrew: +# gem install pg -- --with-pg-config=/usr/local/bin/pg_config +# On macOS with MacPorts: +# gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config +# On Windows: +# gem install pg +# Choose the win32 build. +# Install PostgreSQL and put its /bin directory on your path. +# +# Configure Using Gemfile +# gem 'pg' +# +default: &default + adapter: postgresql + encoding: unicode + # For details on connection pooling, see Rails configuration guide + # https://guides.rubyonrails.org/configuring.html#database-pooling + pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> + +development: + <<: *default + database: betsy_development + + # The specified database role being used to connect to postgres. + # To create additional roles in postgres see `$ createuser --help`. + # When left blank, postgres will use the default role. This is + # the same name as the operating system user that initialized the database. + #username: betsy + + # The password associated with the postgres role (username). + #password: + + # Connect on a TCP socket. Omitted by default since the client uses a + # domain socket that doesn't need configuration. Windows does not have + # domain sockets, so uncomment these lines. + #host: localhost + + # The TCP port the server listens on. Defaults to 5432. + # If your server runs on a different port number, change accordingly. + #port: 5432 + + # Schema search path. The server defaults to $user,public + #schema_search_path: myapp,sharedapp,public + + # Minimum log levels, in increasing order: + # debug5, debug4, debug3, debug2, debug1, + # log, notice, warning, error, fatal, and panic + # Defaults to warning. + #min_messages: notice + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: + <<: *default + database: betsy_test + +# As with config/credentials.yml, you never want to store sensitive information, +# like your database password, in your source code. If your source code is +# ever seen by anyone, they now have access to your database. +# +# Instead, provide the password as a unix environment variable when you boot +# the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database +# for a full rundown on how to provide these environment variables in a +# production deployment. +# +# On Heroku and other platform providers, you may have a full connection URL +# available as an environment variable. For example: +# +# DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase" +# +# You can use this database configuration with: +# +# production: +# url: <%= ENV['DATABASE_URL'] %> +# +production: + <<: *default + database: betsy_production + username: betsy + password: <%= ENV['BETSY_DATABASE_PASSWORD'] %> diff --git a/config/environment.rb b/config/environment.rb new file mode 100644 index 0000000000..426333bb46 --- /dev/null +++ b/config/environment.rb @@ -0,0 +1,5 @@ +# Load the Rails application. +require_relative 'application' + +# Initialize the Rails application. +Rails.application.initialize! diff --git a/config/environments/development.rb b/config/environments/development.rb new file mode 100644 index 0000000000..66df51f6fc --- /dev/null +++ b/config/environments/development.rb @@ -0,0 +1,62 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # In the development environment your application's code is reloaded on + # every request. This slows down response time but is perfect for development + # since you don't have to restart the web server when you make code changes. + config.cache_classes = false + + # Do not eager load code on boot. + config.eager_load = false + + # Show full error reports. + config.consider_all_requests_local = true + + # Enable/disable caching. By default caching is disabled. + # Run rails dev:cache to toggle caching. + if Rails.root.join('tmp', 'caching-dev.txt').exist? + config.action_controller.perform_caching = true + config.action_controller.enable_fragment_cache_logging = true + + config.cache_store = :memory_store + config.public_file_server.headers = { + 'Cache-Control' => "public, max-age=#{2.days.to_i}" + } + else + config.action_controller.perform_caching = false + + config.cache_store = :null_store + end + + # Store uploaded files on the local file system (see config/storage.yml for options). + config.active_storage.service = :local + + # Don't care if the mailer can't send. + config.action_mailer.raise_delivery_errors = false + + config.action_mailer.perform_caching = false + + # Print deprecation notices to the Rails logger. + config.active_support.deprecation = :log + + # Raise an error on page load if there are pending migrations. + config.active_record.migration_error = :page_load + + # Highlight code that triggered database queries in logs. + config.active_record.verbose_query_logs = true + + # Debug mode disables concatenation and preprocessing of assets. + # This option may cause significant delays in view rendering with a large + # number of complex assets. + config.assets.debug = true + + # Suppress logger output for asset requests. + config.assets.quiet = true + + # Raises error for missing translations. + # config.action_view.raise_on_missing_translations = true + + # Use an evented file watcher to asynchronously detect changes in source code, + # routes, locales, etc. This feature depends on the listen gem. + config.file_watcher = ActiveSupport::EventedFileUpdateChecker +end diff --git a/config/environments/production.rb b/config/environments/production.rb new file mode 100644 index 0000000000..cd0d255545 --- /dev/null +++ b/config/environments/production.rb @@ -0,0 +1,112 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # Code is not reloaded between requests. + config.cache_classes = true + + # Eager load code on boot. This eager loads most of Rails and + # your application in memory, allowing both threaded web servers + # and those relying on copy on write to perform better. + # Rake tasks automatically ignore this option for performance. + config.eager_load = true + + # Full error reports are disabled and caching is turned on. + config.consider_all_requests_local = false + config.action_controller.perform_caching = true + + # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"] + # or in config/master.key. This key is used to decrypt credentials (and other encrypted files). + # config.require_master_key = true + + # Disable serving static files from the `/public` folder by default since + # Apache or NGINX already handles this. + config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? + + # Compress CSS using a preprocessor. + # config.assets.css_compressor = :sass + + # Do not fallback to assets pipeline if a precompiled asset is missed. + config.assets.compile = false + + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.action_controller.asset_host = 'http://assets.example.com' + + # Specifies the header that your server uses for sending files. + # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache + # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX + + # Store uploaded files on the local file system (see config/storage.yml for options). + config.active_storage.service = :local + + # Mount Action Cable outside main process or domain. + # config.action_cable.mount_path = nil + # config.action_cable.url = 'wss://example.com/cable' + # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ] + + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. + # config.force_ssl = true + + # Use the lowest log level to ensure availability of diagnostic information + # when problems arise. + config.log_level = :debug + + # Prepend all log lines with the following tags. + config.log_tags = [ :request_id ] + + # Use a different cache store in production. + # config.cache_store = :mem_cache_store + + # Use a real queuing backend for Active Job (and separate queues per environment). + # config.active_job.queue_adapter = :resque + # config.active_job.queue_name_prefix = "betsy_production" + + config.action_mailer.perform_caching = false + + # Ignore bad email addresses and do not raise email delivery errors. + # Set this to true and configure the email server for immediate delivery to raise delivery errors. + # config.action_mailer.raise_delivery_errors = false + + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to + # the I18n.default_locale when a translation cannot be found). + config.i18n.fallbacks = true + + # Send deprecation notices to registered listeners. + config.active_support.deprecation = :notify + + # Use default logging formatter so that PID and timestamp are not suppressed. + config.log_formatter = ::Logger::Formatter.new + + # Use a different logger for distributed setups. + # require 'syslog/logger' + # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') + + if ENV["RAILS_LOG_TO_STDOUT"].present? + logger = ActiveSupport::Logger.new(STDOUT) + logger.formatter = config.log_formatter + config.logger = ActiveSupport::TaggedLogging.new(logger) + end + + # Do not dump schema after migrations. + config.active_record.dump_schema_after_migration = false + + # Inserts middleware to perform automatic connection switching. + # The `database_selector` hash is used to pass options to the DatabaseSelector + # middleware. The `delay` is used to determine how long to wait after a write + # to send a subsequent read to the primary. + # + # The `database_resolver` class is used by the middleware to determine which + # database is appropriate to use based on the time delay. + # + # The `database_resolver_context` class is used by the middleware to set + # timestamps for the last write to the primary. The resolver uses the context + # class timestamps to determine how long to wait before reading from the + # replica. + # + # By default Rails will store a last write timestamp in the session. The + # DatabaseSelector middleware is designed as such you can define your own + # strategy for connection switching and pass that into the middleware through + # these configuration options. + # config.active_record.database_selector = { delay: 2.seconds } + # config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver + # config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session +end diff --git a/config/environments/test.rb b/config/environments/test.rb new file mode 100644 index 0000000000..0cb24249b5 --- /dev/null +++ b/config/environments/test.rb @@ -0,0 +1,49 @@ +# The test environment is used exclusively to run your application's +# test suite. You never need to work with it otherwise. Remember that +# your test database is "scratch space" for the test suite and is wiped +# and recreated between test runs. Don't rely on the data there! + +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + config.cache_classes = false + config.action_view.cache_template_loading = true + + # Do not eager load code on boot. This avoids loading your whole application + # just for the purpose of running a single test. If you are using a tool that + # preloads Rails for running tests, you may have to set it to true. + config.eager_load = false + + # Configure public file server for tests with Cache-Control for performance. + config.public_file_server.enabled = true + config.public_file_server.headers = { + 'Cache-Control' => "public, max-age=#{1.hour.to_i}" + } + + # Show full error reports and disable caching. + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + config.cache_store = :null_store + + # Raise exceptions instead of rendering exception templates. + config.action_dispatch.show_exceptions = false + + # Disable request forgery protection in test environment. + config.action_controller.allow_forgery_protection = false + + # Store uploaded files on the local file system in a temporary directory. + config.active_storage.service = :test + + config.action_mailer.perform_caching = false + + # Tell Action Mailer not to deliver emails to the real world. + # The :test delivery method accumulates sent emails in the + # ActionMailer::Base.deliveries array. + config.action_mailer.delivery_method = :test + + # Print deprecation notices to the stderr. + config.active_support.deprecation = :stderr + + # Raises error for missing translations. + # config.action_view.raise_on_missing_translations = true +end diff --git a/config/initializers/action_view.rb b/config/initializers/action_view.rb new file mode 100644 index 0000000000..142d382f87 --- /dev/null +++ b/config/initializers/action_view.rb @@ -0,0 +1 @@ +Rails.application.config.action_view.form_with_generates_remote_forms = false diff --git a/config/initializers/application_controller_renderer.rb b/config/initializers/application_controller_renderer.rb new file mode 100644 index 0000000000..89d2efab2b --- /dev/null +++ b/config/initializers/application_controller_renderer.rb @@ -0,0 +1,8 @@ +# Be sure to restart your server when you modify this file. + +# ActiveSupport::Reloader.to_prepare do +# ApplicationController.renderer.defaults.merge!( +# http_host: 'example.org', +# https: false +# ) +# end diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb new file mode 100644 index 0000000000..4b828e80cb --- /dev/null +++ b/config/initializers/assets.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. + +# Version of your assets, change this if you want to expire all your assets. +Rails.application.config.assets.version = '1.0' + +# Add additional assets to the asset load path. +# Rails.application.config.assets.paths << Emoji.images_path +# Add Yarn node_modules folder to the asset load path. +Rails.application.config.assets.paths << Rails.root.join('node_modules') + +# Precompile additional assets. +# application.js, application.css, and all non-JS/CSS in the app/assets +# folder are already added. +# Rails.application.config.assets.precompile += %w( admin.js admin.css ) diff --git a/config/initializers/backtrace_silencers.rb b/config/initializers/backtrace_silencers.rb new file mode 100644 index 0000000000..59385cdf37 --- /dev/null +++ b/config/initializers/backtrace_silencers.rb @@ -0,0 +1,7 @@ +# Be sure to restart your server when you modify this file. + +# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. +# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } + +# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. +# Rails.backtrace_cleaner.remove_silencers! diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb new file mode 100644 index 0000000000..35d0f26fcd --- /dev/null +++ b/config/initializers/content_security_policy.rb @@ -0,0 +1,30 @@ +# Be sure to restart your server when you modify this file. + +# Define an application-wide content security policy +# For further information see the following documentation +# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy + +# Rails.application.config.content_security_policy do |policy| +# policy.default_src :self, :https +# policy.font_src :self, :https, :data +# policy.img_src :self, :https, :data +# policy.object_src :none +# policy.script_src :self, :https +# policy.style_src :self, :https +# # If you are using webpack-dev-server then specify webpack-dev-server host +# policy.connect_src :self, :https, "http://localhost:3035", "ws://localhost:3035" if Rails.env.development? + +# # Specify URI for violation reports +# # policy.report_uri "/csp-violation-report-endpoint" +# end + +# If you are using UJS then enable automatic nonce generation +# Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) } + +# Set the nonce only to specific directives +# Rails.application.config.content_security_policy_nonce_directives = %w(script-src) + +# Report CSP violations to a specified URI +# For further information see the following documentation: +# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only +# Rails.application.config.content_security_policy_report_only = true diff --git a/config/initializers/cookies_serializer.rb b/config/initializers/cookies_serializer.rb new file mode 100644 index 0000000000..5a6a32d371 --- /dev/null +++ b/config/initializers/cookies_serializer.rb @@ -0,0 +1,5 @@ +# Be sure to restart your server when you modify this file. + +# Specify a serializer for the signed and encrypted cookie jars. +# Valid options are :json, :marshal, and :hybrid. +Rails.application.config.action_dispatch.cookies_serializer = :json diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb new file mode 100644 index 0000000000..4a994e1e7b --- /dev/null +++ b/config/initializers/filter_parameter_logging.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Configure sensitive parameters which will be filtered from the log file. +Rails.application.config.filter_parameters += [:password] diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb new file mode 100644 index 0000000000..ac033bf9dc --- /dev/null +++ b/config/initializers/inflections.rb @@ -0,0 +1,16 @@ +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format. Inflections +# are locale specific, and you may define rules for as many different +# locales as you wish. All of these examples are active by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.plural /^(ox)$/i, '\1en' +# inflect.singular /^(ox)en/i, '\1' +# inflect.irregular 'person', 'people' +# inflect.uncountable %w( fish sheep ) +# end + +# These inflection rules are supported but not enabled by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.acronym 'RESTful' +# end diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb new file mode 100644 index 0000000000..dc1899682b --- /dev/null +++ b/config/initializers/mime_types.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Add new mime types for use in respond_to blocks: +# Mime::Type.register "text/richtext", :rtf diff --git a/config/initializers/wrap_parameters.rb b/config/initializers/wrap_parameters.rb new file mode 100644 index 0000000000..bbfc3961bf --- /dev/null +++ b/config/initializers/wrap_parameters.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. + +# This file contains settings for ActionController::ParamsWrapper which +# is enabled by default. + +# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. +ActiveSupport.on_load(:action_controller) do + wrap_parameters format: [:json] +end + +# To enable root element in JSON for ActiveRecord objects. +# ActiveSupport.on_load(:active_record) do +# self.include_root_in_json = true +# end diff --git a/config/locales/en.yml b/config/locales/en.yml new file mode 100644 index 0000000000..cf9b342d0a --- /dev/null +++ b/config/locales/en.yml @@ -0,0 +1,33 @@ +# Files in the config/locales directory are used for internationalization +# and are automatically loaded by Rails. If you want to use locales other +# than English, add the necessary files in this directory. +# +# To use the locales, use `I18n.t`: +# +# I18n.t 'hello' +# +# In views, this is aliased to just `t`: +# +# <%= t('hello') %> +# +# To use a different locale, set it with `I18n.locale`: +# +# I18n.locale = :es +# +# This would use the information in config/locales/es.yml. +# +# The following keys must be escaped otherwise they will not be retrieved by +# the default I18n backend: +# +# true, false, on, off, yes, no +# +# Instead, surround them with single quotes. +# +# en: +# 'true': 'foo' +# +# To learn more, please read the Rails Internationalization guide +# available at https://guides.rubyonrails.org/i18n.html. + +en: + hello: "Hello world" diff --git a/config/puma.rb b/config/puma.rb new file mode 100644 index 0000000000..5ed4437744 --- /dev/null +++ b/config/puma.rb @@ -0,0 +1,38 @@ +# Puma can serve each request in a thread from an internal thread pool. +# The `threads` method setting takes two numbers: a minimum and maximum. +# Any libraries that use thread pools should be configured to match +# the maximum value specified for Puma. Default is set to 5 threads for minimum +# and maximum; this matches the default thread size of Active Record. +# +max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } +min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count } +threads min_threads_count, max_threads_count + +# Specifies the `port` that Puma will listen on to receive requests; default is 3000. +# +port ENV.fetch("PORT") { 3000 } + +# Specifies the `environment` that Puma will run in. +# +environment ENV.fetch("RAILS_ENV") { "development" } + +# Specifies the `pidfile` that Puma will use. +pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" } + +# Specifies the number of `workers` to boot in clustered mode. +# Workers are forked web server processes. If using threads and workers together +# the concurrency of the application would be max `threads` * `workers`. +# Workers do not work on JRuby or Windows (both of which do not support +# processes). +# +# workers ENV.fetch("WEB_CONCURRENCY") { 2 } + +# Use the `preload_app!` method when specifying a `workers` number. +# This directive tells Puma to first boot the application and load code +# before forking the application. This takes advantage of Copy On Write +# process behavior so workers use less memory. +# +# preload_app! + +# Allow puma to be restarted by `rails restart` command. +plugin :tmp_restart diff --git a/config/routes.rb b/config/routes.rb new file mode 100644 index 0000000000..c06383a172 --- /dev/null +++ b/config/routes.rb @@ -0,0 +1,3 @@ +Rails.application.routes.draw do + # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html +end diff --git a/config/spring.rb b/config/spring.rb new file mode 100644 index 0000000000..db5bf1307a --- /dev/null +++ b/config/spring.rb @@ -0,0 +1,6 @@ +Spring.watch( + ".ruby-version", + ".rbenv-vars", + "tmp/restart.txt", + "tmp/caching-dev.txt" +) diff --git a/config/storage.yml b/config/storage.yml new file mode 100644 index 0000000000..d32f76e8fb --- /dev/null +++ b/config/storage.yml @@ -0,0 +1,34 @@ +test: + service: Disk + root: <%= Rails.root.join("tmp/storage") %> + +local: + service: Disk + root: <%= Rails.root.join("storage") %> + +# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key) +# amazon: +# service: S3 +# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> +# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> +# region: us-east-1 +# bucket: your_own_bucket + +# Remember not to checkin your GCS keyfile to a repository +# google: +# service: GCS +# project: your_project +# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %> +# bucket: your_own_bucket + +# Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key) +# microsoft: +# service: AzureStorage +# storage_account_name: your_account_name +# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %> +# container: your_container_name + +# mirror: +# service: Mirror +# primary: local +# mirrors: [ amazon, google, microsoft ] diff --git a/config/webpack/development.js b/config/webpack/development.js new file mode 100644 index 0000000000..c5edff94ad --- /dev/null +++ b/config/webpack/development.js @@ -0,0 +1,5 @@ +process.env.NODE_ENV = process.env.NODE_ENV || 'development' + +const environment = require('./environment') + +module.exports = environment.toWebpackConfig() diff --git a/config/webpack/environment.js b/config/webpack/environment.js new file mode 100644 index 0000000000..1a4f73eecb --- /dev/null +++ b/config/webpack/environment.js @@ -0,0 +1,13 @@ +const { environment } = require('@rails/webpacker') + +module.exports = environment + +const webpack = require('webpack') +environment.plugins.append( + 'Provide', + new webpack.ProvidePlugin({ + $: 'jquery', + jQuery: 'jquery', + Popper: ['popper.js', 'default'] + }) +) diff --git a/config/webpack/production.js b/config/webpack/production.js new file mode 100644 index 0000000000..be0f53aacf --- /dev/null +++ b/config/webpack/production.js @@ -0,0 +1,5 @@ +process.env.NODE_ENV = process.env.NODE_ENV || 'production' + +const environment = require('./environment') + +module.exports = environment.toWebpackConfig() diff --git a/config/webpack/test.js b/config/webpack/test.js new file mode 100644 index 0000000000..c5edff94ad --- /dev/null +++ b/config/webpack/test.js @@ -0,0 +1,5 @@ +process.env.NODE_ENV = process.env.NODE_ENV || 'development' + +const environment = require('./environment') + +module.exports = environment.toWebpackConfig() diff --git a/config/webpacker.yml b/config/webpacker.yml new file mode 100644 index 0000000000..8581ac0472 --- /dev/null +++ b/config/webpacker.yml @@ -0,0 +1,96 @@ +# Note: You must restart bin/webpack-dev-server for changes to take effect + +default: &default + source_path: app/javascript + source_entry_path: packs + public_root_path: public + public_output_path: packs + cache_path: tmp/cache/webpacker + check_yarn_integrity: false + webpack_compile_output: true + + # Additional paths webpack should lookup modules + # ['app/assets', 'engine/foo/app/assets'] + resolved_paths: [] + + # Reload manifest.json on all requests so we reload latest compiled packs + cache_manifest: false + + # Extract and emit a css file + extract_css: false + + static_assets_extensions: + - .jpg + - .jpeg + - .png + - .gif + - .tiff + - .ico + - .svg + - .eot + - .otf + - .ttf + - .woff + - .woff2 + + extensions: + - .mjs + - .js + - .sass + - .scss + - .css + - .module.sass + - .module.scss + - .module.css + - .png + - .svg + - .gif + - .jpeg + - .jpg + +development: + <<: *default + compile: true + + # Verifies that correct packages and versions are installed by inspecting package.json, yarn.lock, and node_modules + check_yarn_integrity: true + + # Reference: https://webpack.js.org/configuration/dev-server/ + dev_server: + https: false + host: localhost + port: 3035 + public: localhost:3035 + hmr: false + # Inline should be set to true if using HMR + inline: true + overlay: true + compress: true + disable_host_check: true + use_local_ip: false + quiet: false + pretty: false + headers: + 'Access-Control-Allow-Origin': '*' + watch_options: + ignored: '**/node_modules/**' + + +test: + <<: *default + compile: true + + # Compile test packs to a separate directory + public_output_path: packs-test + +production: + <<: *default + + # Production depends on precompilation of packs prior to booting for performance. + compile: false + + # Extract and emit a css file + extract_css: true + + # Cache manifest.json for performance + cache_manifest: true diff --git a/db/seeds.rb b/db/seeds.rb new file mode 100644 index 0000000000..1beea2accd --- /dev/null +++ b/db/seeds.rb @@ -0,0 +1,7 @@ +# This file should contain all the record creation needed to seed the database with its default values. +# The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup). +# +# Examples: +# +# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) +# Character.create(name: 'Luke', movie: movies.first) diff --git a/lib/assets/.keep b/lib/assets/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lib/tasks/.keep b/lib/tasks/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/log/.keep b/log/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/package.json b/package.json new file mode 100644 index 0000000000..1d56e43d97 --- /dev/null +++ b/package.json @@ -0,0 +1,18 @@ +{ + "name": "betsy", + "private": true, + "dependencies": { + "@rails/actioncable": "^6.0.0", + "@rails/activestorage": "^6.0.0", + "@rails/ujs": "^6.0.0", + "@rails/webpacker": "4.3.0", + "bootstrap": "^4.5.3", + "jquery": "^3.5.1", + "popper.js": "^1.16.1", + "turbolinks": "^5.2.0" + }, + "version": "0.1.0", + "devDependencies": { + "webpack-dev-server": "^3.11.0" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000000..aa5998a809 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,12 @@ +module.exports = { + plugins: [ + require('postcss-import'), + require('postcss-flexbugs-fixes'), + require('postcss-preset-env')({ + autoprefixer: { + flexbox: 'no-2009' + }, + stage: 3 + }) + ] +} diff --git a/public/404.html b/public/404.html new file mode 100644 index 0000000000..2be3af26fc --- /dev/null +++ b/public/404.html @@ -0,0 +1,67 @@ + + + + The page you were looking for doesn't exist (404) + + + + + + +
+
+

The page you were looking for doesn't exist.

+

You may have mistyped the address or the page may have moved.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/public/422.html b/public/422.html new file mode 100644 index 0000000000..c08eac0d1d --- /dev/null +++ b/public/422.html @@ -0,0 +1,67 @@ + + + + The change you wanted was rejected (422) + + + + + + +
+
+

The change you wanted was rejected.

+

Maybe you tried to change something you didn't have access to.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/public/500.html b/public/500.html new file mode 100644 index 0000000000..78a030af22 --- /dev/null +++ b/public/500.html @@ -0,0 +1,66 @@ + + + + We're sorry, but something went wrong (500) + + + + + + +
+
+

We're sorry, but something went wrong.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/public/apple-touch-icon-precomposed.png b/public/apple-touch-icon-precomposed.png new file mode 100644 index 0000000000..e69de29bb2 diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000000..e69de29bb2 diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000..e69de29bb2 diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000000..c19f78ab68 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1 @@ +# See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file diff --git a/storage/.keep b/storage/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/application_system_test_case.rb b/test/application_system_test_case.rb new file mode 100644 index 0000000000..d19212abd5 --- /dev/null +++ b/test/application_system_test_case.rb @@ -0,0 +1,5 @@ +require "test_helper" + +class ApplicationSystemTestCase < ActionDispatch::SystemTestCase + driven_by :selenium, using: :chrome, screen_size: [1400, 1400] +end diff --git a/test/channels/application_cable/connection_test.rb b/test/channels/application_cable/connection_test.rb new file mode 100644 index 0000000000..800405f15e --- /dev/null +++ b/test/channels/application_cable/connection_test.rb @@ -0,0 +1,11 @@ +require "test_helper" + +class ApplicationCable::ConnectionTest < ActionCable::Connection::TestCase + # test "connects with cookies" do + # cookies.signed[:user_id] = 42 + # + # connect + # + # assert_equal connection.user_id, "42" + # end +end diff --git a/test/controllers/.keep b/test/controllers/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/fixtures/.keep b/test/fixtures/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/fixtures/files/.keep b/test/fixtures/files/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/helpers/.keep b/test/helpers/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/integration/.keep b/test/integration/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/mailers/.keep b/test/mailers/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/models/.keep b/test/models/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/system/.keep b/test/system/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/test_helper.rb b/test/test_helper.rb new file mode 100644 index 0000000000..b19af0d5bd --- /dev/null +++ b/test/test_helper.rb @@ -0,0 +1,21 @@ +ENV['RAILS_ENV'] ||= 'test' +require_relative '../config/environment' +require 'rails/test_help' +require "minitest/rails" +require "minitest/reporters" # for Colorized output +# For colorful output! +Minitest::Reporters.use!( + Minitest::Reporters::SpecReporter.new, + ENV, + Minitest.backtrace_filter +) + +class ActiveSupport::TestCase + # Run tests in parallel with specified workers + # parallelize(workers: :number_of_processors) # causes out of order output. + + # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. + fixtures :all + + # Add more helper methods to be used by all tests here... +end diff --git a/tmp/.keep b/tmp/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tmp/pids/.keep b/tmp/pids/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/.keep b/vendor/.keep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000000..6d838f636f --- /dev/null +++ b/yarn.lock @@ -0,0 +1,7638 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/compat-data@^7.12.1", "@babel/compat-data@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.5.tgz#f56db0c4bb1bbbf221b4e81345aab4141e7cb0e9" + integrity sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg== + +"@babel/core@^7.7.2": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" + integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.1" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.1" + "@babel/parser" "^7.12.3" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.12.1", "@babel/generator@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de" + integrity sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A== + dependencies: + "@babel/types" "^7.12.5" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" + integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" + integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-compilation-targets@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz#cb470c76198db6a24e9dbc8987275631e5d29831" + integrity sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw== + dependencies: + "@babel/compat-data" "^7.12.5" + "@babel/helper-validator-option" "^7.12.1" + browserslist "^4.14.5" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" + integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" + +"@babel/helper-create-regexp-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz#18b1302d4677f9dc4740fe8c9ed96680e29d37e8" + integrity sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + regexpu-core "^4.7.1" + +"@babel/helper-define-map@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" + integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/types" "^7.10.5" + lodash "^4.17.19" + +"@babel/helper-explode-assignable-expression@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633" + integrity sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-hoist-variables@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" + integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-member-expression-to-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c" + integrity sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-module-imports@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" + integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== + dependencies: + "@babel/types" "^7.12.5" + +"@babel/helper-module-transforms@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" + integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-simple-access" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/helper-validator-identifier" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + lodash "^4.17.19" + +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + +"@babel/helper-regex@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" + integrity sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg== + dependencies: + lodash "^4.17.19" + +"@babel/helper-remap-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" + integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/types" "^7.12.1" + +"@babel/helper-replace-supers@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz#f009a17543bbbbce16b06206ae73b63d3fca68d9" + integrity sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" + +"@babel/helper-simple-access@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" + integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" + integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== + dependencies: + "@babel/types" "^7.11.0" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/helper-validator-option@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" + integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A== + +"@babel/helper-wrap-function@^7.10.4": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9" + integrity sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helpers@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" + integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.10.4", "@babel/parser@^7.12.3", "@babel/parser@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.5.tgz#b4af32ddd473c0bfa643bd7ff0728b8e71b81ea0" + integrity sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ== + +"@babel/plugin-proposal-async-generator-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e" + integrity sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.7.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" + integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-dynamic-import@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" + integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-export-namespace-from@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" + integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" + integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-logical-assignment-operators@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" + integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" + integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz#b1ce757156d40ed79d59d467cb2b154a5c4149ba" + integrity sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.6.2": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" + integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.12.1" + +"@babel/plugin-proposal-optional-catch-binding@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" + integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797" + integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-private-methods@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" + integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" + integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" + integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-dynamic-import@^7.2.0", "@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" + integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-arrow-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" + integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" + integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" + +"@babel/plugin-transform-block-scoped-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" + integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-block-scoping@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1" + integrity sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-classes@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" + integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" + integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.6.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" + integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" + integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-duplicate-keys@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228" + integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-exponentiation-operator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" + integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-for-of@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" + integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-function-name@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" + integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" + integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" + integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-modules-amd@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" + integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" + integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.12.1" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" + integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q== + dependencies: + "@babel/helper-hoist-variables" "^7.10.4" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-identifier" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" + integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" + integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + +"@babel/plugin-transform-new-target@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" + integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-object-super@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" + integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + +"@babel/plugin-transform-parameters@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" + integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-property-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" + integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.7.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" + integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" + integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-runtime@^7.6.2": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz#04b792057eb460389ff6a4198e377614ea1e7ba5" + integrity sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" + integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-spread@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" + integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + +"@babel/plugin-transform-sticky-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz#5c24cf50de396d30e99afc8d1c700e8bce0f5caf" + integrity sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + +"@babel/plugin-transform-template-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" + integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typeof-symbol@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz#9ca6be343d42512fbc2e68236a82ae64bc7af78a" + integrity sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-escapes@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" + integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" + integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/preset-env@^7.7.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2" + integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg== + dependencies: + "@babel/compat-data" "^7.12.1" + "@babel/helper-compilation-targets" "^7.12.1" + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-option" "^7.12.1" + "@babel/plugin-proposal-async-generator-functions" "^7.12.1" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-dynamic-import" "^7.12.1" + "@babel/plugin-proposal-export-namespace-from" "^7.12.1" + "@babel/plugin-proposal-json-strings" "^7.12.1" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-numeric-separator" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.1" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.12.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.12.1" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-async-to-generator" "^7.12.1" + "@babel/plugin-transform-block-scoped-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-computed-properties" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-dotall-regex" "^7.12.1" + "@babel/plugin-transform-duplicate-keys" "^7.12.1" + "@babel/plugin-transform-exponentiation-operator" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-function-name" "^7.12.1" + "@babel/plugin-transform-literals" "^7.12.1" + "@babel/plugin-transform-member-expression-literals" "^7.12.1" + "@babel/plugin-transform-modules-amd" "^7.12.1" + "@babel/plugin-transform-modules-commonjs" "^7.12.1" + "@babel/plugin-transform-modules-systemjs" "^7.12.1" + "@babel/plugin-transform-modules-umd" "^7.12.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" + "@babel/plugin-transform-new-target" "^7.12.1" + "@babel/plugin-transform-object-super" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-property-literals" "^7.12.1" + "@babel/plugin-transform-regenerator" "^7.12.1" + "@babel/plugin-transform-reserved-words" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-sticky-regex" "^7.12.1" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/plugin-transform-typeof-symbol" "^7.12.1" + "@babel/plugin-transform-unicode-escapes" "^7.12.1" + "@babel/plugin-transform-unicode-regex" "^7.12.1" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.12.1" + core-js-compat "^3.6.2" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" + integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== + dependencies: + "@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@^7.7.2", "@babel/runtime@^7.8.4": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" + integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.5.tgz#78a0c68c8e8a35e4cacfd31db8bb303d5606f095" + integrity sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.5" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.12.5" + "@babel/types" "^7.12.5" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.5", "@babel/types@^7.4.4": + version "7.12.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.6.tgz#ae0e55ef1cce1fbc881cd26f8234eb3e657edc96" + integrity sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@npmcli/move-file@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" + integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== + dependencies: + mkdirp "^1.0.4" + +"@rails/actioncable@^6.0.0": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@rails/actioncable/-/actioncable-6.0.3.tgz#722b4b639936129307ddbab3a390f6bcacf3e7bc" + integrity sha512-I01hgqxxnOgOtJTGlq0ZsGJYiTEEiSGVEGQn3vimZSqEP1HqzyFNbzGTq14Xdyeow2yGJjygjoFF1pmtE+SQaw== + +"@rails/activestorage@^6.0.0": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@rails/activestorage/-/activestorage-6.0.3.tgz#401d2a28ecb7167cdb5e830ffddaa17c308c31aa" + integrity sha512-YdNwyfryHlcKj7Ruix89wZ2aiN3KTYULdW1Y/hNlHJlrY2/PXjT2YBTzZiVd+dcjrwHBsXV2rExdy+Z/lsrlEg== + dependencies: + spark-md5 "^3.0.0" + +"@rails/ujs@^6.0.0": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.0.3.tgz#e68a03278e30daea6a110aac5dfa33c60c53055d" + integrity sha512-CM9OEvoN9eXkaX7PXEnbsQLULJ97b9rVmwliZbz/iBOERLJ68Rk3ClJe+fQEMKU4CBZfky2lIRnfslOdUs9SLQ== + +"@rails/webpacker@4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@rails/webpacker/-/webpacker-4.3.0.tgz#3793b3aed08ed0b661f1bed9de0739abacb6a834" + integrity sha512-DmKGjKugLeeytT1TO9fUBBjdA3YwQ19zoWK5JDL8V1rM0bf6WRf1n9DZTiVmuf0WO1gp5ej5pJ9b3NjZwfAz4Q== + dependencies: + "@babel/core" "^7.7.2" + "@babel/plugin-proposal-class-properties" "^7.7.0" + "@babel/plugin-proposal-object-rest-spread" "^7.6.2" + "@babel/plugin-syntax-dynamic-import" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.6.0" + "@babel/plugin-transform-regenerator" "^7.7.0" + "@babel/plugin-transform-runtime" "^7.6.2" + "@babel/preset-env" "^7.7.1" + "@babel/runtime" "^7.7.2" + babel-loader "^8.0.6" + babel-plugin-dynamic-import-node "^2.3.0" + babel-plugin-macros "^2.6.1" + case-sensitive-paths-webpack-plugin "^2.2.0" + compression-webpack-plugin "^4.0.0" + core-js "^3.4.0" + css-loader "^3.2.0" + file-loader "^4.2.0" + flatted "^2.0.1" + glob "^7.1.6" + js-yaml "^3.13.1" + mini-css-extract-plugin "^0.8.0" + node-sass "^4.13.0" + optimize-css-assets-webpack-plugin "^5.0.3" + path-complete-extname "^1.0.0" + pnp-webpack-plugin "^1.5.0" + postcss-flexbugs-fixes "^4.1.0" + postcss-import "^12.0.1" + postcss-loader "^3.0.0" + postcss-preset-env "^6.7.0" + postcss-safe-parser "^4.0.1" + regenerator-runtime "^0.13.3" + sass-loader "7.3.1" + style-loader "^1.0.0" + terser-webpack-plugin "^2.2.1" + webpack "^4.41.2" + webpack-assets-manifest "^3.1.1" + webpack-cli "^3.3.10" + webpack-sources "^1.4.3" + +"@types/glob@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/json-schema@^7.0.5": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node@*": + version "14.14.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.7.tgz#8ea1e8f8eae2430cf440564b98c6dfce1ec5945d" + integrity sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/q@^1.5.1": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" + integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== + +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^9.6.1: + version "9.8.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" + integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" + colorette "^1.2.1" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +babel-loader@^8.0.6: + version "8.2.1" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.1.tgz#e53313254677e86f27536f5071d807e01d24ec00" + integrity sha512-dMF8sb2KQ8kJl21GUjkW1HWmcsL39GOV5vnzjqrCzEPNY0S0UfMLnumidiwIajDSBmKhYf5iRW+HXaM4cvCKBw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + make-dir "^2.1.0" + pify "^4.0.1" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.0, babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-macros@^2.6.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + 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" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" + integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + dependencies: + inherits "~2.0.0" + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== + +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" + integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + 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" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +bootstrap@^4.5.3: + version "4.5.3" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.5.3.tgz#c6a72b355aaf323920be800246a6e4ef30997fe6" + integrity sha512-o9ppKQioXGqhw8Z7mah6KdTYpNQY//tipnkxppWhPbiSWdD+1raYsnhwEZjkTHYbGee4cVQ0Rx65EhOY/HNLcQ== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + 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" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.14.6, browserslist@^4.6.4: + version "4.14.7" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.7.tgz#c071c1b3622c1c2e790799a37bb09473a4351cb6" + integrity sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ== + dependencies: + caniuse-lite "^1.0.30001157" + colorette "^1.2.1" + electron-to-chromium "^1.3.591" + escalade "^3.1.1" + node-releases "^1.1.66" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" + integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== + dependencies: + chownr "^1.1.2" + figgy-pudding "^3.5.1" + fs-minipass "^2.0.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^7.0.0" + unique-filename "^1.1.1" + +cacache@^15.0.5: + version "15.0.5" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" + integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== + dependencies: + "@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.0" + tar "^6.0.2" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + 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@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" + integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.0" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157: + version "1.0.30001158" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001158.tgz#fce86d321369603c2bc855ee0e901a7f49f8310b" + integrity sha512-s5loVYY+yKpuVA3HyW8BarzrtJvwHReuzugQXlv1iR3LKSReoFXRm86mT6hT7PEF5RxW+XQZg+6nYjlywYzQ+g== + +case-sensitive-paths-webpack-plugin@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" + integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + 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" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.4.1: + version "3.4.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" + integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.1.2" + +chownr@^1.1.1, chownr@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6" + integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" + integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.4" + +colorette@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression-webpack-plugin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-4.0.1.tgz#33eda97f1170dd38c5556771de10f34245aa0274" + integrity sha512-0mg6PgwTsUe5LEcUrOu3ob32vraDx2VdbMGAT1PARcOV+UJWDYZFdkSo6RbHoGQ061mmmkC7XpRKOlvwm/gzJQ== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + schema-utils "^2.7.0" + serialize-javascript "^4.0.0" + webpack-sources "^1.4.3" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js-compat@^3.6.2: + version "3.7.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.7.0.tgz#8479c5d3d672d83f1f5ab94cf353e57113e065ed" + integrity sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg== + dependencies: + browserslist "^4.14.6" + semver "7.0.0" + +core-js@^3.4.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.7.0.tgz#b0a761a02488577afbf97179e4681bf49568520f" + integrity sha512-NwS7fI5M5B85EwpWuIwJN4i/fbisQUwLwiSNUWeXlkAZ0sbBjLEvLvFLf1uzAUV66PcEPt4xCGCmOZSxVf3xzA== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-loader@^3.2.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.6.0.tgz#2e4b2c7e6e2d27f8c8f28f61bffcd2e6c91ef645" + integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.32" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.0" + semver "^6.3.0" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.1.tgz#7726678dfe2a57993a018d9dce519bf1760e3b6d" + integrity sha512-WroX+2MvsYcRGP8QA0p+rxzOniT/zpAoQ/DTKDSJzh5T3IQKUkFHeIIfgIapm2uaP178GWY3Mime1qbk8GO/tA== + dependencies: + mdn-data "2.0.12" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.1.1" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.1.1.tgz#e0cb02d6eb3af1df719222048e4359efd662af13" + integrity sha512-Rvq+e1e0TFB8E8X+8MQjHSY6vtol45s5gxtLI/018UsAn2IBMmwNEZRM/h+HVnAJRHjasLIKKUO3uvoMM28LvA== + dependencies: + css-tree "^1.0.0" + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.1, debug@^3.2.5: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" + integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== + dependencies: + ms "2.1.2" + +decamelize@^1.1.2, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@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" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971" + integrity sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA== + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.3.591: + version "1.3.598" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.598.tgz#8f757018902ab6190323a8c5f6124d854893a35b" + integrity sha512-G5Ztk23/ubLYVPxPXnB1uu105uzIPd4xB/D8ld8x1GaSC9+vU9NZL16nYZya8H77/7CCKKN7dArzJL3pBs8N7A== + +elliptic@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.1, enhanced-resolve@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" + integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +entities@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + +errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.7" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" + integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.18.0-next.1: + version "1.18.0-next.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" + integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.0" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esrecurse@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" + integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + 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" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + +express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + 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" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + 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" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.1: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +file-loader@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" + integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA== + dependencies: + loader-utils "^1.2.3" + schema-utils "^2.5.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +flatted@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@^1.0.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" + integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +fstream@^1.0.0, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + 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" + +gaze@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" + integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== + dependencies: + globule "^1.0.0" + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" + integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.1: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globule@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.2.tgz#d8bdd9e9e4eef8f96e245999a5dee7eb5d8529c4" + integrity sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA== + dependencies: + glob "~7.1.1" + lodash "~4.17.10" + minimatch "~3.0.2" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.2: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-entities@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" + integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-parser-js@>=0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" + integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.1.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" + integrity sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +in-publish@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c" + integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ== + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + dependencies: + repeating "^2.0.0" + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.4, ini@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +interpret@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" + integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-core-module@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.1.0.tgz#a4cc031d9b1aca63eecbd18a650e13cb4eeab946" + integrity sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-negative-zero@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" + integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.4, is-regex@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" + integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== + dependencies: + has-symbols "^1.0.1" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +jest-worker@^25.4.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" + integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jquery@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.1.tgz#d7b4d08e1bfdb86ad2f1a3d039ea17304717abb5" + integrity sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg== + +js-base64@^2.1.8: + version "2.6.4" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" + integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@^1.0.1, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +loader-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.get@^4.0: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + +lodash.has@^4.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862" + integrity sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.5, lodash@~4.17.10: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + +loglevel@^1.6.8: + version "1.7.0" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.0.tgz#728166855a740d59d38db01cf46f042caa041bb0" + integrity sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ== + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.12.tgz#bbb658d08b38f574bbb88f7b83703defdcc46844" + integrity sha512-ULbAlgzVb8IqZ0Hsxm6hHSlQl3Jckst2YEQS7fODu9ilNWy2LvcoSY7TRFIktABP2mdppBioc66va90T+NUs8Q== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + 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" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + +"mime-db@>= 1.43.0 < 2": + version "1.45.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" + integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + dependencies: + mime-db "1.44.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.4: + version "2.4.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" + integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== + +mini-css-extract-plugin@^0.8.0: + version "0.8.2" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.2.tgz#a875e169beb27c88af77dd962771c9eedc3da161" + integrity sha512-a3Y4of27Wz+mqK3qrcd3VhYz6cU0iW5x3Sgvqzbj+XmlrSizmvu8QQMl5oMYJjgHOC4iyt+w7l4umP+dQeW3bw== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@^3.0.4, minimatch@~3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +"mkdirp@>=0.5 0", mkdirp@^0.5, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@2.1.2, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +nan@^2.12.1, nan@^2.13.2: + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + 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" + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-gyp@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "^2.87.0" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-releases@^1.1.66: + version "1.1.67" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.67.tgz#28ebfcccd0baa6aad8e8d4d8fe4cbc49ae239c12" + integrity sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg== + +node-sass@^4.13.0: + version "4.14.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.14.1.tgz#99c87ec2efb7047ed638fb4c9db7f3a42e2217b5" + integrity sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g== + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash "^4.17.15" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.13.2" + node-gyp "^3.8.0" + npmlog "^4.0.0" + request "^2.88.0" + sass-graph "2.2.5" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" + integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== + +object-is@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.3.tgz#2e3b9e65560137455ee3bd62aec4d90a2ea1cc81" + integrity sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0, object.assign@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimize-css-assets-webpack-plugin@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90" + integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-tmpdir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@0: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" + integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-complete-extname@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/path-complete-extname/-/path-complete-extname-1.0.0.tgz#f889985dc91000c815515c0bfed06c5acda0752b" + integrity sha512-CVjiWcMRdGU8ubs08YQVzhutOR5DEfO97ipRIlOGMK5Bek5nQySknBpuxVAVJ36hseTNs+vdIcv57ZrWxH7zvg== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pnp-webpack-plugin@^1.5.0: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +popper.js@^1.16.1: + version "1.16.1" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" + integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== + +portfinder@^1.0.26: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + +postcss-calc@^7.0.1: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" + integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-flexbugs-fixes@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" + integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== + dependencies: + postcss "^7.0.26" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" + integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== + dependencies: + postcss "^7.0.2" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-import@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-12.0.1.tgz#cf8c7ab0b5ccab5649024536e565f841928b7153" + integrity sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw== + dependencies: + postcss "^7.0.1" + postcss-value-parser "^3.2.3" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-initial@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + dependencies: + lodash.template "^4.5.0" + postcss "^7.0.2" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" + integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.32" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@^6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + 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" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-safe-parser@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96" + integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== + dependencies: + postcss "^7.0.26" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz#c68ff7ba96527499e832724a2674d65603b645c0" + integrity sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" + integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + util-deprecate "^1.0.2" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.2.3: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" + integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= + dependencies: + pify "^2.3.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: + version "0.13.7" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexpu-core@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" + integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +request@^2.87.0, request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + 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" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.8.1: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + dependencies: + is-core-module "^2.1.0" + path-parse "^1.0.6" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@2, rimraf@^2.5.4, rimraf@^2.6.3, rimraf@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass-graph@2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.5.tgz#a981c87446b8319d96dce0671e487879bd24c2e8" + integrity sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag== + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^13.3.2" + +sass-loader@7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.3.1.tgz#a5bf68a04bcea1c13ff842d747150f7ab7d0d23f" + integrity sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA== + dependencies: + clone-deep "^4.0.1" + loader-utils "^1.0.1" + neo-async "^2.5.0" + pify "^4.0.1" + semver "^6.3.0" + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.5.0, schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.7: + version "1.10.8" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" + integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== + dependencies: + node-forge "^0.10.0" + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +signal-exit@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + 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" + +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.20: + version "0.3.20" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" + integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.4.0" + websocket-driver "0.6.5" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + 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" + +source-map-support@~0.5.12: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + integrity sha1-66T12pwNyZneaAMti092FzZSA2s= + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spark-md5@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-3.0.1.tgz#83a0e255734f2ab4e5c466e5a2cfc9ba2aa2124d" + integrity sha512-0tF3AGSD1ppQeuffsLDIOWlKUd3lS92tFxcsrh5Pe3ZphhnoK+oXIBTzOAThZCiuINZLvpiLH/1VS1/ANEJVig== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" + integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +ssri@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" + integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== + dependencies: + figgy-pudding "^3.5.1" + minipass "^3.1.1" + +ssri@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808" + integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA== + dependencies: + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stdout-stream@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" + integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== + dependencies: + readable-stream "^2.0.1" + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2": + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string.prototype.trimend@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz#6ddd9a8796bc714b489a3ae22246a208f37bfa46" + integrity sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +string.prototype.trimstart@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz#22d45da81015309cd0cdd79787e8919fc5c613e7" + integrity sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + dependencies: + get-stdin "^4.0.1" + +style-loader@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" + integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.7.0" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +svgo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tar@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== + dependencies: + block-stream "*" + fstream "^1.0.12" + inherits "2" + +tar@^6.0.2: + version "6.0.5" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" + integrity sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg== + dependencies: + 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-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser-webpack-plugin@^2.2.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724" + integrity sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w== + dependencies: + cacache "^13.0.1" + find-cache-dir "^3.3.1" + jest-worker "^25.4.0" + p-limit "^2.3.0" + schema-utils "^2.6.6" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.6.12" + webpack-sources "^1.4.3" + +terser@^4.1.2, terser@^4.6.12: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + +"true-case-path@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" + integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== + dependencies: + glob "^7.1.2" + +ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + +tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +turbolinks@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/turbolinks/-/turbolinks-5.2.0.tgz#e6877a55ea5c1cb3bb225f0a4ae303d6d32ff77c" + integrity sha512-pMiez3tyBo6uRHFNNZoYMmrES/IaGgMhQQM+VFF36keryjb5ms0XkVpmKHkfW/4Vy96qiGW3K9bz0tF5sK9bBw== + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +uri-js@^4.2.2: + version "4.4.0" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" + integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-parse@^1.4.3: + version "1.4.7" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" + integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.7.4: + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +webpack-assets-manifest@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/webpack-assets-manifest/-/webpack-assets-manifest-3.1.1.tgz#39bbc3bf2ee57fcd8ba07cda51c9ba4a3c6ae1de" + integrity sha512-JV9V2QKc5wEWQptdIjvXDUL1ucbPLH2f27toAY3SNdGZp+xSaStAgpoMcvMZmqtFrBc9a5pTS1058vxyMPOzRQ== + dependencies: + chalk "^2.0" + lodash.get "^4.0" + lodash.has "^4.0" + mkdirp "^0.5" + schema-utils "^1.0.0" + tapable "^1.0.0" + webpack-sources "^1.0.0" + +webpack-cli@^3.3.10: + version "3.3.12" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" + integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== + dependencies: + chalk "^2.4.2" + cross-spawn "^6.0.5" + enhanced-resolve "^4.1.1" + findup-sync "^3.0.0" + global-modules "^2.0.0" + import-local "^2.0.0" + interpret "^1.4.0" + loader-utils "^1.4.0" + supports-color "^6.1.0" + v8-compile-cache "^2.1.1" + yargs "^13.3.2" + +webpack-dev-middleware@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@^3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" + integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== + dependencies: + 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.7" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.20" + sockjs-client "1.4.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" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-sources@^1.0.0, webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^4.41.2: + version "4.44.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" + integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.3.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + +websocket-driver@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= + dependencies: + websocket-extensions ">=0.1.1" + +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@1, which@^1.2.14, which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +ws@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.7.2: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + 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" From d288751a3efc61d8803a148020df530a0b00f699 Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Tue, 17 Nov 2020 15:17:48 -0800 Subject: [PATCH 002/129] Updated gitignore to exclude env and idea --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index f22dd34725..840113a176 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,6 @@ /yarn-error.log yarn-debug.log* .yarn-integrity + +.idea +.env From 886093ccc40df25e496999eba2c0d61d70db4c37 Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Tue, 17 Nov 2020 15:53:10 -0800 Subject: [PATCH 003/129] Generated migrations for product, merchant, order, orderitem --- app/models/merchant.rb | 3 +++ app/models/order.rb | 3 +++ app/models/order_item.rb | 4 ++++ app/models/product.rb | 2 ++ db/migrate/20201117232443_create_products.rb | 14 ++++++++++++++ db/migrate/20201117233547_create_order_items.rb | 11 +++++++++++ db/migrate/20201117234700_create_orders.rb | 10 ++++++++++ db/migrate/20201117235026_create_merchants.rb | 12 ++++++++++++ test/models/merchant_test.rb | 7 +++++++ test/models/order_item_test.rb | 7 +++++++ test/models/order_test.rb | 7 +++++++ test/models/product_test.rb | 7 +++++++ 12 files changed, 87 insertions(+) create mode 100644 app/models/merchant.rb create mode 100644 app/models/order.rb create mode 100644 app/models/order_item.rb create mode 100644 app/models/product.rb create mode 100644 db/migrate/20201117232443_create_products.rb create mode 100644 db/migrate/20201117233547_create_order_items.rb create mode 100644 db/migrate/20201117234700_create_orders.rb create mode 100644 db/migrate/20201117235026_create_merchants.rb create mode 100644 test/models/merchant_test.rb create mode 100644 test/models/order_item_test.rb create mode 100644 test/models/order_test.rb create mode 100644 test/models/product_test.rb diff --git a/app/models/merchant.rb b/app/models/merchant.rb new file mode 100644 index 0000000000..6ade4b4fed --- /dev/null +++ b/app/models/merchant.rb @@ -0,0 +1,3 @@ +class Merchant < ApplicationRecord + belongs_to :product +end diff --git a/app/models/order.rb b/app/models/order.rb new file mode 100644 index 0000000000..f8f0512c73 --- /dev/null +++ b/app/models/order.rb @@ -0,0 +1,3 @@ +class Order < ApplicationRecord + belongs_to :order_item +end diff --git a/app/models/order_item.rb b/app/models/order_item.rb new file mode 100644 index 0000000000..85ee1e85ee --- /dev/null +++ b/app/models/order_item.rb @@ -0,0 +1,4 @@ +class OrderItem < ApplicationRecord + belongs_to :product_id + belongs_to :order_id +end diff --git a/app/models/product.rb b/app/models/product.rb new file mode 100644 index 0000000000..35a85acab3 --- /dev/null +++ b/app/models/product.rb @@ -0,0 +1,2 @@ +class Product < ApplicationRecord +end diff --git a/db/migrate/20201117232443_create_products.rb b/db/migrate/20201117232443_create_products.rb new file mode 100644 index 0000000000..5e9e103d66 --- /dev/null +++ b/db/migrate/20201117232443_create_products.rb @@ -0,0 +1,14 @@ +class CreateProducts < ActiveRecord::Migration[6.0] + def change + create_table :products do |t| + t.string :name + t.string :description + t.float :price + t.string :photo_url + t.integer :stock + t.references :merchant + + t.timestamps + end + end +end diff --git a/db/migrate/20201117233547_create_order_items.rb b/db/migrate/20201117233547_create_order_items.rb new file mode 100644 index 0000000000..6f28105f28 --- /dev/null +++ b/db/migrate/20201117233547_create_order_items.rb @@ -0,0 +1,11 @@ +class CreateOrderItems < ActiveRecord::Migration[6.0] + def change + create_table :order_items do |t| + t.references :product, null: false + t.references :order, null: false + t.integer :quantity + + t.timestamps + end + end +end diff --git a/db/migrate/20201117234700_create_orders.rb b/db/migrate/20201117234700_create_orders.rb new file mode 100644 index 0000000000..784fb7c6c8 --- /dev/null +++ b/db/migrate/20201117234700_create_orders.rb @@ -0,0 +1,10 @@ +class CreateOrders < ActiveRecord::Migration[6.0] + def change + create_table :orders do |t| + t.references :order_item, null: false + t.string :status + + t.timestamps + end + end +end diff --git a/db/migrate/20201117235026_create_merchants.rb b/db/migrate/20201117235026_create_merchants.rb new file mode 100644 index 0000000000..496fa9854c --- /dev/null +++ b/db/migrate/20201117235026_create_merchants.rb @@ -0,0 +1,12 @@ +class CreateMerchants < ActiveRecord::Migration[6.0] + def change + create_table :merchants do |t| + t.string :username + t.string :email + t.string :provider + t.string :uid + + t.timestamps + end + end +end diff --git a/test/models/merchant_test.rb b/test/models/merchant_test.rb new file mode 100644 index 0000000000..ca3d6ca9b2 --- /dev/null +++ b/test/models/merchant_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe Merchant do + # it "does a thing" do + # value(1+1).must_equal 2 + # end +end diff --git a/test/models/order_item_test.rb b/test/models/order_item_test.rb new file mode 100644 index 0000000000..b2630ff9e9 --- /dev/null +++ b/test/models/order_item_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe OrderItem do + # it "does a thing" do + # value(1+1).must_equal 2 + # end +end diff --git a/test/models/order_test.rb b/test/models/order_test.rb new file mode 100644 index 0000000000..59ceb9a253 --- /dev/null +++ b/test/models/order_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe Order do + # it "does a thing" do + # value(1+1).must_equal 2 + # end +end diff --git a/test/models/product_test.rb b/test/models/product_test.rb new file mode 100644 index 0000000000..6977718e14 --- /dev/null +++ b/test/models/product_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe Product do + # it "does a thing" do + # value(1+1).must_equal 2 + # end +end From 8dbc1817c403adae3a25238b791c7d1614a260a5 Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Tue, 17 Nov 2020 16:05:33 -0800 Subject: [PATCH 004/129] Ran rails db:migrate and made model relations --- .generators | 8 ++++++ app/models/merchant.rb | 2 +- app/models/order.rb | 2 +- app/models/order_item.rb | 4 +-- app/models/product.rb | 2 ++ db/schema.rb | 57 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 .generators create mode 100644 db/schema.rb diff --git a/.generators b/.generators new file mode 100644 index 0000000000..83a98ab0c4 --- /dev/null +++ b/.generators @@ -0,0 +1,8 @@ + + diff --git a/app/models/merchant.rb b/app/models/merchant.rb index 6ade4b4fed..07aacc445d 100644 --- a/app/models/merchant.rb +++ b/app/models/merchant.rb @@ -1,3 +1,3 @@ class Merchant < ApplicationRecord - belongs_to :product + has_many :products end diff --git a/app/models/order.rb b/app/models/order.rb index f8f0512c73..b8ff4b192c 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -1,3 +1,3 @@ class Order < ApplicationRecord - belongs_to :order_item + has_many :order_items end diff --git a/app/models/order_item.rb b/app/models/order_item.rb index 85ee1e85ee..eecf9e7ebf 100644 --- a/app/models/order_item.rb +++ b/app/models/order_item.rb @@ -1,4 +1,4 @@ class OrderItem < ApplicationRecord - belongs_to :product_id - belongs_to :order_id + belongs_to :product + belongs_to :order end diff --git a/app/models/product.rb b/app/models/product.rb index 35a85acab3..ee78335d7b 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -1,2 +1,4 @@ class Product < ApplicationRecord + belongs_to :merchant + has_many :order_items end diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 0000000000..c0a7608a06 --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,57 @@ +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# This file is the source Rails uses to define your schema when running `rails +# db:schema:load`. When creating a new database, `rails db:schema:load` tends to +# be faster and is potentially less error prone than running all of your +# migrations from scratch. Old migrations may fail to apply correctly if those +# migrations use external dependencies or application code. +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 2020_11_17_235026) do + + # These are extensions that must be enabled in order to support this database + enable_extension "plpgsql" + + create_table "merchants", force: :cascade do |t| + t.string "username" + t.string "email" + t.string "provider" + t.string "uid" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + end + + create_table "order_items", force: :cascade do |t| + t.bigint "product_id", null: false + t.bigint "order_id", null: false + t.integer "quantity" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.index ["order_id"], name: "index_order_items_on_order_id" + t.index ["product_id"], name: "index_order_items_on_product_id" + end + + create_table "orders", force: :cascade do |t| + t.bigint "order_item_id", null: false + t.string "status" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.index ["order_item_id"], name: "index_orders_on_order_item_id" + end + + create_table "products", force: :cascade do |t| + t.string "name" + t.string "description" + t.float "price" + t.string "photo_url" + t.integer "stock" + t.bigint "merchant_id" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.index ["merchant_id"], name: "index_products_on_merchant_id" + end + +end From 5f5923e16452d4e39f29d7cd7f9d8030969ed5d6 Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Wed, 18 Nov 2020 15:54:51 -0800 Subject: [PATCH 005/129] Updated lockfile and generated Merchants controller --- app/assets/stylesheets/merchants.scss | 3 +++ app/controllers/merchants_controller.rb | 2 ++ app/helpers/merchants_helper.rb | 2 ++ test/controllers/merchants_controller_test.rb | 7 +++++++ 4 files changed, 14 insertions(+) create mode 100644 app/assets/stylesheets/merchants.scss create mode 100644 app/controllers/merchants_controller.rb create mode 100644 app/helpers/merchants_helper.rb create mode 100644 test/controllers/merchants_controller_test.rb diff --git a/app/assets/stylesheets/merchants.scss b/app/assets/stylesheets/merchants.scss new file mode 100644 index 0000000000..743080c521 --- /dev/null +++ b/app/assets/stylesheets/merchants.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Merchants controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: https://sass-lang.com/ diff --git a/app/controllers/merchants_controller.rb b/app/controllers/merchants_controller.rb new file mode 100644 index 0000000000..ae95f7677b --- /dev/null +++ b/app/controllers/merchants_controller.rb @@ -0,0 +1,2 @@ +class MerchantsController < ApplicationController +end diff --git a/app/helpers/merchants_helper.rb b/app/helpers/merchants_helper.rb new file mode 100644 index 0000000000..5337747b0f --- /dev/null +++ b/app/helpers/merchants_helper.rb @@ -0,0 +1,2 @@ +module MerchantsHelper +end diff --git a/test/controllers/merchants_controller_test.rb b/test/controllers/merchants_controller_test.rb new file mode 100644 index 0000000000..7861d3b7c5 --- /dev/null +++ b/test/controllers/merchants_controller_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe MerchantsController do + # it "does a thing" do + # value(1+1).must_equal 2 + # end +end From 7b40d2b659fc574ad55d1742982e2afe5e076610 Mon Sep 17 00:00:00 2001 From: Sandy Date: Wed, 18 Nov 2020 16:03:02 -0800 Subject: [PATCH 006/129] Added controllers to petsy --- app/assets/stylesheets/homepages.scss | 3 +++ app/assets/stylesheets/order_items.scss | 3 +++ app/assets/stylesheets/orders.scss | 3 +++ app/assets/stylesheets/products.scss | 3 +++ app/controllers/homepages_controller.rb | 4 ++++ app/controllers/order_items_controller.rb | 4 ++++ app/controllers/orders_controller.rb | 4 ++++ app/controllers/products_controller.rb | 4 ++++ app/helpers/homepages_helper.rb | 2 ++ app/helpers/order_items_helper.rb | 2 ++ app/helpers/orders_helper.rb | 2 ++ app/helpers/products_helper.rb | 2 ++ app/views/homepages/index.html.erb | 2 ++ app/views/order_items/index.html.erb | 2 ++ app/views/orders/index.html.erb | 2 ++ app/views/products/index.html.erb | 2 ++ config/routes.rb | 4 ++++ test/controllers/homepages_controller_test.rb | 9 +++++++++ test/controllers/order_items_controller_test.rb | 9 +++++++++ test/controllers/orders_controller_test.rb | 9 +++++++++ test/controllers/products_controller_test.rb | 9 +++++++++ 21 files changed, 84 insertions(+) create mode 100644 app/assets/stylesheets/homepages.scss create mode 100644 app/assets/stylesheets/order_items.scss create mode 100644 app/assets/stylesheets/orders.scss create mode 100644 app/assets/stylesheets/products.scss create mode 100644 app/controllers/homepages_controller.rb create mode 100644 app/controllers/order_items_controller.rb create mode 100644 app/controllers/orders_controller.rb create mode 100644 app/controllers/products_controller.rb create mode 100644 app/helpers/homepages_helper.rb create mode 100644 app/helpers/order_items_helper.rb create mode 100644 app/helpers/orders_helper.rb create mode 100644 app/helpers/products_helper.rb create mode 100644 app/views/homepages/index.html.erb create mode 100644 app/views/order_items/index.html.erb create mode 100644 app/views/orders/index.html.erb create mode 100644 app/views/products/index.html.erb create mode 100644 test/controllers/homepages_controller_test.rb create mode 100644 test/controllers/order_items_controller_test.rb create mode 100644 test/controllers/orders_controller_test.rb create mode 100644 test/controllers/products_controller_test.rb diff --git a/app/assets/stylesheets/homepages.scss b/app/assets/stylesheets/homepages.scss new file mode 100644 index 0000000000..f54dc27a9f --- /dev/null +++ b/app/assets/stylesheets/homepages.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Homepages controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: https://sass-lang.com/ diff --git a/app/assets/stylesheets/order_items.scss b/app/assets/stylesheets/order_items.scss new file mode 100644 index 0000000000..f93be746f6 --- /dev/null +++ b/app/assets/stylesheets/order_items.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Order_Items controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: https://sass-lang.com/ diff --git a/app/assets/stylesheets/orders.scss b/app/assets/stylesheets/orders.scss new file mode 100644 index 0000000000..e8c23c2250 --- /dev/null +++ b/app/assets/stylesheets/orders.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Orders controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: https://sass-lang.com/ diff --git a/app/assets/stylesheets/products.scss b/app/assets/stylesheets/products.scss new file mode 100644 index 0000000000..8f0ca888eb --- /dev/null +++ b/app/assets/stylesheets/products.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Products controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: https://sass-lang.com/ diff --git a/app/controllers/homepages_controller.rb b/app/controllers/homepages_controller.rb new file mode 100644 index 0000000000..f200c8ac2e --- /dev/null +++ b/app/controllers/homepages_controller.rb @@ -0,0 +1,4 @@ +class HomepagesController < ApplicationController + def index + end +end diff --git a/app/controllers/order_items_controller.rb b/app/controllers/order_items_controller.rb new file mode 100644 index 0000000000..70d7490e69 --- /dev/null +++ b/app/controllers/order_items_controller.rb @@ -0,0 +1,4 @@ +class OrderItemsController < ApplicationController + def index + end +end diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb new file mode 100644 index 0000000000..b092cf42b9 --- /dev/null +++ b/app/controllers/orders_controller.rb @@ -0,0 +1,4 @@ +class OrdersController < ApplicationController + def index + end +end diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb new file mode 100644 index 0000000000..72f670ec77 --- /dev/null +++ b/app/controllers/products_controller.rb @@ -0,0 +1,4 @@ +class ProductsController < ApplicationController + def index + end +end diff --git a/app/helpers/homepages_helper.rb b/app/helpers/homepages_helper.rb new file mode 100644 index 0000000000..4bd8098f37 --- /dev/null +++ b/app/helpers/homepages_helper.rb @@ -0,0 +1,2 @@ +module HomepagesHelper +end diff --git a/app/helpers/order_items_helper.rb b/app/helpers/order_items_helper.rb new file mode 100644 index 0000000000..e197528ae1 --- /dev/null +++ b/app/helpers/order_items_helper.rb @@ -0,0 +1,2 @@ +module OrderItemsHelper +end diff --git a/app/helpers/orders_helper.rb b/app/helpers/orders_helper.rb new file mode 100644 index 0000000000..443227fd48 --- /dev/null +++ b/app/helpers/orders_helper.rb @@ -0,0 +1,2 @@ +module OrdersHelper +end diff --git a/app/helpers/products_helper.rb b/app/helpers/products_helper.rb new file mode 100644 index 0000000000..ab5c42b325 --- /dev/null +++ b/app/helpers/products_helper.rb @@ -0,0 +1,2 @@ +module ProductsHelper +end diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb new file mode 100644 index 0000000000..37d3ce7099 --- /dev/null +++ b/app/views/homepages/index.html.erb @@ -0,0 +1,2 @@ +

Homepages#index

+

Find me in app/views/homepages/index.html.erb

diff --git a/app/views/order_items/index.html.erb b/app/views/order_items/index.html.erb new file mode 100644 index 0000000000..25eb4a6ac8 --- /dev/null +++ b/app/views/order_items/index.html.erb @@ -0,0 +1,2 @@ +

OrderItems#index

+

Find me in app/views/order_items/index.html.erb

diff --git a/app/views/orders/index.html.erb b/app/views/orders/index.html.erb new file mode 100644 index 0000000000..d63a69fb54 --- /dev/null +++ b/app/views/orders/index.html.erb @@ -0,0 +1,2 @@ +

Orders#index

+

Find me in app/views/orders/index.html.erb

diff --git a/app/views/products/index.html.erb b/app/views/products/index.html.erb new file mode 100644 index 0000000000..f8eeb82674 --- /dev/null +++ b/app/views/products/index.html.erb @@ -0,0 +1,2 @@ +

Products#index

+

Find me in app/views/products/index.html.erb

diff --git a/config/routes.rb b/config/routes.rb index c06383a172..0c8e4e3277 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,3 +1,7 @@ Rails.application.routes.draw do + get 'homepages/index' + get 'order_items/index' + get 'orders/index' + get 'products/index' # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end diff --git a/test/controllers/homepages_controller_test.rb b/test/controllers/homepages_controller_test.rb new file mode 100644 index 0000000000..1fa2ec2097 --- /dev/null +++ b/test/controllers/homepages_controller_test.rb @@ -0,0 +1,9 @@ +require "test_helper" + +describe HomepagesController do + it "must get index" do + get homepages_index_url + must_respond_with :success + end + +end diff --git a/test/controllers/order_items_controller_test.rb b/test/controllers/order_items_controller_test.rb new file mode 100644 index 0000000000..0a8db1a9d5 --- /dev/null +++ b/test/controllers/order_items_controller_test.rb @@ -0,0 +1,9 @@ +require "test_helper" + +describe OrderItemsController do + it "must get index" do + get order_items_index_url + must_respond_with :success + end + +end diff --git a/test/controllers/orders_controller_test.rb b/test/controllers/orders_controller_test.rb new file mode 100644 index 0000000000..a218509a41 --- /dev/null +++ b/test/controllers/orders_controller_test.rb @@ -0,0 +1,9 @@ +require "test_helper" + +describe OrdersController do + it "must get index" do + get orders_index_url + must_respond_with :success + end + +end diff --git a/test/controllers/products_controller_test.rb b/test/controllers/products_controller_test.rb new file mode 100644 index 0000000000..56e23755d7 --- /dev/null +++ b/test/controllers/products_controller_test.rb @@ -0,0 +1,9 @@ +require "test_helper" + +describe ProductsController do + it "must get index" do + get products_index_url + must_respond_with :success + end + +end From f17c7eb94207962b7d112c1460e2f2616095189b Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Wed, 18 Nov 2020 16:42:04 -0800 Subject: [PATCH 007/129] Removed order_item_id reference column from order table --- db/migrate/20201119003947_remove_item_id_from_orders.rb | 5 +++++ db/schema.rb | 4 +--- 2 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 db/migrate/20201119003947_remove_item_id_from_orders.rb diff --git a/db/migrate/20201119003947_remove_item_id_from_orders.rb b/db/migrate/20201119003947_remove_item_id_from_orders.rb new file mode 100644 index 0000000000..0bbfe9011a --- /dev/null +++ b/db/migrate/20201119003947_remove_item_id_from_orders.rb @@ -0,0 +1,5 @@ +class RemoveItemIdFromOrders < ActiveRecord::Migration[6.0] + def change + remove_column :orders, :order_item_id + end +end diff --git a/db/schema.rb b/db/schema.rb index c0a7608a06..e37f0a5780 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_11_17_235026) do +ActiveRecord::Schema.define(version: 2020_11_19_003947) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -35,11 +35,9 @@ end create_table "orders", force: :cascade do |t| - t.bigint "order_item_id", null: false t.string "status" t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false - t.index ["order_item_id"], name: "index_orders_on_order_item_id" end create_table "products", force: :cascade do |t| From d7d1861245c1a88a02df1d41781af1c83d4d0689 Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Wed, 18 Nov 2020 17:10:46 -0800 Subject: [PATCH 008/129] Added seed data --- db/seeds.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/db/seeds.rb b/db/seeds.rb index 1beea2accd..a3bafd46bf 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -5,3 +5,8 @@ # # movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) # Character.create(name: 'Luke', movie: movies.first) + +merchants = Merchant.create!([{username: "coolperson", email: "coolperson@cool.com", provider: + "github", uid: "832943"}]) +products = Product.create!([{ name: "Furby", description: "A toy from the 90s", price: 9.99, + stock: 200, merchant: merchants.first}]) From 06a5d70ec3c076dd9c1dd20843db694a51ad18ff Mon Sep 17 00:00:00 2001 From: Sandy Date: Wed, 18 Nov 2020 17:11:07 -0800 Subject: [PATCH 009/129] added indirect relationship --- app/models/order.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/order.rb b/app/models/order.rb index b8ff4b192c..b36051f45f 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -1,3 +1,4 @@ class Order < ApplicationRecord has_many :order_items + has_many :products, through: :order_items end From 6ca9594140298c76bc409f82adaa0ee80b15d736 Mon Sep 17 00:00:00 2001 From: Ida Date: Wed, 18 Nov 2020 17:42:42 -0800 Subject: [PATCH 010/129] added merchant and product views and index controller action --- .generators | 4 ++-- Gemfile.lock | 8 ++++---- app/controllers/merchants_controller.rb | 4 ++++ app/controllers/products_controller.rb | 2 ++ app/models/merchant.rb | 1 + app/views/merchants/index.html.erb | 8 ++++++++ app/views/products/index.html.erb | 12 +++++++++++- config/routes.rb | 16 ++++++++++++---- 8 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 app/views/merchants/index.html.erb diff --git a/.generators b/.generators index 83a98ab0c4..1618976692 100644 --- a/.generators +++ b/.generators @@ -1,8 +1,8 @@ - + +--> diff --git a/Gemfile.lock b/Gemfile.lock index 6283750b6c..5c056fcc4c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -88,8 +88,8 @@ GEM coderay (1.1.3) concurrent-ruby (1.1.7) crass (1.0.6) - debase (2.3.0) - debase-ruby_core_source (~> 0.10.10) + debase (0.2.4.1) + debase-ruby_core_source (>= 0.10.2) debase-ruby_core_source (0.10.11) debug_inspector (0.0.3) erubi (1.10.0) @@ -200,8 +200,8 @@ GEM rb-inotify (0.10.1) ffi (~> 1.0) regexp_parser (1.8.2) - ruby-debug-ide (2.3.0) - debase (~> 2.3.0) + ruby-debug-ide (0.7.2) + rake (>= 0.8.1) ruby-progressbar (1.10.1) rubyzip (2.3.0) sass-rails (6.0.0) diff --git a/app/controllers/merchants_controller.rb b/app/controllers/merchants_controller.rb index ae95f7677b..51fd3b0d82 100644 --- a/app/controllers/merchants_controller.rb +++ b/app/controllers/merchants_controller.rb @@ -1,2 +1,6 @@ class MerchantsController < ApplicationController + + def index + @merchants = Merchant.all + end end diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 72f670ec77..a8974b96fb 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -1,4 +1,6 @@ class ProductsController < ApplicationController def index + @products = Product.all + end end diff --git a/app/models/merchant.rb b/app/models/merchant.rb index 07aacc445d..652ecca95c 100644 --- a/app/models/merchant.rb +++ b/app/models/merchant.rb @@ -1,3 +1,4 @@ class Merchant < ApplicationRecord has_many :products + end diff --git a/app/views/merchants/index.html.erb b/app/views/merchants/index.html.erb new file mode 100644 index 0000000000..5f995b0094 --- /dev/null +++ b/app/views/merchants/index.html.erb @@ -0,0 +1,8 @@ +<% @merchants.each do |merchant| %> +
    +
  • <%= merchant.username %>
  • +
  • <%= merchant.email %>
  • +
  • <%= merchant.provider %>
  • +
  • <%= merchant.uid %>
  • +
+<% end %> diff --git a/app/views/products/index.html.erb b/app/views/products/index.html.erb index f8eeb82674..64bd0e52ef 100644 --- a/app/views/products/index.html.erb +++ b/app/views/products/index.html.erb @@ -1,2 +1,12 @@ -

Products#index

+

Products

Find me in app/views/products/index.html.erb

+ +<% @products.each do |product| %> +
    +
  • <%= product.name %>
  • +
  • <%= product.description %>
  • +
  • <%= product.price %>
  • +
  • <%= product.merchant_id %>
  • +
  • <%= product.stock %>
  • +
+<% end %> diff --git a/config/routes.rb b/config/routes.rb index 0c8e4e3277..e0efda8814 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,7 +1,15 @@ Rails.application.routes.draw do - get 'homepages/index' - get 'order_items/index' - get 'orders/index' - get 'products/index' + + root to: "homepages#index" + resources :homepages + resources :merchants + resources :order_items + resources :orders + resources :products + # get 'homepages/index' + # get 'order_items/index' + # get 'orders/index' + # get 'products/index' # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html + end From 1b1330614073d1d2718a4efb6183e036ee1d8e35 Mon Sep 17 00:00:00 2001 From: Sandy Date: Wed, 18 Nov 2020 22:04:34 -0800 Subject: [PATCH 011/129] initial style push to sandy-pEtsy-theme --- app/views/homepages/index.html.erb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb index 37d3ce7099..ec0e5ce445 100644 --- a/app/views/homepages/index.html.erb +++ b/app/views/homepages/index.html.erb @@ -1,2 +1,4 @@

Homepages#index

Find me in app/views/homepages/index.html.erb

+ +testing themes From 2501dd0c5674edfa1d7daa9c6318fd1cf42eceed Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Wed, 18 Nov 2020 22:05:29 -0800 Subject: [PATCH 012/129] Added basic product CRUD --- app/controllers/products_controller.rb | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index a8974b96fb..0f642d54b0 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -3,4 +3,38 @@ def index @products = Product.all end + + def show + @product = Product.find_by(id: params[:id]) + + if @product.nil? + redirect_to products_path + return + end + end + + def new + @product = Product.new + end + + def create + @product = Product.new(product_parms) + + if @product.save + redirect_to product_path(@product.id) + return + else + @product.errors.each do |type, err| + flash[type] = err + end + render :new + end + end + + + + + + end + end end From 67f1e8e968edf834b3be9b4f8ebcc694ac6941ee Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Wed, 18 Nov 2020 22:54:04 -0800 Subject: [PATCH 013/129] Some basic CRUD and view refinements for product/merchant --- app/assets/stylesheets/products.scss | 4 ++++ app/controllers/merchants_controller.rb | 9 +++++++++ app/controllers/products_controller.rb | 6 ------ app/views/merchants/index.html.erb | 13 +++++++++---- app/views/merchants/show.html.erb | 10 ++++++++++ app/views/products/index.html.erb | 16 ++++++++-------- 6 files changed, 40 insertions(+), 18 deletions(-) create mode 100644 app/views/merchants/show.html.erb diff --git a/app/assets/stylesheets/products.scss b/app/assets/stylesheets/products.scss index 8f0ca888eb..98bd0390cd 100644 --- a/app/assets/stylesheets/products.scss +++ b/app/assets/stylesheets/products.scss @@ -1,3 +1,7 @@ // Place all the styles related to the Products controller here. // They will automatically be included in application.css. // You can use Sass (SCSS) here: https://sass-lang.com/ + +li { + list-style: none; +} \ No newline at end of file diff --git a/app/controllers/merchants_controller.rb b/app/controllers/merchants_controller.rb index 51fd3b0d82..98ac71057e 100644 --- a/app/controllers/merchants_controller.rb +++ b/app/controllers/merchants_controller.rb @@ -3,4 +3,13 @@ class MerchantsController < ApplicationController def index @merchants = Merchant.all end + + def show + @merchant = Merchant.find_by(username: params[:username]) + + if @merchant.nil? + redirect_to merchants_path + return + end + end end diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 0f642d54b0..97112d65e0 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -31,10 +31,4 @@ def create end end - - - - - end - end end diff --git a/app/views/merchants/index.html.erb b/app/views/merchants/index.html.erb index 5f995b0094..69453d4fbb 100644 --- a/app/views/merchants/index.html.erb +++ b/app/views/merchants/index.html.erb @@ -1,8 +1,13 @@ +
+

Check out these fine stores...

<% @merchants.each do |merchant| %> +
    -
  • <%= merchant.username %>
  • -
  • <%= merchant.email %>
  • -
  • <%= merchant.provider %>
  • -
  • <%= merchant.uid %>
  • +
  • <%= link_to merchant.username, merchant_path(merchant) %>

  • +
  • Email: <%= merchant.email %>
  • + + +
<% end %> +
diff --git a/app/views/merchants/show.html.erb b/app/views/merchants/show.html.erb new file mode 100644 index 0000000000..555893c199 --- /dev/null +++ b/app/views/merchants/show.html.erb @@ -0,0 +1,10 @@ +

<%= @merchant.username %>'s store

+ + +

Products sold:

+ + + + + +
Product Name
diff --git a/app/views/products/index.html.erb b/app/views/products/index.html.erb index 64bd0e52ef..2fd9e1f556 100644 --- a/app/views/products/index.html.erb +++ b/app/views/products/index.html.erb @@ -1,12 +1,12 @@ -

Products

-

Find me in app/views/products/index.html.erb

- +

Fineries for Furry Friends

<% @products.each do |product| %> +
    -
  • <%= product.name %>
  • -
  • <%= product.description %>
  • -
  • <%= product.price %>
  • -
  • <%= product.merchant_id %>
  • -
  • <%= product.stock %>
  • +
  • <%= product.name %>

  • +
  • Description: <%= product.description %>
  • +
  • Price: $<%= product.price %>
  • +
  • Sold by <%= link_to product.merchant.username, merchant_path(product.merchant) %>
  • +
  • <%= product.stock %> in stock
+
<% end %> From 7df9f204ffe587cbee6a62ff1d188446ed8ab74f Mon Sep 17 00:00:00 2001 From: Ida Date: Thu, 19 Nov 2020 10:28:23 -0800 Subject: [PATCH 014/129] add validations for merchant class --- app/models/merchant.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/merchant.rb b/app/models/merchant.rb index 652ecca95c..0d89da45a3 100644 --- a/app/models/merchant.rb +++ b/app/models/merchant.rb @@ -1,4 +1,5 @@ class Merchant < ApplicationRecord has_many :products - + validates :username, presence: true, uniqueness: true + validates :email, presence: true, uniqueness: true end From 09a74c1d9fe9bd0eef91f77b8bb71317f131f2da Mon Sep 17 00:00:00 2001 From: Ida Date: Thu, 19 Nov 2020 10:41:24 -0800 Subject: [PATCH 015/129] added validations for product and orderitem classes --- app/models/order_item.rb | 1 + app/models/product.rb | 3 +++ 2 files changed, 4 insertions(+) diff --git a/app/models/order_item.rb b/app/models/order_item.rb index eecf9e7ebf..6d9c04fbc5 100644 --- a/app/models/order_item.rb +++ b/app/models/order_item.rb @@ -1,4 +1,5 @@ class OrderItem < ApplicationRecord belongs_to :product belongs_to :order + validates :quantity, presence: true, numericality: { only_integer: true, greater_than: 0 } end diff --git a/app/models/product.rb b/app/models/product.rb index ee78335d7b..4bc509ca8d 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -1,4 +1,7 @@ class Product < ApplicationRecord belongs_to :merchant has_many :order_items + validates :name, presence: true, uniqueness: true + validates :price, presence: true, numericality: { only_integer: true, greater_than: 0 } + end From df59510a762502592b85ce7e0603452b0e7187eb Mon Sep 17 00:00:00 2001 From: Ida Date: Thu, 19 Nov 2020 10:43:31 -0800 Subject: [PATCH 016/129] updated product validation --- app/models/product.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/product.rb b/app/models/product.rb index 4bc509ca8d..0d16f52187 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -2,6 +2,6 @@ class Product < ApplicationRecord belongs_to :merchant has_many :order_items validates :name, presence: true, uniqueness: true - validates :price, presence: true, numericality: { only_integer: true, greater_than: 0 } + validates :price, presence: true, numericality: { greater_than: 0 } end From 48be2dfb7b74d4efc94899d4b46615178554e9b7 Mon Sep 17 00:00:00 2001 From: Ida Date: Thu, 19 Nov 2020 11:08:29 -0800 Subject: [PATCH 017/129] added validation and relationship tests for Product class --- test/models/product_test.rb | 45 ++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/test/models/product_test.rb b/test/models/product_test.rb index 6977718e14..6bb022c311 100644 --- a/test/models/product_test.rb +++ b/test/models/product_test.rb @@ -1,7 +1,46 @@ require "test_helper" describe Product do - # it "does a thing" do - # value(1+1).must_equal 2 - # end + before do + @merchant = Merchant.create(username: "coolperson", email: "coolperson@cool.com", provider: + "github", uid: "832943") + @product = Product.create(name: "test name", description: "test description", price: 4.55, + photo_url: "gettyimages.com", stock: 10, merchant_id: @merchant.id) + end + + describe "validations" do + it "can be instantiated" do + expect(@product.valid?).must_equal true + end + + it "fails validations when name is not present" do + invalid_product = Product.create(description: "test description", price: 2.55, + photo_url: "gettyimages.com", stock: 10, merchant_id: @merchant.id) + expect(invalid_product.valid?).must_equal false + end + + it "fails validations when name is not unique" do + invalid_name = Product.create(name: "test name", description: "new description", price: 1.55, + photo_url: "gettyimages.com", stock: 10, merchant_id: @merchant.id) + expect(invalid_name.valid?).must_equal false + end + end + + describe "relationships" do + it 'belongs to a merchant' do + # product = votes(:vote_one) + Merchant.all.each do |merchant| + if merchant.id == @product.merchant_id + expect(@product.merchant_id).must_equal merchant.id + end + end + end + + # it "has many order items" do + # + # expect(@product.order_items) + # + # end + + end end From f12b29675407b59ff295780f1c15784c7c0b9aa1 Mon Sep 17 00:00:00 2001 From: Ida Date: Thu, 19 Nov 2020 11:22:22 -0800 Subject: [PATCH 018/129] updated merchant and product test validations --- test/models/merchant_test.rb | 41 +++++++++++++++++++++++++++++++++--- test/models/product_test.rb | 20 +++++++++++++++++- 2 files changed, 57 insertions(+), 4 deletions(-) diff --git a/test/models/merchant_test.rb b/test/models/merchant_test.rb index ca3d6ca9b2..96fa5f3614 100644 --- a/test/models/merchant_test.rb +++ b/test/models/merchant_test.rb @@ -1,7 +1,42 @@ require "test_helper" describe Merchant do - # it "does a thing" do - # value(1+1).must_equal 2 - # end + before do + @merchant = Merchant.create(username: "test merchant", email: "coolperson@cool.com", provider: + "github", uid: "832943") + @product = Product.create(name: "test name", description: "test description", price: 4.55, + photo_url: "gettyimages.com", stock: 10, merchant_id: @merchant.id) + end + + describe "validations" do + it "can be instantiated" do + expect(@merchant.valid?).must_equal true + end + + it "fails validations when username is not present" do + invalid_merchant = Merchant.create(email: "coolperson@cool.com", + provider: "github", uid: "832943") + expect(invalid_merchant.valid?).must_equal false + end + + it "fails validations when username is not unique" do + invalid_name = Product.create(name: "test name", description: "new description", price: 1.55, + photo_url: "gettyimages.com", stock: 10, merchant_id: @merchant.id) + expect(invalid_name.valid?).must_equal false + end + + it "fails validations when email is not present" do + missing_email = Merchant.create(username: "test merchant", provider: + "github", uid: "832943") + expect(missing_email.valid?).must_equal false + end + + it "fails validation when email is not unique" do + invalid_email = Merchant.create(username: "test merchant", email: "coolperson@cool.com", provider: + "github", uid: "832943") + expect(invalid_email.valid?).must_equal false + end + + end + end diff --git a/test/models/product_test.rb b/test/models/product_test.rb index 6bb022c311..1e291e9442 100644 --- a/test/models/product_test.rb +++ b/test/models/product_test.rb @@ -24,11 +24,29 @@ photo_url: "gettyimages.com", stock: 10, merchant_id: @merchant.id) expect(invalid_name.valid?).must_equal false end + + it "fails validations when price is not a number" do + invalid_number = Product.create(name: "test name", description: "test description", price: "letters", + photo_url: "gettyimages.com", stock: 10, merchant_id: @merchant.id) + expect(invalid_number.valid?).must_equal false + end + + it "fails validations when price is less than 0" do + negative_number = Product.create(name: "test name", description: "test description", price: -200, + photo_url: "gettyimages.com", stock: 10, merchant_id: @merchant.id) + expect(negative_number.valid?).must_equal false + end + + it "fails validations when price is not present" do + missing_price = Product.create(name: "test name", description: "test description", + photo_url: "gettyimages.com", stock: 10, merchant_id: @merchant.id) + expect(missing_price.valid?).must_equal false + end + end describe "relationships" do it 'belongs to a merchant' do - # product = votes(:vote_one) Merchant.all.each do |merchant| if merchant.id == @product.merchant_id expect(@product.merchant_id).must_equal merchant.id From 45bdd50c438b6ef3d1a667f48d37cbf17342b3ca Mon Sep 17 00:00:00 2001 From: Hanh Solo Date: Thu, 19 Nov 2020 11:28:24 -0800 Subject: [PATCH 019/129] Set up omniauth, .env and initilaizer --- Gemfile | 7 +++++++ Gemfile.lock | 31 +++++++++++++++++++++++++++++++ config/initializers/omniauth.rb | 3 +++ 3 files changed, 41 insertions(+) create mode 100644 config/initializers/omniauth.rb diff --git a/Gemfile b/Gemfile index 48cdee19cb..8fa528d4ab 100644 --- a/Gemfile +++ b/Gemfile @@ -28,6 +28,11 @@ gem 'jbuilder', '~> 2.7' # Reduces boot times through caching; required in config/boot.rb gem 'bootsnap', '>= 1.4.2', require: false +# +gem 'omniauth' +gem 'omniauth-github' + + group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] @@ -40,6 +45,8 @@ group :development do # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring' gem 'spring-watcher-listen', '~> 2.0.0' + # .env file + gem 'dotenv-rails' end group :test do diff --git a/Gemfile.lock b/Gemfile.lock index 5c056fcc4c..c36c89dd8e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -92,8 +92,15 @@ GEM debase-ruby_core_source (>= 0.10.2) debase-ruby_core_source (0.10.11) debug_inspector (0.0.3) + dotenv (2.7.6) + dotenv-rails (2.7.6) + dotenv (= 2.7.6) + railties (>= 3.2) erubi (1.10.0) execjs (2.7.0) + faraday (1.1.0) + multipart-post (>= 1.2, < 3) + ruby2_keywords ffi (1.13.1) formatador (0.2.5) globalid (0.4.2) @@ -111,6 +118,7 @@ GEM guard-minitest (2.4.6) guard-compat (~> 1.2) minitest (>= 3.0) + hashie (4.1.0) i18n (1.8.5) concurrent-ruby (~> 1.0) jbuilder (2.10.1) @@ -122,6 +130,7 @@ GEM jquery-turbolinks (2.1.0) railties (>= 3.1.0) turbolinks + jwt (2.2.2) listen (3.3.1) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) @@ -147,6 +156,9 @@ GEM minitest (>= 5.0) ruby-progressbar msgpack (1.3.3) + multi_json (1.15.0) + multi_xml (0.6.0) + multipart-post (2.1.1) nenv (0.3.0) nio4r (2.5.4) nokogiri (1.10.10) @@ -154,6 +166,21 @@ GEM notiffany (0.1.3) nenv (~> 0.1) shellany (~> 0.0) + oauth2 (1.4.4) + faraday (>= 0.8, < 2.0) + jwt (>= 1.0, < 3.0) + multi_json (~> 1.3) + multi_xml (~> 0.5) + rack (>= 1.2, < 3) + omniauth (1.9.1) + hashie (>= 3.4.6) + rack (>= 1.6.2, < 3) + omniauth-github (1.4.0) + omniauth (~> 1.5) + omniauth-oauth2 (>= 1.4.0, < 2.0) + omniauth-oauth2 (1.7.0) + oauth2 (~> 1.4) + omniauth (~> 1.9) pg (1.2.3) popper_js (1.16.0) pry (0.13.1) @@ -203,6 +230,7 @@ GEM ruby-debug-ide (0.7.2) rake (>= 0.8.1) ruby-progressbar (1.10.1) + ruby2_keywords (0.0.2) rubyzip (2.3.0) sass-rails (6.0.0) sassc-rails (~> 2.1, >= 2.1.1) @@ -268,6 +296,7 @@ DEPENDENCIES byebug capybara (>= 2.15) debase (>= 0.2.4.1) + dotenv-rails guard guard-minitest jbuilder (~> 2.7) @@ -276,6 +305,8 @@ DEPENDENCIES listen (~> 3.2) minitest-rails minitest-reporters + omniauth + omniauth-github pg (>= 0.18, < 2.0) pry-rails puma (~> 4.1) diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb new file mode 100644 index 0000000000..dce3db561a --- /dev/null +++ b/config/initializers/omniauth.rb @@ -0,0 +1,3 @@ +Rails.application.config.middleware.use OmniAuth::Builder do + provider :github, ENV["GITHUB_CLIENT_ID"], ENV["GITHUB_CLIENT_SECRET"], scope: "user:email" +end \ No newline at end of file From 0b4ef0948bc260a30174bfeb448f1881ea940535 Mon Sep 17 00:00:00 2001 From: Hanh Solo Date: Thu, 19 Nov 2020 11:50:34 -0800 Subject: [PATCH 020/129] create method and helper method for merchants --- app/controllers/merchants_controller.rb | 30 +++++++++++++++++++++++++ app/models/merchant.rb | 12 ++++++++++ app/views/layouts/application.html.erb | 7 +++++- config/routes.rb | 3 +++ 4 files changed, 51 insertions(+), 1 deletion(-) diff --git a/app/controllers/merchants_controller.rb b/app/controllers/merchants_controller.rb index 51fd3b0d82..f0e6f862ca 100644 --- a/app/controllers/merchants_controller.rb +++ b/app/controllers/merchants_controller.rb @@ -3,4 +3,34 @@ class MerchantsController < ApplicationController def index @merchants = Merchant.all end + + def create + auth_hash = request.env['omniauth.auth'] + merchant = Merchant.find_by(uid: auth_hash[:uid], provider: "github") + if merchant + # merchant was found in the database + flash[:success] = "Logged in as returning merchant #{merchant.username}" + else + # merchant doesn't match anything in the DB + # Attempt to create a new merchant + merchant = Merchant.build_from_github(auth_hash) + + if merchant.save + flash[:success] = "Logged in as new merchant #{merchant.username}" + else + # Couldn't save the merchant for some reason. If we + # hit this it probably means there's a bug with the + # way we've configured GitHub. Our strategy will + # be to display error messages to make future + # debugging easier. + flash[:error] = "Could not create new merchant account: #{merchant.errors.messages}" + return redirect_to root_path + end + end + + # If we get here, we have a valid merchant instance + session[:merchant_id] = merchant.id + return redirect_to root_path + end + end diff --git a/app/models/merchant.rb b/app/models/merchant.rb index 652ecca95c..89c3e68ebf 100644 --- a/app/models/merchant.rb +++ b/app/models/merchant.rb @@ -1,4 +1,16 @@ class Merchant < ApplicationRecord has_many :products + def self.build_from_github(auth_hash) + merchant = Merchant.new + merchant.uid = auth_hash[:uid] + merchant.provider = "github" + merchant.username = auth_hash["info"]["nickname"] + merchant.email = auth_hash["info"]["email"] + + # Note that the merchant has not been saved. + # We'll choose to do the saving outside of this method + return merchant + end + end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 74961e61a4..77759192e6 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -1,7 +1,7 @@ - Betsy + Petsy <%= csrf_meta_tags %> <%= csp_meta_tag %> @@ -10,6 +10,11 @@ +
+ +
<%= yield %> diff --git a/config/routes.rb b/config/routes.rb index e0efda8814..20f2827c5f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -6,6 +6,9 @@ resources :order_items resources :orders resources :products + get '/auth/github', as: 'github_login' + get '/auth/:provider/callback', to: 'merchants#create' + # get 'homepages/index' # get 'order_items/index' # get 'orders/index' From 65d4f107ca8f77258e48b06b23cadb90cfb3a440 Mon Sep 17 00:00:00 2001 From: Ida Date: Thu, 19 Nov 2020 12:24:50 -0800 Subject: [PATCH 021/129] added products controller tests --- test/controllers/products_controller_test.rb | 90 +++++++++++++++++++- 1 file changed, 87 insertions(+), 3 deletions(-) diff --git a/test/controllers/products_controller_test.rb b/test/controllers/products_controller_test.rb index 56e23755d7..ac5f9e1baf 100644 --- a/test/controllers/products_controller_test.rb +++ b/test/controllers/products_controller_test.rb @@ -1,9 +1,93 @@ require "test_helper" describe ProductsController do - it "must get index" do - get products_index_url - must_respond_with :success + let(:product) { + Product.create(name: "furby", description: "dog toy", price: 30.50, + photo_url: "gettyimages.com", stock: 10) + } + describe "index" do + it "responds with success when products are saved" do + # get products_index_url + get products_path + must_respond_with :success + end + + it "responds with success when no products are saved" do + + Product.destroy_all + expect(Product.all.count).must_equal 0 + + get products_path + + must_respond_with :success + end + end + + describe "show" do + it "responds with success when showing an existing product" do + id = product.id + + get product_path(id) + must_respond_with :success + end + + it "responds with redirect with an invalid product id" do + invalid_id = -1 + + get product_path(invalid_id) + + must_respond_with :redirect + must_redirect_to products_path + end + end + describe "new" do + it "responds with success" do + get new_product_path + must_respond_with :success + end + end + + describe "create" do + it "can create a new product with valid information" do + product_hash = { + product: { + name: "furbyyy", + price: 10.25, + photo_url: "pexels.com", + stock: 5, + merchand_id: 1 + } + } + + expect{ + post products_path, params: product_hash + }.must_change "Product.count", 1 + + created_product = Product.find_by(name: product_hash[:product][:name]) + expect(created_product.id).must_equal product_hash[:product][:id] + + must_respond_with :redirect + must_redirect_to product_path(created_product) + end + + it "does not create a passenger if the form data violates Product validations" do + invalid_product_hash = { + product: { + name: nil, + price: nil, + photo_url: nil, + stock: nil, + merchand_id: nil + } + } + + expect{ + post products_path, params: invalid_product_hash + }.wont_change "Product.count" + end + end + + end From c979ceffdc3d694e45ebf6711db92e4239dacaaf Mon Sep 17 00:00:00 2001 From: Hanh Solo Date: Thu, 19 Nov 2020 13:34:48 -0800 Subject: [PATCH 022/129] log_out, current_user methods --- app/controllers/application_controller.rb | 13 +++++++++++++ app/controllers/merchants_controller.rb | 8 ++++++++ app/views/layouts/application.html.erb | 23 ++++++++++++++++++++++- config/routes.rb | 1 + 4 files changed, 44 insertions(+), 1 deletion(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 09705d12ab..4a60108e9c 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,2 +1,15 @@ class ApplicationController < ActionController::Base + # before_action :require_login + before_action :get_current_merchant + + def get_current_merchant + @current_merchant = Merchant.find(session[:merchant_id]) if session[:merchant_id] + end + + def require_login + if current_merchant.nil? + flash[:error] = "You must be logged in to view this section" + redirect_to login_path + end + end end diff --git a/app/controllers/merchants_controller.rb b/app/controllers/merchants_controller.rb index f0e6f862ca..78bf770119 100644 --- a/app/controllers/merchants_controller.rb +++ b/app/controllers/merchants_controller.rb @@ -33,4 +33,12 @@ def create return redirect_to root_path end + def destroy + session[:merchant_id] = nil + flash[:success] = "Successfully logged out!" + + redirect_to root_path + end + end + diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 77759192e6..56d3c16db4 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -12,9 +12,30 @@
+
+ <% flash.each do |name, message| %> + <% if name == "success" %> +
+ <%= message %> +
+ <% else %> +
+ <%= message %> +
+ <% end %> + <% end %> +
+ + + <%= yield %> diff --git a/config/routes.rb b/config/routes.rb index 20f2827c5f..a04ab4d577 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -8,6 +8,7 @@ resources :products get '/auth/github', as: 'github_login' get '/auth/:provider/callback', to: 'merchants#create' + delete '/logout', to: 'merchants#destroy', as: 'logout' # get 'homepages/index' # get 'order_items/index' From ce46b2c56ecaf844f24553ab586e3005b2c90e25 Mon Sep 17 00:00:00 2001 From: Hanh Solo Date: Thu, 19 Nov 2020 14:00:55 -0800 Subject: [PATCH 023/129] Updated Oauth testing for merchants --- app/controllers/products_controller.rb | 1 - config/routes.rb | 2 +- test/controllers/homepages_controller_test.rb | 2 +- test/controllers/merchants_controller_test.rb | 37 +++++++++++++++++-- .../order_items_controller_test.rb | 8 ++-- test/controllers/orders_controller_test.rb | 8 ++-- test/controllers/products_controller_test.rb | 2 +- test/fixtures/merchants.yml | 11 ++++++ test/test_helper.rb | 27 ++++++++++++++ 9 files changed, 83 insertions(+), 15 deletions(-) create mode 100644 test/fixtures/merchants.yml diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index a8974b96fb..b93cd40f50 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -1,6 +1,5 @@ class ProductsController < ApplicationController def index @products = Product.all - end end diff --git a/config/routes.rb b/config/routes.rb index a04ab4d577..2aaa375f8c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -7,7 +7,7 @@ resources :orders resources :products get '/auth/github', as: 'github_login' - get '/auth/:provider/callback', to: 'merchants#create' + get '/auth/:provider/callback', to: 'merchants#create', as: 'auth_callback_path' delete '/logout', to: 'merchants#destroy', as: 'logout' # get 'homepages/index' diff --git a/test/controllers/homepages_controller_test.rb b/test/controllers/homepages_controller_test.rb index 1fa2ec2097..180285d736 100644 --- a/test/controllers/homepages_controller_test.rb +++ b/test/controllers/homepages_controller_test.rb @@ -2,7 +2,7 @@ describe HomepagesController do it "must get index" do - get homepages_index_url + get homepages_path must_respond_with :success end diff --git a/test/controllers/merchants_controller_test.rb b/test/controllers/merchants_controller_test.rb index 7861d3b7c5..fa47389eaf 100644 --- a/test/controllers/merchants_controller_test.rb +++ b/test/controllers/merchants_controller_test.rb @@ -1,7 +1,38 @@ require "test_helper" + describe MerchantsController do - # it "does a thing" do - # value(1+1).must_equal 2 - # end + describe "auth_callback" do + it "logs in an existing merchant" do + start_count = Merchant.count + merchant = merchants(:grace) + + perform_login(merchant) + must_redirect_to root_path + session[:merchant_id].must_equal merchant.id + + # Should *not* have created a new merchant + merchant.count.must_equal start_count + end + + it "creates an account for a new merchant and redirects to the root route" do + start_count = Merchant.count + merchant = Merchant.new(provider: "github", uid: 99999, username: "test_merchant", email: "test@merchant.com") + + perform_login(merchant) + + must_redirect_to root_path + + # Should have created a new merchant + merchant.count.must_equal start_count + 1 + + # The new merchant's ID should be set in the session + session[:merchant_id].must_equal merchant.last.id + + end + + it "redirects to the login route if given invalid merchant data" do + skip # need validations in model + end + end end diff --git a/test/controllers/order_items_controller_test.rb b/test/controllers/order_items_controller_test.rb index 0a8db1a9d5..3981b307d0 100644 --- a/test/controllers/order_items_controller_test.rb +++ b/test/controllers/order_items_controller_test.rb @@ -1,9 +1,9 @@ require "test_helper" describe OrderItemsController do - it "must get index" do - get order_items_index_url - must_respond_with :success - end + # it "must get index" do + # get order_items_index_url + # must_respond_with :success + # end end diff --git a/test/controllers/orders_controller_test.rb b/test/controllers/orders_controller_test.rb index a218509a41..abe3208513 100644 --- a/test/controllers/orders_controller_test.rb +++ b/test/controllers/orders_controller_test.rb @@ -1,9 +1,9 @@ require "test_helper" describe OrdersController do - it "must get index" do - get orders_index_url - must_respond_with :success - end + # it "must get index" do + # get orders_index_url + # must_respond_with :success + # end end diff --git a/test/controllers/products_controller_test.rb b/test/controllers/products_controller_test.rb index 56e23755d7..44faabcc44 100644 --- a/test/controllers/products_controller_test.rb +++ b/test/controllers/products_controller_test.rb @@ -2,7 +2,7 @@ describe ProductsController do it "must get index" do - get products_index_url + get products_path must_respond_with :success end diff --git a/test/fixtures/merchants.yml b/test/fixtures/merchants.yml new file mode 100644 index 0000000000..337e1f576f --- /dev/null +++ b/test/fixtures/merchants.yml @@ -0,0 +1,11 @@ +ada: + provider: github + uid: 12345 + email: ada@adadevelopersacademy.org + username: countess_ada + +grace: + provider: github + uid: 13371337 + email: grace@hooper.net + username: graceful_hopps \ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb index b19af0d5bd..cef85f2496 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -18,4 +18,31 @@ class ActiveSupport::TestCase fixtures :all # Add more helper methods to be used by all tests here... + + def setup + # Once you have enabled test mode, all requests + # to OmniAuth will be short circuited to use the mock authentication hash. + # A request to /auth/provider will redirect immediately to /auth/provider/callback. + OmniAuth.config.test_mode = true + end + + def mock_auth_hash(merchant) + return { + provider: merchant.provider, + uid: merchant.uid, + info: { + email: merchant.email, + nickname: merchant.username + } + } + end + + def perform_login(merchant = nil) + merchant ||= Merchant.first + + OmniAuth.config.mock_auth[:github] = OmniAuth::AuthHash.new(mock_auth_hash(merchant)) + get auth_callback_path(:github) + + return merchant + end end From ac761e82b0a52c1f9a2e39e0682ab041f88a070e Mon Sep 17 00:00:00 2001 From: Hanh Solo Date: Thu, 19 Nov 2020 16:29:09 -0800 Subject: [PATCH 024/129] Fixed merchant controller tests --- config/routes.rb | 3 ++- test/controllers/merchants_controller_test.rb | 19 ++++++------------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index 2aaa375f8c..f2ead27f28 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -6,8 +6,9 @@ resources :order_items resources :orders resources :products + get '/auth/:provider/callback', to: 'merchants#create', as: 'auth_callback' get '/auth/github', as: 'github_login' - get '/auth/:provider/callback', to: 'merchants#create', as: 'auth_callback_path' + delete '/logout', to: 'merchants#destroy', as: 'logout' # get 'homepages/index' diff --git a/test/controllers/merchants_controller_test.rb b/test/controllers/merchants_controller_test.rb index fa47389eaf..6668b67deb 100644 --- a/test/controllers/merchants_controller_test.rb +++ b/test/controllers/merchants_controller_test.rb @@ -4,30 +4,23 @@ describe MerchantsController do describe "auth_callback" do it "logs in an existing merchant" do - start_count = Merchant.count merchant = merchants(:grace) - perform_login(merchant) + expect { perform_login(merchant) }.wont_change "Merchant.count" must_redirect_to root_path - session[:merchant_id].must_equal merchant.id + expect(session[:merchant_id]).must_equal merchant.id - # Should *not* have created a new merchant - merchant.count.must_equal start_count end it "creates an account for a new merchant and redirects to the root route" do - start_count = Merchant.count merchant = Merchant.new(provider: "github", uid: 99999, username: "test_merchant", email: "test@merchant.com") - - perform_login(merchant) - - must_redirect_to root_path - + # Should have created a new merchant - merchant.count.must_equal start_count + 1 + expect { perform_login(merchant) }.must_change "Merchant.count", 1 + must_redirect_to root_path # The new merchant's ID should be set in the session - session[:merchant_id].must_equal merchant.last.id + expect(session[:merchant_id]).must_equal Merchant.last.id end From 02ffd3a42278a900125777a47d80d02366c084ef Mon Sep 17 00:00:00 2001 From: Sandy Date: Thu, 19 Nov 2020 18:38:32 -0800 Subject: [PATCH 025/129] adding theme --- Gemfile | 2 + app/assets/images/furby-3.jpg | Bin 0 -> 252254 bytes app/assets/stylesheets/application.scss | 10166 ++++++++++++++++ app/controllers/products_controller.rb | 32 + app/models/category.rb | 3 + app/models/product.rb | 4 + app/views/homepages/index.html.erb | 229 +- app/views/products/index.html.erb | 2 - config/routes.rb | 4 + .../20201119092626_create_categories.rb | 8 + db/schema.rb | 7 +- test/models/category_test.rb | 7 + 12 files changed, 10458 insertions(+), 6 deletions(-) create mode 100644 app/assets/images/furby-3.jpg create mode 100644 app/models/category.rb create mode 100644 db/migrate/20201119092626_create_categories.rb create mode 100644 test/models/category_test.rb diff --git a/Gemfile b/Gemfile index 48cdee19cb..486ab1bf0f 100644 --- a/Gemfile +++ b/Gemfile @@ -28,6 +28,8 @@ gem 'jbuilder', '~> 2.7' # Reduces boot times through caching; required in config/boot.rb gem 'bootsnap', '>= 1.4.2', require: false +# gem 'bootstrap-saas' + group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] diff --git a/app/assets/images/furby-3.jpg b/app/assets/images/furby-3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fc8fc8e7fe75596f7e96750082bb8f50299f5064 GIT binary patch literal 252254 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 QkSAsHER-nQr|N(I*^i3Ds{jB1 literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 17320fb11e..9170af292e 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -16,3 +16,10169 @@ @import "bootstrap"; @import "**/*"; + +/*! + * Bootstrap v4.5.3 (https://getbootstrap.com/) + * Copyright 2011-2020 The Bootstrap Authors + * Copyright 2011-2020 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +:root { + --blue: #007bff; + --indigo: #6610f2; + --purple: #6f42c1; + --pink: #e83e8c; + --red: #dc3545; + --orange: #fd7e14; + --yellow: #ffc107; + --green: #28a745; + --teal: #20c997; + --cyan: #17a2b8; + --white: #fff; + --gray: #6c757d; + --gray-dark: #343a40; + --primary: #007bff; + --secondary: #6c757d; + --success: #28a745; + --info: #17a2b8; + --warning: #ffc107; + --danger: #dc3545; + --light: #f8f9fa; + --dark: #343a40; + --breakpoint-xs: 0; + --breakpoint-sm: 576px; + --breakpoint-md: 768px; + --breakpoint-lg: 992px; + --breakpoint-xl: 1200px; + --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { + display: block; +} + +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + text-align: left; +} + +.list_image{ + float: left; + width: 360px; + height: 300px; + object-fit: cover; + +} + +[tabindex="-1"]:focus:not(:focus-visible) { + outline: 0 !important; +} + +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} + +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: 0.5rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title], +abbr[data-original-title] { + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + border-bottom: 0; + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 700; +} + +dd { + margin-bottom: .5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: bolder; +} + +small { + font-size: 80%; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -.25em; +} + +sup { + top: -.5em; +} + +a { + color: #007bff; + text-decoration: none; + background-color: transparent; +} + +a:hover { + color: #0056b3; + text-decoration: underline; +} + +a:not([href]):not([class]) { + color: inherit; + text-decoration: none; +} + +a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: 1em; +} + +pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + -ms-overflow-style: scrollbar; +} + +figure { + margin: 0 0 1rem; +} + +img { + vertical-align: middle; + border-style: none; +} + +svg { + overflow: hidden; + vertical-align: middle; +} + +table { + border-collapse: collapse; +} + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #6c757d; + text-align: left; + caption-side: bottom; +} + +th { + text-align: inherit; + text-align: -webkit-match-parent; +} + +label { + display: inline-block; + margin-bottom: 0.5rem; +} + +button { + border-radius: 0; +} + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +input { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +[role="button"] { + cursor: pointer; +} + +select { + word-wrap: normal; +} + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +button:not(:disabled), +[type="button"]:not(:disabled), +[type="reset"]:not(:disabled), +[type="submit"]:not(:disabled) { + cursor: pointer; +} + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + padding: 0; + border-style: none; +} + +input[type="radio"], +input[type="checkbox"] { + box-sizing: border-box; + padding: 0; +} + +textarea { + overflow: auto; + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + max-width: 100%; + padding: 0; + margin-bottom: .5rem; + font-size: 1.5rem; + line-height: inherit; + color: inherit; + white-space: normal; +} + +progress { + vertical-align: baseline; +} + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +[type="search"] { + outline-offset: -2px; + -webkit-appearance: none; +} + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +summary { + display: list-item; + cursor: pointer; +} + +template { + display: none; +} + +[hidden] { + display: none !important; +} + +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; +} + +h1, .h1 { + font-size: 2.5rem; +} + +h2, .h2 { + font-size: 2rem; +} + +h3, .h3 { + font-size: 1.75rem; +} + +h4, .h4 { + font-size: 1.5rem; +} + +h5, .h5 { + font-size: 1.25rem; +} + +h6, .h6 { + font-size: 1rem; +} + +.lead { + font-size: 1.25rem; + font-weight: 300; +} + +.display-1 { + font-size: 6rem; + font-weight: 300; + line-height: 1.2; +} + +.display-2 { + font-size: 5.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-3 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.2; +} + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid rgba(0, 0, 0, 0.1); +} + +small, +.small { + font-size: 80%; + font-weight: 400; +} + +mark, +.mark { + padding: 0.2em; + background-color: #fcf8e3; +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} + +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} + +.initialism { + font-size: 90%; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; +} + +.blockquote-footer { + display: block; + font-size: 80%; + color: #6c757d; +} + +.blockquote-footer::before { + content: "\2014\00A0"; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: #fff; + border: 1px solid #dee2e6; + border-radius: 0.25rem; + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 90%; + color: #6c757d; +} + +code { + font-size: 87.5%; + color: #e83e8c; + word-wrap: break-word; +} + +a > code { + color: inherit; +} + +kbd { + padding: 0.2rem 0.4rem; + font-size: 87.5%; + color: #fff; + //background-color: #212529; + border-radius: 0.2rem; +} + +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700; +} + +pre { + display: block; + font-size: 87.5%; + //color: #212529; +} + +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.container, +.container-fluid, +.container-sm, +.container-md, +.container-lg, +.container-xl { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container, .container-sm { + max-width: 540px; + } +} + +@media (min-width: 768px) { + .container, .container-sm, .container-md { + max-width: 720px; + } +} + +@media (min-width: 992px) { + .container, .container-sm, .container-md, .container-lg { + max-width: 960px; + } +} + +@media (min-width: 1200px) { + .container, .container-sm, .container-md, .container-lg, .container-xl { + max-width: 1140px; + } +} + +.row { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -15px; + margin-left: -15px; +} + +.no-gutters { + margin-right: 0; + margin-left: 0; +} + +.no-gutters > .col, +.no-gutters > [class*="col-"] { + padding-right: 0; + padding-left: 0; +} + +.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, +.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, +.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, +.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, +.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, +.col-xl-auto { + position: relative; + width: 100%; + padding-right: 15px; + padding-left: 15px; + padding-top: 50px; +} + +.col { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; +} + +.row-cols-1 > * { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; +} + +.row-cols-2 > * { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; +} + +.row-cols-3 > * { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; +} + +.row-cols-4 > * { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; +} + +.row-cols-5 > * { + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20%; +} + +.row-cols-6 > * { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; +} + +.col-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; +} + +.col-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; +} + +.col-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; +} + +.col-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; +} + +.col-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; +} + +.col-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; +} + +.col-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; +} + +.col-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; +} + +.col-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; +} + +.col-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; +} + +.col-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; +} + +.col-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; +} + +.col-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; +} + +.order-first { + -ms-flex-order: -1; + order: -1; +} + +.order-last { + -ms-flex-order: 13; + order: 13; +} + +.order-0 { + -ms-flex-order: 0; + order: 0; +} + +.order-1 { + -ms-flex-order: 1; + order: 1; +} + +.order-2 { + -ms-flex-order: 2; + order: 2; +} + +.order-3 { + -ms-flex-order: 3; + order: 3; +} + +.order-4 { + -ms-flex-order: 4; + order: 4; +} + +.order-5 { + -ms-flex-order: 5; + order: 5; +} + +.order-6 { + -ms-flex-order: 6; + order: 6; +} + +.order-7 { + -ms-flex-order: 7; + order: 7; +} + +.order-8 { + -ms-flex-order: 8; + order: 8; +} + +.order-9 { + -ms-flex-order: 9; + order: 9; +} + +.order-10 { + -ms-flex-order: 10; + order: 10; +} + +.order-11 { + -ms-flex-order: 11; + order: 11; +} + +.order-12 { + -ms-flex-order: 12; + order: 12; +} + +.offset-1 { + margin-left: 8.333333%; +} + +.offset-2 { + margin-left: 16.666667%; +} + +.offset-3 { + margin-left: 25%; +} + +.offset-4 { + margin-left: 33.333333%; +} + +.offset-5 { + margin-left: 41.666667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.333333%; +} + +.offset-8 { + margin-left: 66.666667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.333333%; +} + +.offset-11 { + margin-left: 91.666667%; +} + +@media (min-width: 576px) { + .col-sm { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .row-cols-sm-1 > * { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .row-cols-sm-2 > * { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .row-cols-sm-3 > * { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .row-cols-sm-4 > * { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .row-cols-sm-5 > * { + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20%; + } + .row-cols-sm-6 > * { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-sm-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-sm-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-sm-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-sm-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-sm-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-sm-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-sm-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-sm-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-sm-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-sm-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-sm-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-sm-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-sm-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-sm-first { + -ms-flex-order: -1; + order: -1; + } + .order-sm-last { + -ms-flex-order: 13; + order: 13; + } + .order-sm-0 { + -ms-flex-order: 0; + order: 0; + } + .order-sm-1 { + -ms-flex-order: 1; + order: 1; + } + .order-sm-2 { + -ms-flex-order: 2; + order: 2; + } + .order-sm-3 { + -ms-flex-order: 3; + order: 3; + } + .order-sm-4 { + -ms-flex-order: 4; + order: 4; + } + .order-sm-5 { + -ms-flex-order: 5; + order: 5; + } + .order-sm-6 { + -ms-flex-order: 6; + order: 6; + } + .order-sm-7 { + -ms-flex-order: 7; + order: 7; + } + .order-sm-8 { + -ms-flex-order: 8; + order: 8; + } + .order-sm-9 { + -ms-flex-order: 9; + order: 9; + } + .order-sm-10 { + -ms-flex-order: 10; + order: 10; + } + .order-sm-11 { + -ms-flex-order: 11; + order: 11; + } + .order-sm-12 { + -ms-flex-order: 12; + order: 12; + } + .offset-sm-0 { + margin-left: 0; + } + .offset-sm-1 { + margin-left: 8.333333%; + } + .offset-sm-2 { + margin-left: 16.666667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.333333%; + } + .offset-sm-5 { + margin-left: 41.666667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.333333%; + } + .offset-sm-8 { + margin-left: 66.666667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.333333%; + } + .offset-sm-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 768px) { + .col-md { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .row-cols-md-1 > * { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .row-cols-md-2 > * { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .row-cols-md-3 > * { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .row-cols-md-4 > * { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .row-cols-md-5 > * { + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20%; + } + .row-cols-md-6 > * { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-md-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-md-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-md-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-md-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-md-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-md-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-md-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-md-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-md-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-md-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-md-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-md-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-md-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-md-first { + -ms-flex-order: -1; + order: -1; + } + .order-md-last { + -ms-flex-order: 13; + order: 13; + } + .order-md-0 { + -ms-flex-order: 0; + order: 0; + } + .order-md-1 { + -ms-flex-order: 1; + order: 1; + } + .order-md-2 { + -ms-flex-order: 2; + order: 2; + } + .order-md-3 { + -ms-flex-order: 3; + order: 3; + } + .order-md-4 { + -ms-flex-order: 4; + order: 4; + } + .order-md-5 { + -ms-flex-order: 5; + order: 5; + } + .order-md-6 { + -ms-flex-order: 6; + order: 6; + } + .order-md-7 { + -ms-flex-order: 7; + order: 7; + } + .order-md-8 { + -ms-flex-order: 8; + order: 8; + } + .order-md-9 { + -ms-flex-order: 9; + order: 9; + } + .order-md-10 { + -ms-flex-order: 10; + order: 10; + } + .order-md-11 { + -ms-flex-order: 11; + order: 11; + } + .order-md-12 { + -ms-flex-order: 12; + order: 12; + } + .offset-md-0 { + margin-left: 0; + } + .offset-md-1 { + margin-left: 8.333333%; + } + .offset-md-2 { + margin-left: 16.666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.333333%; + } + .offset-md-5 { + margin-left: 41.666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.333333%; + } + .offset-md-8 { + margin-left: 66.666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.333333%; + } + .offset-md-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 992px) { + .col-lg { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .row-cols-lg-1 > * { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .row-cols-lg-2 > * { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .row-cols-lg-3 > * { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .row-cols-lg-4 > * { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .row-cols-lg-5 > * { + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20%; + } + .row-cols-lg-6 > * { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-lg-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-lg-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-lg-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-lg-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-lg-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-lg-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-lg-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-lg-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-lg-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-lg-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-lg-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-lg-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-lg-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-lg-first { + -ms-flex-order: -1; + order: -1; + } + .order-lg-last { + -ms-flex-order: 13; + order: 13; + } + .order-lg-0 { + -ms-flex-order: 0; + order: 0; + } + .order-lg-1 { + -ms-flex-order: 1; + order: 1; + } + .order-lg-2 { + -ms-flex-order: 2; + order: 2; + } + .order-lg-3 { + -ms-flex-order: 3; + order: 3; + } + .order-lg-4 { + -ms-flex-order: 4; + order: 4; + } + .order-lg-5 { + -ms-flex-order: 5; + order: 5; + } + .order-lg-6 { + -ms-flex-order: 6; + order: 6; + } + .order-lg-7 { + -ms-flex-order: 7; + order: 7; + } + .order-lg-8 { + -ms-flex-order: 8; + order: 8; + } + .order-lg-9 { + -ms-flex-order: 9; + order: 9; + } + .order-lg-10 { + -ms-flex-order: 10; + order: 10; + } + .order-lg-11 { + -ms-flex-order: 11; + order: 11; + } + .order-lg-12 { + -ms-flex-order: 12; + order: 12; + } + .offset-lg-0 { + margin-left: 0; + } + .offset-lg-1 { + margin-left: 8.333333%; + } + .offset-lg-2 { + margin-left: 16.666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.333333%; + } + .offset-lg-5 { + margin-left: 41.666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.333333%; + } + .offset-lg-8 { + margin-left: 66.666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.333333%; + } + .offset-lg-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 1200px) { + .col-xl { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + max-width: 100%; + } + .row-cols-xl-1 > * { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .row-cols-xl-2 > * { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .row-cols-xl-3 > * { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .row-cols-xl-4 > * { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .row-cols-xl-5 > * { + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20%; + } + .row-cols-xl-6 > * { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-xl-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-xl-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-xl-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-xl-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-xl-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-xl-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-xl-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-xl-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-xl-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-xl-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-xl-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-xl-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-xl-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-xl-first { + -ms-flex-order: -1; + order: -1; + } + .order-xl-last { + -ms-flex-order: 13; + order: 13; + } + .order-xl-0 { + -ms-flex-order: 0; + order: 0; + } + .order-xl-1 { + -ms-flex-order: 1; + order: 1; + } + .order-xl-2 { + -ms-flex-order: 2; + order: 2; + } + .order-xl-3 { + -ms-flex-order: 3; + order: 3; + } + .order-xl-4 { + -ms-flex-order: 4; + order: 4; + } + .order-xl-5 { + -ms-flex-order: 5; + order: 5; + } + .order-xl-6 { + -ms-flex-order: 6; + order: 6; + } + .order-xl-7 { + -ms-flex-order: 7; + order: 7; + } + .order-xl-8 { + -ms-flex-order: 8; + order: 8; + } + .order-xl-9 { + -ms-flex-order: 9; + order: 9; + } + .order-xl-10 { + -ms-flex-order: 10; + order: 10; + } + .order-xl-11 { + -ms-flex-order: 11; + order: 11; + } + .order-xl-12 { + -ms-flex-order: 12; + order: 12; + } + .offset-xl-0 { + margin-left: 0; + } + .offset-xl-1 { + margin-left: 8.333333%; + } + .offset-xl-2 { + margin-left: 16.666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.333333%; + } + .offset-xl-5 { + margin-left: 41.666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.333333%; + } + .offset-xl-8 { + margin-left: 66.666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.333333%; + } + .offset-xl-11 { + margin-left: 91.666667%; + } +} + +.table { + width: 100%; + margin-bottom: 1rem; + //color: #212529; +} + +.table th, +.table td { + padding: 0.75rem; + vertical-align: top; + border-top: 1px solid #dee2e6; +} + +.table thead th { + vertical-align: bottom; + border-bottom: 2px solid #dee2e6; +} + +.table tbody + tbody { + border-top: 2px solid #dee2e6; +} + +.table-sm th, +.table-sm td { + padding: 0.3rem; +} + +.table-bordered { + border: 1px solid #dee2e6; +} + +.table-bordered th, +.table-bordered td { + border: 1px solid #dee2e6; +} + +.table-bordered thead th, +.table-bordered thead td { + border-bottom-width: 2px; +} + +.table-borderless th, +.table-borderless td, +.table-borderless thead th, +.table-borderless tbody + tbody { + border: 0; +} + +.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(0, 0, 0, 0.05); +} + +.table-hover tbody tr:hover { + //color: #212529; + background-color: rgba(0, 0, 0, 0.075); +} + +.table-primary, +.table-primary > th, +.table-primary > td { + background-color: #b8daff; +} + +.table-primary th, +.table-primary td, +.table-primary thead th, +.table-primary tbody + tbody { + border-color: #7abaff; +} + +.table-hover .table-primary:hover { + background-color: #9fcdff; +} + +.table-hover .table-primary:hover > td, +.table-hover .table-primary:hover > th { + background-color: #9fcdff; +} + +.table-secondary, +.table-secondary > th, +.table-secondary > td { + background-color: #d6d8db; +} + +.table-secondary th, +.table-secondary td, +.table-secondary thead th, +.table-secondary tbody + tbody { + border-color: #b3b7bb; +} + +.table-hover .table-secondary:hover { + background-color: #c8cbcf; +} + +.table-hover .table-secondary:hover > td, +.table-hover .table-secondary:hover > th { + background-color: #c8cbcf; +} + +.table-success, +.table-success > th, +.table-success > td { + background-color: #c3e6cb; +} + +.table-success th, +.table-success td, +.table-success thead th, +.table-success tbody + tbody { + border-color: #8fd19e; +} + +.table-hover .table-success:hover { + background-color: #b1dfbb; +} + +.table-hover .table-success:hover > td, +.table-hover .table-success:hover > th { + background-color: #b1dfbb; +} + +.table-info, +.table-info > th, +.table-info > td { + background-color: #bee5eb; +} + +.table-info th, +.table-info td, +.table-info thead th, +.table-info tbody + tbody { + border-color: #86cfda; +} + +.table-hover .table-info:hover { + background-color: #abdde5; +} + +.table-hover .table-info:hover > td, +.table-hover .table-info:hover > th { + background-color: #abdde5; +} + +.table-warning, +.table-warning > th, +.table-warning > td { + background-color: #ffeeba; +} + +.table-warning th, +.table-warning td, +.table-warning thead th, +.table-warning tbody + tbody { + border-color: #ffdf7e; +} + +.table-hover .table-warning:hover { + background-color: #ffe8a1; +} + +.table-hover .table-warning:hover > td, +.table-hover .table-warning:hover > th { + background-color: #ffe8a1; +} + +.table-danger, +.table-danger > th, +.table-danger > td { + background-color: #f5c6cb; +} + +.table-danger th, +.table-danger td, +.table-danger thead th, +.table-danger tbody + tbody { + border-color: #ed969e; +} + +.table-hover .table-danger:hover { + background-color: #f1b0b7; +} + +.table-hover .table-danger:hover > td, +.table-hover .table-danger:hover > th { + background-color: #f1b0b7; +} + +.table-light, +.table-light > th, +.table-light > td { + background-color: #fdfdfe; +} + +.table-light th, +.table-light td, +.table-light thead th, +.table-light tbody + tbody { + border-color: #fbfcfc; +} + +.table-hover .table-light:hover { + background-color: #ececf6; +} + +.table-hover .table-light:hover > td, +.table-hover .table-light:hover > th { + background-color: #ececf6; +} + +.table-dark, +.table-dark > th, +.table-dark > td { + background-color: #c6c8ca; +} + +.table-dark th, +.table-dark td, +.table-dark thead th, +.table-dark tbody + tbody { + border-color: #95999c; +} + +.table-hover .table-dark:hover { + background-color: #b9bbbe; +} + +.table-hover .table-dark:hover > td, +.table-hover .table-dark:hover > th { + background-color: #b9bbbe; +} + +.table-active, +.table-active > th, +.table-active > td { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-hover .table-active:hover { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-hover .table-active:hover > td, +.table-hover .table-active:hover > th { + background-color: rgba(0, 0, 0, 0.075); +} + +.table .thead-dark th { + color: #fff; + background-color: #343a40; + border-color: #454d55; +} + +.table .thead-light th { + color: #495057; + background-color: #e9ecef; + border-color: #dee2e6; +} + +.table-dark { + color: #fff; + background-color: #343a40; +} + +.table-dark th, +.table-dark td, +.table-dark thead th { + border-color: #454d55; +} + +.table-dark.table-bordered { + border: 0; +} + +.table-dark.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, 0.05); +} + +.table-dark.table-hover tbody tr:hover { + color: #fff; + background-color: rgba(255, 255, 255, 0.075); +} + +@media (max-width: 575.98px) { + .table-responsive-sm { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-sm > .table-bordered { + border: 0; + } +} + +@media (max-width: 767.98px) { + .table-responsive-md { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-md > .table-bordered { + border: 0; + } +} + +@media (max-width: 991.98px) { + .table-responsive-lg { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-lg > .table-bordered { + border: 0; + } +} + +@media (max-width: 1199.98px) { + .table-responsive-xl { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-xl > .table-bordered { + border: 0; + } +} + +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +.table-responsive > .table-bordered { + border: 0; +} + +.form-control { + display: block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ced4da; + border-radius: 0.25rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; + } +} + +.form-control::-ms-expand { + background-color: transparent; + border: 0; +} + +.form-control:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #495057; +} + +.form-control:focus { + color: #495057; + background-color: #fff; + border-color: #80bdff; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.form-control::-webkit-input-placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control::-moz-placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control:-ms-input-placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control::-ms-input-placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control::placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control:disabled, .form-control[readonly] { + background-color: #e9ecef; + opacity: 1; +} + +input[type="date"].form-control, +input[type="time"].form-control, +input[type="datetime-local"].form-control, +input[type="month"].form-control { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +select.form-control:focus::-ms-value { + color: #495057; + background-color: #fff; +} + +.form-control-file, +.form-control-range { + display: block; + width: 100%; +} + +.col-form-label { + padding-top: calc(0.375rem + 1px); + padding-bottom: calc(0.375rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; +} + +.col-form-label-lg { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 1.25rem; + line-height: 1.5; +} + +.col-form-label-sm { + padding-top: calc(0.25rem + 1px); + padding-bottom: calc(0.25rem + 1px); + font-size: 0.875rem; + line-height: 1.5; +} + +.form-control-plaintext { + display: block; + width: 100%; + padding: 0.375rem 0; + margin-bottom: 0; + font-size: 1rem; + line-height: 1.5; + //color: #212529; + background-color: transparent; + border: solid transparent; + border-width: 1px 0; +} + +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm { + height: calc(1.5em + 0.5rem + 2px); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; +} + +.form-control-lg { + height: calc(1.5em + 1rem + 2px); + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; +} + +select.form-control[size], select.form-control[multiple] { + height: auto; +} + +textarea.form-control { + height: auto; +} + +.form-group { + margin-bottom: 1rem; +} + +.form-text { + display: block; + margin-top: 0.25rem; +} + +.form-row { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -5px; + margin-left: -5px; +} + +.form-row > .col, +.form-row > [class*="col-"] { + padding-right: 5px; + padding-left: 5px; +} + +.form-check { + position: relative; + display: block; + padding-left: 1.25rem; +} + +.form-check-input { + position: absolute; + margin-top: 0.3rem; + margin-left: -1.25rem; +} + +.form-check-input[disabled] ~ .form-check-label, +.form-check-input:disabled ~ .form-check-label { + color: #6c757d; +} + +.form-check-label { + margin-bottom: 0; +} + +.form-check-inline { + display: -ms-inline-flexbox; + display: inline-flex; + -ms-flex-align: center; + align-items: center; + padding-left: 0; + margin-right: 0.75rem; +} + +.form-check-inline .form-check-input { + position: static; + margin-top: 0; + margin-right: 0.3125rem; + margin-left: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #28a745; +} + +.valid-tooltip { + position: absolute; + top: 100%; + left: 0; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: .1rem; + font-size: 0.875rem; + line-height: 1.5; + color: #fff; + background-color: rgba(40, 167, 69, 0.9); + border-radius: 0.25rem; +} + +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip, +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control:valid, .form-control.is-valid { + border-color: #28a745; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: #28a745; + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); +} + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .custom-select:valid, .custom-select.is-valid { + border-color: #28a745; + padding-right: calc(0.75em + 2.3125rem); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { + border-color: #28a745; + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); +} + +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: #28a745; +} + +.was-validated .form-check-input:valid ~ .valid-feedback, +.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, +.form-check-input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { + color: #28a745; +} + +.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { + border-color: #28a745; +} + +.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { + border-color: #34ce57; + background-color: #34ce57; +} + +.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); +} + +.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #28a745; +} + +.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { + border-color: #28a745; +} + +.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { + border-color: #28a745; + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #dc3545; +} + +.invalid-tooltip { + position: absolute; + top: 100%; + left: 0; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: .1rem; + font-size: 0.875rem; + line-height: 1.5; + color: #fff; + background-color: rgba(220, 53, 69, 0.9); + border-radius: 0.25rem; +} + +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip, +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control:invalid, .form-control.is-invalid { + border-color: #dc3545; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); +} + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .custom-select:invalid, .custom-select.is-invalid { + border-color: #dc3545; + padding-right: calc(0.75em + 2.3125rem); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); +} + +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: #dc3545; +} + +.was-validated .form-check-input:invalid ~ .invalid-feedback, +.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, +.form-check-input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { + color: #dc3545; +} + +.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { + border-color: #dc3545; +} + +.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { + border-color: #e4606d; + background-color: #e4606d; +} + +.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); +} + +.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #dc3545; +} + +.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { + border-color: #dc3545; +} + +.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { + border-color: #dc3545; + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); +} + +.form-inline { + display: -ms-flexbox; + display: flex; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -ms-flex-align: center; + align-items: center; +} + +.form-inline .form-check { + width: 100%; +} + +@media (min-width: 576px) { + .form-inline label { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + margin-bottom: 0; + } + .form-inline .form-group { + display: -ms-flexbox; + display: flex; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -ms-flex-align: center; + align-items: center; + margin-bottom: 0; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-plaintext { + display: inline-block; + } + .form-inline .input-group, + .form-inline .custom-select { + width: auto; + } + .form-inline .form-check { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + width: auto; + padding-left: 0; + } + .form-inline .form-check-input { + position: relative; + -ms-flex-negative: 0; + flex-shrink: 0; + margin-top: 0; + margin-right: 0.25rem; + margin-left: 0; + } + .form-inline .custom-control { + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + } + .form-inline .custom-control-label { + margin-bottom: 0; + } +} + +.btn { + display: inline-block; + font-weight: 400; + //color: #212529; + text-align: center; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: transparent; + border: 1px solid transparent; + padding: 0.375rem 0.75rem; + font-size: 1rem; + line-height: 1.5; + border-radius: 0.25rem; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .btn { + transition: none; + } +} + +.btn:hover { + //color: #212529; + text-decoration: none; +} + +.btn:focus, .btn.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.btn.disabled, .btn:disabled { + opacity: 0.65; +} + +.btn:not(:disabled):not(.disabled) { + cursor: pointer; +} + +a.btn.disabled, +fieldset:disabled a.btn { + pointer-events: none; +} + +.btn-primary { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.btn-primary:hover { + color: #fff; + background-color: #0069d9; + border-color: #0062cc; +} + +.btn-primary:focus, .btn-primary.focus { + color: #fff; + background-color: #0069d9; + border-color: #0062cc; + box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5); +} + +.btn-primary.disabled, .btn-primary:disabled { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, +.show > .btn-primary.dropdown-toggle { + color: #fff; + background-color: #0062cc; + border-color: #005cbf; +} + +.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, +.show > .btn-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5); +} + +.btn-secondary { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} + +.btn-secondary:hover { + color: #fff; + background-color: #5a6268; + border-color: #545b62; +} + +.btn-secondary:focus, .btn-secondary.focus { + color: #fff; + background-color: #5a6268; + border-color: #545b62; + box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); +} + +.btn-secondary.disabled, .btn-secondary:disabled { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} + +.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, +.show > .btn-secondary.dropdown-toggle { + color: #fff; + background-color: #545b62; + border-color: #4e555b; +} + +.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, +.show > .btn-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); +} + +.btn-success { + color: #fff; + background-color: #28a745; + border-color: #28a745; +} + +.btn-success:hover { + color: #fff; + background-color: #218838; + border-color: #1e7e34; +} + +.btn-success:focus, .btn-success.focus { + color: #fff; + background-color: #218838; + border-color: #1e7e34; + box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5); +} + +.btn-success.disabled, .btn-success:disabled { + color: #fff; + background-color: #28a745; + border-color: #28a745; +} + +.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, +.show > .btn-success.dropdown-toggle { + color: #fff; + background-color: #1e7e34; + border-color: #1c7430; +} + +.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, +.show > .btn-success.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5); +} + +.btn-info { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-info:hover { + color: #fff; + background-color: #138496; + border-color: #117a8b; +} + +.btn-info:focus, .btn-info.focus { + color: #fff; + background-color: #138496; + border-color: #117a8b; + box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); +} + +.btn-info.disabled, .btn-info:disabled { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, +.show > .btn-info.dropdown-toggle { + color: #fff; + background-color: #117a8b; + border-color: #10707f; +} + +.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, +.show > .btn-info.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); +} + +.btn-warning { + //color: #212529; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-warning:hover { + //color: #212529; + background-color: #e0a800; + border-color: #d39e00; +} + +.btn-warning:focus, .btn-warning.focus { + //color: #212529; + background-color: #e0a800; + border-color: #d39e00; + box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5); +} + +.btn-warning.disabled, .btn-warning:disabled { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, +.show > .btn-warning.dropdown-toggle { + color: #212529; + background-color: #d39e00; + border-color: #c69500; +} + +.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, +.show > .btn-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5); +} + +.btn-danger { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} + +.btn-danger:hover { + color: #fff; + background-color: #c82333; + border-color: #bd2130; +} + +.btn-danger:focus, .btn-danger.focus { + color: #fff; + background-color: #c82333; + border-color: #bd2130; + box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5); +} + +.btn-danger.disabled, .btn-danger:disabled { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} + +.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, +.show > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #bd2130; + border-color: #b21f2d; +} + +.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, +.show > .btn-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5); +} + +.btn-light { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-light:hover { + color: #212529; + background-color: #e2e6ea; + border-color: #dae0e5; +} + +.btn-light:focus, .btn-light.focus { + color: #212529; + background-color: #e2e6ea; + border-color: #dae0e5; + box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); +} + +.btn-light.disabled, .btn-light:disabled { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, +.show > .btn-light.dropdown-toggle { + color: #212529; + background-color: #dae0e5; + border-color: #d3d9df; +} + +.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, +.show > .btn-light.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); +} + +.btn-dark { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-dark:hover { + color: #fff; + background-color: #23272b; + border-color: #1d2124; +} + +.btn-dark:focus, .btn-dark.focus { + color: #fff; + background-color: #23272b; + border-color: #1d2124; + box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); +} + +.btn-dark.disabled, .btn-dark:disabled { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, +.show > .btn-dark.dropdown-toggle { + color: #fff; + background-color: #1d2124; + border-color: #171a1d; +} + +.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, +.show > .btn-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); +} + +.btn-outline-primary { + color: #007bff; + border-color: #007bff; +} + +.btn-outline-primary:hover { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.btn-outline-primary:focus, .btn-outline-primary.focus { + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); +} + +.btn-outline-primary.disabled, .btn-outline-primary:disabled { + color: #007bff; + background-color: transparent; +} + +.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, +.show > .btn-outline-primary.dropdown-toggle { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); +} + +.btn-outline-secondary { + color: #6c757d; + border-color: #6c757d; +} + +.btn-outline-secondary:hover { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} + +.btn-outline-secondary:focus, .btn-outline-secondary.focus { + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); +} + +.btn-outline-secondary.disabled, .btn-outline-secondary:disabled { + color: #6c757d; + background-color: transparent; +} + +.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active, +.show > .btn-outline-secondary.dropdown-toggle { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} + +.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); +} + +.btn-outline-success { + color: #28a745; + border-color: #28a745; +} + +.btn-outline-success:hover { + color: #fff; + background-color: #28a745; + border-color: #28a745; +} + +.btn-outline-success:focus, .btn-outline-success.focus { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); +} + +.btn-outline-success.disabled, .btn-outline-success:disabled { + color: #28a745; + background-color: transparent; +} + +.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, +.show > .btn-outline-success.dropdown-toggle { + color: #fff; + background-color: #28a745; + border-color: #28a745; +} + +.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-success.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); +} + +.btn-outline-info { + color: #17a2b8; + border-color: #17a2b8; +} + +.btn-outline-info:hover { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-outline-info:focus, .btn-outline-info.focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); +} + +.btn-outline-info.disabled, .btn-outline-info:disabled { + color: #17a2b8; + background-color: transparent; +} + +.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, +.show > .btn-outline-info.dropdown-toggle { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-info.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); +} + +.btn-outline-warning { + color: #ffc107; + border-color: #ffc107; +} + +.btn-outline-warning:hover { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-outline-warning:focus, .btn-outline-warning.focus { + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); +} + +.btn-outline-warning.disabled, .btn-outline-warning:disabled { + color: #ffc107; + background-color: transparent; +} + +.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, +.show > .btn-outline-warning.dropdown-toggle { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); +} + +.btn-outline-danger { + color: #dc3545; + border-color: #dc3545; +} + +.btn-outline-danger:hover { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} + +.btn-outline-danger:focus, .btn-outline-danger.focus { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); +} + +.btn-outline-danger.disabled, .btn-outline-danger:disabled { + color: #dc3545; + background-color: transparent; +} + +.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active, +.show > .btn-outline-danger.dropdown-toggle { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} + +.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); +} + +.btn-outline-light { + color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-outline-light:hover { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-outline-light:focus, .btn-outline-light.focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); +} + +.btn-outline-light.disabled, .btn-outline-light:disabled { + color: #f8f9fa; + background-color: transparent; +} + +.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, +.show > .btn-outline-light.dropdown-toggle { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-light.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); +} + +.btn-outline-dark { + color: #343a40; + border-color: #343a40; +} + +.btn-outline-dark:hover { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-outline-dark:focus, .btn-outline-dark.focus { + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); +} + +.btn-outline-dark.disabled, .btn-outline-dark:disabled { + color: #343a40; + background-color: transparent; +} + +.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active, +.show > .btn-outline-dark.dropdown-toggle { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); +} + +.btn-link { + font-weight: 400; + color: #007bff; + text-decoration: none; +} + +.btn-link:hover { + color: #0056b3; + text-decoration: underline; +} + +.btn-link:focus, .btn-link.focus { + text-decoration: underline; +} + +.btn-link:disabled, .btn-link.disabled { + color: #6c757d; + pointer-events: none; +} + +.btn-lg, .btn-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; +} + +.btn-sm, .btn-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; +} + +.btn-block { + display: block; + width: 100%; +} + +.btn-block + .btn-block { + margin-top: 0.5rem; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.fade { + transition: opacity 0.15s linear; +} + +@media (prefers-reduced-motion: reduce) { + .fade { + transition: none; + } +} + +.fade:not(.show) { + opacity: 0; +} + +.collapse:not(.show) { + display: none; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} + +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} + +.dropup, +.dropright, +.dropdown, +.dropleft { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} + +.dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} + +.dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 10rem; + padding: 0.5rem 0; + margin: 0.125rem 0 0; + font-size: 1rem; + //color: #212529; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; +} + +.dropdown-menu-left { + right: auto; + left: 0; +} + +.dropdown-menu-right { + right: 0; + left: auto; +} + +@media (min-width: 576px) { + .dropdown-menu-sm-left { + right: auto; + left: 0; + } + .dropdown-menu-sm-right { + right: 0; + left: auto; + } +} + +@media (min-width: 768px) { + .dropdown-menu-md-left { + right: auto; + left: 0; + } + .dropdown-menu-md-right { + right: 0; + left: auto; + } +} + +@media (min-width: 992px) { + .dropdown-menu-lg-left { + right: auto; + left: 0; + } + .dropdown-menu-lg-right { + right: 0; + left: auto; + } +} + +@media (min-width: 1200px) { + .dropdown-menu-xl-left { + right: auto; + left: 0; + } + .dropdown-menu-xl-right { + right: 0; + left: auto; + } +} + +.dropup .dropdown-menu { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: 0.125rem; +} + +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} + +.dropup .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropright .dropdown-menu { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: 0.125rem; +} + +.dropright .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; +} + +.dropright .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropright .dropdown-toggle::after { + vertical-align: 0; +} + +.dropleft .dropdown-menu { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: 0.125rem; +} + +.dropleft .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} + +.dropleft .dropdown-toggle::after { + display: none; +} + +.dropleft .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} + +.dropleft .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropleft .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] { + right: auto; + bottom: auto; +} + +.dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef; +} + +.dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: 400; + //color: #212529; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; +} + +.dropdown-item:hover, .dropdown-item:focus { + color: #16181b; + text-decoration: none; + background-color: #f8f9fa; +} + +.dropdown-item.active, .dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #007bff; +} + +.dropdown-item.disabled, .dropdown-item:disabled { + color: #6c757d; + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: 0.5rem 1.5rem; + margin-bottom: 0; + font-size: 0.875rem; + color: #6c757d; + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: 0.25rem 1.5rem; + //color: #212529; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: -ms-inline-flexbox; + display: inline-flex; + vertical-align: middle; +} + +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} + +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover { + z-index: 1; +} + +.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 1; +} + +.btn-toolbar { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.btn-toolbar .input-group { + width: auto; +} + +.btn-group > .btn:not(:first-child), +.btn-group > .btn-group:not(:first-child) { + margin-left: -1px; +} + +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn:not(:first-child), +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} + +.dropdown-toggle-split::after, +.dropup .dropdown-toggle-split::after, +.dropright .dropdown-toggle-split::after { + margin-left: 0; +} + +.dropleft .dropdown-toggle-split::before { + margin-right: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} + +.btn-group-vertical { + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: start; + align-items: flex-start; + -ms-flex-pack: center; + justify-content: center; +} + +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + width: 100%; +} + +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: -1px; +} + +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.btn-group-toggle > .btn, +.btn-group-toggle > .btn-group > .btn { + margin-bottom: 0; +} + +.btn-group-toggle > .btn input[type="radio"], +.btn-group-toggle > .btn input[type="checkbox"], +.btn-group-toggle > .btn-group > .btn input[type="radio"], +.btn-group-toggle > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} + +.input-group { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: stretch; + align-items: stretch; + width: 100%; +} + +.input-group > .form-control, +.input-group > .form-control-plaintext, +.input-group > .custom-select, +.input-group > .custom-file { + position: relative; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 1%; + min-width: 0; + margin-bottom: 0; +} + +.input-group > .form-control + .form-control, +.input-group > .form-control + .custom-select, +.input-group > .form-control + .custom-file, +.input-group > .form-control-plaintext + .form-control, +.input-group > .form-control-plaintext + .custom-select, +.input-group > .form-control-plaintext + .custom-file, +.input-group > .custom-select + .form-control, +.input-group > .custom-select + .custom-select, +.input-group > .custom-select + .custom-file, +.input-group > .custom-file + .form-control, +.input-group > .custom-file + .custom-select, +.input-group > .custom-file + .custom-file { + margin-left: -1px; +} + +.input-group > .form-control:focus, +.input-group > .custom-select:focus, +.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { + z-index: 3; +} + +.input-group > .custom-file .custom-file-input:focus { + z-index: 4; +} + +.input-group > .form-control:not(:last-child), +.input-group > .custom-select:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .form-control:not(:first-child), +.input-group > .custom-select:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group > .custom-file { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; +} + +.input-group > .custom-file:not(:last-child) .custom-file-label, +.input-group > .custom-file:not(:last-child) .custom-file-label::after { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .custom-file:not(:first-child) .custom-file-label { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group-prepend, +.input-group-append { + display: -ms-flexbox; + display: flex; +} + +.input-group-prepend .btn, +.input-group-append .btn { + position: relative; + z-index: 2; +} + +.input-group-prepend .btn:focus, +.input-group-append .btn:focus { + z-index: 3; +} + +.input-group-prepend .btn + .btn, +.input-group-prepend .btn + .input-group-text, +.input-group-prepend .input-group-text + .input-group-text, +.input-group-prepend .input-group-text + .btn, +.input-group-append .btn + .btn, +.input-group-append .btn + .input-group-text, +.input-group-append .input-group-text + .input-group-text, +.input-group-append .input-group-text + .btn { + margin-left: -1px; +} + +.input-group-prepend { + margin-right: -1px; +} + +.input-group-append { + margin-left: -1px; +} + +.input-group-text { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + padding: 0.375rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + text-align: center; + white-space: nowrap; + background-color: #e9ecef; + border: 1px solid #ced4da; + border-radius: 0.25rem; +} + +.input-group-text input[type="radio"], +.input-group-text input[type="checkbox"] { + margin-top: 0; +} + +.input-group-lg > .form-control:not(textarea), +.input-group-lg > .custom-select { + height: calc(1.5em + 1rem + 2px); +} + +.input-group-lg > .form-control, +.input-group-lg > .custom-select, +.input-group-lg > .input-group-prepend > .input-group-text, +.input-group-lg > .input-group-append > .input-group-text, +.input-group-lg > .input-group-prepend > .btn, +.input-group-lg > .input-group-append > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; +} + +.input-group-sm > .form-control:not(textarea), +.input-group-sm > .custom-select { + height: calc(1.5em + 0.5rem + 2px); +} + +.input-group-sm > .form-control, +.input-group-sm > .custom-select, +.input-group-sm > .input-group-prepend > .input-group-text, +.input-group-sm > .input-group-append > .input-group-text, +.input-group-sm > .input-group-prepend > .btn, +.input-group-sm > .input-group-append > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; +} + +.input-group-lg > .custom-select, +.input-group-sm > .custom-select { + padding-right: 1.75rem; +} + +.input-group > .input-group-prepend > .btn, +.input-group > .input-group-prepend > .input-group-text, +.input-group > .input-group-append:not(:last-child) > .btn, +.input-group > .input-group-append:not(:last-child) > .input-group-text, +.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .input-group-append > .btn, +.input-group > .input-group-append > .input-group-text, +.input-group > .input-group-prepend:not(:first-child) > .btn, +.input-group > .input-group-prepend:not(:first-child) > .input-group-text, +.input-group > .input-group-prepend:first-child > .btn:not(:first-child), +.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-control { + position: relative; + z-index: 1; + display: block; + min-height: 1.5rem; + padding-left: 1.5rem; + -webkit-print-color-adjust: exact; + color-adjust: exact; +} + +.custom-control-inline { + display: -ms-inline-flexbox; + display: inline-flex; + margin-right: 1rem; +} + +.custom-control-input { + position: absolute; + left: 0; + z-index: -1; + width: 1rem; + height: 1.25rem; + opacity: 0; +} + +.custom-control-input:checked ~ .custom-control-label::before { + color: #fff; + border-color: #007bff; + background-color: #007bff; +} + +.custom-control-input:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-control-input:focus:not(:checked) ~ .custom-control-label::before { + border-color: #80bdff; +} + +.custom-control-input:not(:disabled):active ~ .custom-control-label::before { + color: #fff; + background-color: #b3d7ff; + border-color: #b3d7ff; +} + +.custom-control-input[disabled] ~ .custom-control-label, .custom-control-input:disabled ~ .custom-control-label { + color: #6c757d; +} + +.custom-control-input[disabled] ~ .custom-control-label::before, .custom-control-input:disabled ~ .custom-control-label::before { + background-color: #e9ecef; +} + +.custom-control-label { + position: relative; + margin-bottom: 0; + vertical-align: top; +} + +.custom-control-label::before { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + content: ""; + background-color: #fff; + border: #adb5bd solid 1px; +} + +.custom-control-label::after { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + content: ""; + background: no-repeat 50% / 50% 50%; +} + +.custom-checkbox .custom-control-label::before { + border-radius: 0.25rem; +} + +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e"); +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { + border-color: #007bff; + background-color: #007bff; +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e"); +} + +.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(0, 123, 255, 0.5); +} + +.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { + background-color: rgba(0, 123, 255, 0.5); +} + +.custom-radio .custom-control-label::before { + border-radius: 50%; +} + +.custom-radio .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); +} + +.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(0, 123, 255, 0.5); +} + +.custom-switch { + padding-left: 2.25rem; +} + +.custom-switch .custom-control-label::before { + left: -2.25rem; + width: 1.75rem; + pointer-events: all; + border-radius: 0.5rem; +} + +.custom-switch .custom-control-label::after { + top: calc(0.25rem + 2px); + left: calc(-2.25rem + 2px); + width: calc(1rem - 4px); + height: calc(1rem - 4px); + background-color: #adb5bd; + border-radius: 0.5rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out; + transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .custom-switch .custom-control-label::after { + transition: none; + } +} + +.custom-switch .custom-control-input:checked ~ .custom-control-label::after { + background-color: #fff; + -webkit-transform: translateX(0.75rem); + transform: translateX(0.75rem); +} + +.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(0, 123, 255, 0.5); +} + +.custom-select { + display: inline-block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 1.75rem 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + vertical-align: middle; + background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; + border: 1px solid #ced4da; + border-radius: 0.25rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.custom-select:focus { + border-color: #80bdff; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-select:focus::-ms-value { + color: #495057; + background-color: #fff; +} + +.custom-select[multiple], .custom-select[size]:not([size="1"]) { + height: auto; + padding-right: 0.75rem; + background-image: none; +} + +.custom-select:disabled { + color: #6c757d; + background-color: #e9ecef; +} + +.custom-select::-ms-expand { + display: none; +} + +.custom-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #495057; +} + +.custom-select-sm { + height: calc(1.5em + 0.5rem + 2px); + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.875rem; +} + +.custom-select-lg { + height: calc(1.5em + 1rem + 2px); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.25rem; +} + +.custom-file { + position: relative; + display: inline-block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + margin-bottom: 0; +} + +.custom-file-input { + position: relative; + z-index: 2; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + margin: 0; + opacity: 0; +} + +.custom-file-input:focus ~ .custom-file-label { + border-color: #80bdff; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-file-input[disabled] ~ .custom-file-label, +.custom-file-input:disabled ~ .custom-file-label { + background-color: #e9ecef; +} + +.custom-file-input:lang(en) ~ .custom-file-label::after { + content: "Browse"; +} + +.custom-file-input ~ .custom-file-label[data-browse]::after { + content: attr(data-browse); +} + +.custom-file-label { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 1; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 0.75rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + background-color: #fff; + border: 1px solid #ced4da; + border-radius: 0.25rem; +} + +.custom-file-label::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + z-index: 3; + display: block; + height: calc(1.5em + 0.75rem); + padding: 0.375rem 0.75rem; + line-height: 1.5; + color: #495057; + content: "Browse"; + background-color: #e9ecef; + border-left: inherit; + border-radius: 0 0.25rem 0.25rem 0; +} + +.custom-range { + width: 100%; + height: 1.4rem; + padding: 0; + background-color: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.custom-range:focus { + outline: none; +} + +.custom-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-range:focus::-ms-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-range::-moz-focus-outer { + border: 0; +} + +.custom-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #007bff; + border: 0; + border-radius: 1rem; + -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .custom-range::-webkit-slider-thumb { + -webkit-transition: none; + transition: none; + } +} + +.custom-range::-webkit-slider-thumb:active { + background-color: #b3d7ff; +} + +.custom-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} + +.custom-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #007bff; + border: 0; + border-radius: 1rem; + -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -moz-appearance: none; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .custom-range::-moz-range-thumb { + -moz-transition: none; + transition: none; + } +} + +.custom-range::-moz-range-thumb:active { + background-color: #b3d7ff; +} + +.custom-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} + +.custom-range::-ms-thumb { + width: 1rem; + height: 1rem; + margin-top: 0; + margin-right: 0.2rem; + margin-left: 0.2rem; + background-color: #007bff; + border: 0; + border-radius: 1rem; + -ms-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .custom-range::-ms-thumb { + -ms-transition: none; + transition: none; + } +} + +.custom-range::-ms-thumb:active { + background-color: #b3d7ff; +} + +.custom-range::-ms-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: transparent; + border-color: transparent; + border-width: 0.5rem; +} + +.custom-range::-ms-fill-lower { + background-color: #dee2e6; + border-radius: 1rem; +} + +.custom-range::-ms-fill-upper { + margin-right: 15px; + background-color: #dee2e6; + border-radius: 1rem; +} + +.custom-range:disabled::-webkit-slider-thumb { + background-color: #adb5bd; +} + +.custom-range:disabled::-webkit-slider-runnable-track { + cursor: default; +} + +.custom-range:disabled::-moz-range-thumb { + background-color: #adb5bd; +} + +.custom-range:disabled::-moz-range-track { + cursor: default; +} + +.custom-range:disabled::-ms-thumb { + background-color: #adb5bd; +} + +.custom-control-label::before, +.custom-file-label, +.custom-select { + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .custom-control-label::before, + .custom-file-label, + .custom-select { + transition: none; + } +} + +.nav { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: 0.5rem 1rem; +} + +.nav-link:hover, .nav-link:focus { + text-decoration: none; +} + +.nav-link.disabled { + color: #6c757d; + pointer-events: none; + cursor: default; +} + +.nav-tabs { + border-bottom: 1px solid #dee2e6; +} + +.nav-tabs .nav-item { + margin-bottom: -1px; +} + +.nav-tabs .nav-link { + border: 1px solid transparent; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} + +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + border-color: #e9ecef #e9ecef #dee2e6; +} + +.nav-tabs .nav-link.disabled { + color: #6c757d; + background-color: transparent; + border-color: transparent; +} + +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: #495057; + background-color: #fff; + border-color: #dee2e6 #dee2e6 #fff; +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav-pills .nav-link { + border-radius: 0.25rem; +} + +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: #fff; + background-color: #007bff; +} + +.nav-fill > .nav-link, +.nav-fill .nav-item { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + text-align: center; +} + +.nav-justified > .nav-link, +.nav-justified .nav-item { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + text-align: center; +} + +.tab-content > .tab-pane { + display: none; +} + +.tab-content > .active { + display: block; +} + +.navbar { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 0.5rem 1rem; +} + +.navbar .container, +.navbar .container-fluid, .navbar .container-sm, .navbar .container-md, .navbar .container-lg, .navbar .container-xl { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.navbar-brand { + display: inline-block; + padding-top: 0.3125rem; + padding-bottom: 0.3125rem; + margin-right: 1rem; + font-size: 1.25rem; + line-height: inherit; + white-space: nowrap; +} + +.navbar-brand:hover, .navbar-brand:focus { + text-decoration: none; +} + +.navbar-nav { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.navbar-nav .nav-link { + padding-right: 0; + padding-left: 0; +} + +.navbar-nav .dropdown-menu { + position: static; + float: none; +} + +.navbar-text { + display: inline-block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.navbar-collapse { + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + -ms-flex-positive: 1; + flex-grow: 1; + -ms-flex-align: center; + align-items: center; +} + +.navbar-toggler { + padding: 0.25rem 0.75rem; + font-size: 1.25rem; + line-height: 1; + background-color: transparent; + border: 1px solid transparent; + border-radius: 0.25rem; +} + +.navbar-toggler:hover, .navbar-toggler:focus { + text-decoration: none; +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat center center; + background-size: 100% 100%; +} + +@media (max-width: 575.98px) { + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 576px) { + .navbar-expand-sm { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-sm .navbar-collapse { + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } +} + +@media (max-width: 767.98px) { + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 768px) { + .navbar-expand-md { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-md .navbar-collapse { + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } +} + +@media (max-width: 991.98px) { + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 992px) { + .navbar-expand-lg { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-lg .navbar-collapse { + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } +} + +@media (max-width: 1199.98px) { + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 1200px) { + .navbar-expand-xl { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-xl .navbar-collapse { + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } +} + +.navbar-expand { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.navbar-expand > .container, +.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl { + padding-right: 0; + padding-left: 0; +} + +.navbar-expand .navbar-nav { + -ms-flex-direction: row; + flex-direction: row; +} + +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} + +.navbar-expand .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.navbar-expand > .container, +.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; +} + +.navbar-expand .navbar-collapse { + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; +} + +.navbar-expand .navbar-toggler { + display: none; +} + +.card { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 1px solid rgba(0, 0, 0, 0.125); + border-radius: 0.25rem; +} + +.card > hr { + margin-right: 0; + margin-left: 0; +} + +.card > .list-group { + border-top: inherit; + border-bottom: inherit; +} + +.card > .list-group:first-child { + border-top-width: 0; + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} + +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} + +.card > .card-header + .list-group, +.card > .list-group + .card-footer { + border-top: 0; +} + +.card-body { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + min-height: 1px; + padding: 1.25rem; +} + +.card-title { + margin-bottom: 0.75rem; +} + +.card-subtitle { + margin-top: -0.375rem; + margin-bottom: 0; +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link:hover { + text-decoration: none; +} + +.card-link + .card-link { + margin-left: 1.25rem; +} + +.card-header { + padding: 0.75rem 1.25rem; + margin-bottom: 0; + background-color: rgba(0, 0, 0, 0.03); + border-bottom: 1px solid rgba(0, 0, 0, 0.125); +} + +.card-header:first-child { + border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; +} + +.card-footer { + padding: 0.75rem 1.25rem; + background-color: rgba(0, 0, 0, 0.03); + border-top: 1px solid rgba(0, 0, 0, 0.125); +} + +.card-footer:last-child { + border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); +} + +.card-header-tabs { + margin-right: -0.625rem; + margin-bottom: -0.75rem; + margin-left: -0.625rem; + border-bottom: 0; +} + +.card-header-pills { + margin-right: -0.625rem; + margin-left: -0.625rem; +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1.25rem; + border-radius: calc(0.25rem - 1px); +} + +.card-img, +.card-img-top, +.card-img-bottom { + -ms-flex-negative: 0; + flex-shrink: 0; + width: 100%; +} + +.card-img, +.card-img-top { + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} + +.card-img, +.card-img-bottom { + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} + +.card-deck .card { + margin-bottom: 15px; +} + +@media (min-width: 576px) { + .card-deck { + display: -ms-flexbox; + display: flex; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + margin-right: -15px; + margin-left: -15px; + } + .card-deck .card { + -ms-flex: 1 0 0%; + flex: 1 0 0%; + margin-right: 15px; + margin-bottom: 0; + margin-left: 15px; + } +} + +.card-group > .card { + margin-bottom: 15px; +} + +@media (min-width: 576px) { + .card-group { + display: -ms-flexbox; + display: flex; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + } + .card-group > .card { + -ms-flex: 1 0 0%; + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; + } +} + +.card-columns .card { + margin-bottom: 0.75rem; +} + +@media (min-width: 576px) { + .card-columns { + -webkit-column-count: 3; + -moz-column-count: 3; + column-count: 3; + -webkit-column-gap: 1.25rem; + -moz-column-gap: 1.25rem; + column-gap: 1.25rem; + orphans: 1; + widows: 1; + } + .card-columns .card { + display: inline-block; + width: 100%; + } +} + +.accordion { + overflow-anchor: none; +} + +.accordion > .card { + overflow: hidden; +} + +.accordion > .card:not(:last-of-type) { + border-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.accordion > .card:not(:first-of-type) { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.accordion > .card > .card-header { + border-radius: 0; + margin-bottom: -1px; +} + +.breadcrumb { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: 0.75rem 1rem; + margin-bottom: 1rem; + list-style: none; + background-color: #e9ecef; + border-radius: 0.25rem; +} + +.breadcrumb-item { + display: -ms-flexbox; + display: flex; +} + +.breadcrumb-item + .breadcrumb-item { + padding-left: 0.5rem; +} + +.breadcrumb-item + .breadcrumb-item::before { + display: inline-block; + padding-right: 0.5rem; + color: #6c757d; + content: "/"; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: underline; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: none; +} + +.breadcrumb-item.active { + color: #6c757d; +} + +.pagination { + display: -ms-flexbox; + display: flex; + padding-left: 0; + list-style: none; + border-radius: 0.25rem; +} + +.page-link { + position: relative; + display: block; + padding: 0.5rem 0.75rem; + margin-left: -1px; + line-height: 1.25; + color: #007bff; + background-color: #fff; + border: 1px solid #dee2e6; +} + +.page-link:hover { + z-index: 2; + color: #0056b3; + text-decoration: none; + background-color: #e9ecef; + border-color: #dee2e6; +} + +.page-link:focus { + z-index: 3; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.page-item:first-child .page-link { + margin-left: 0; + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.page-item:last-child .page-link { + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; +} + +.page-item.active .page-link { + z-index: 3; + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.page-item.disabled .page-link { + color: #6c757d; + pointer-events: none; + cursor: auto; + background-color: #fff; + border-color: #dee2e6; +} + +.pagination-lg .page-link { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; + line-height: 1.5; +} + +.pagination-lg .page-item:first-child .page-link { + border-top-left-radius: 0.3rem; + border-bottom-left-radius: 0.3rem; +} + +.pagination-lg .page-item:last-child .page-link { + border-top-right-radius: 0.3rem; + border-bottom-right-radius: 0.3rem; +} + +.pagination-sm .page-link { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; +} + +.pagination-sm .page-item:first-child .page-link { + border-top-left-radius: 0.2rem; + border-bottom-left-radius: 0.2rem; +} + +.pagination-sm .page-item:last-child .page-link { + border-top-right-radius: 0.2rem; + border-bottom-right-radius: 0.2rem; +} + +.badge { + display: inline-block; + padding: 0.25em 0.4em; + font-size: 75%; + font-weight: 700; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25rem; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .badge { + transition: none; + } +} + +a.badge:hover, a.badge:focus { + text-decoration: none; +} + +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.badge-pill { + padding-right: 0.6em; + padding-left: 0.6em; + border-radius: 10rem; +} + +.badge-primary { + color: #fff; + background-color: #007bff; +} + +a.badge-primary:hover, a.badge-primary:focus { + color: #fff; + background-color: #0062cc; +} + +a.badge-primary:focus, a.badge-primary.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); +} + +.badge-secondary { + color: #fff; + background-color: #6c757d; +} + +a.badge-secondary:hover, a.badge-secondary:focus { + color: #fff; + background-color: #545b62; +} + +a.badge-secondary:focus, a.badge-secondary.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); +} + +.badge-success { + color: #fff; + background-color: #28a745; +} + +a.badge-success:hover, a.badge-success:focus { + color: #fff; + background-color: #1e7e34; +} + +a.badge-success:focus, a.badge-success.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); +} + +.badge-info { + color: #fff; + background-color: #17a2b8; +} + +a.badge-info:hover, a.badge-info:focus { + color: #fff; + background-color: #117a8b; +} + +a.badge-info:focus, a.badge-info.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); +} + +.badge-warning { + //color: #212529; + background-color: #ffc107; +} + +a.badge-warning:hover, a.badge-warning:focus { + //color: #212529; + background-color: #d39e00; +} + +a.badge-warning:focus, a.badge-warning.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); +} + +.badge-danger { + color: #fff; + background-color: #dc3545; +} + +a.badge-danger:hover, a.badge-danger:focus { + color: #fff; + background-color: #bd2130; +} + +a.badge-danger:focus, a.badge-danger.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); +} + +.badge-light { + //color: #212529; + background-color: #f8f9fa; +} + +a.badge-light:hover, a.badge-light:focus { + //color: #212529; + background-color: #dae0e5; +} + +a.badge-light:focus, a.badge-light.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); +} + +.badge-dark { + color: #fff; + background-color: #343a40; +} + +a.badge-dark:hover, a.badge-dark:focus { + color: #fff; + background-color: #1d2124; +} + +a.badge-dark:focus, a.badge-dark.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); +} + +.jumbotron { + padding: 2rem 1rem; + margin-bottom: 2rem; + background-color: #e9ecef; + border-radius: 0.3rem; +} + +@media (min-width: 576px) { + .jumbotron { + padding: 4rem 2rem; + } +} + +.jumbotron-fluid { + padding-right: 0; + padding-left: 0; + border-radius: 0; +} + +.alert { + position: relative; + padding: 0.75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 0.25rem; +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: 700; +} + +.alert-dismissible { + padding-right: 4rem; +} + +.alert-dismissible .close { + position: absolute; + top: 0; + right: 0; + z-index: 2; + padding: 0.75rem 1.25rem; + color: inherit; +} + +.alert-primary { + color: #004085; + background-color: #cce5ff; + border-color: #b8daff; +} + +.alert-primary hr { + border-top-color: #9fcdff; +} + +.alert-primary .alert-link { + color: #002752; +} + +.alert-secondary { + color: #383d41; + background-color: #e2e3e5; + border-color: #d6d8db; +} + +.alert-secondary hr { + border-top-color: #c8cbcf; +} + +.alert-secondary .alert-link { + color: #202326; +} + +.alert-success { + color: #155724; + background-color: #d4edda; + border-color: #c3e6cb; +} + +.alert-success hr { + border-top-color: #b1dfbb; +} + +.alert-success .alert-link { + color: #0b2e13; +} + +.alert-info { + color: #0c5460; + background-color: #d1ecf1; + border-color: #bee5eb; +} + +.alert-info hr { + border-top-color: #abdde5; +} + +.alert-info .alert-link { + color: #062c33; +} + +.alert-warning { + color: #856404; + background-color: #fff3cd; + border-color: #ffeeba; +} + +.alert-warning hr { + border-top-color: #ffe8a1; +} + +.alert-warning .alert-link { + color: #533f03; +} + +.alert-danger { + color: #721c24; + background-color: #f8d7da; + border-color: #f5c6cb; +} + +.alert-danger hr { + border-top-color: #f1b0b7; +} + +.alert-danger .alert-link { + color: #491217; +} + +.alert-light { + color: #818182; + background-color: #fefefe; + border-color: #fdfdfe; +} + +.alert-light hr { + border-top-color: #ececf6; +} + +.alert-light .alert-link { + color: #686868; +} + +.alert-dark { + color: #1b1e21; + background-color: #d6d8d9; + border-color: #c6c8ca; +} + +.alert-dark hr { + border-top-color: #b9bbbe; +} + +.alert-dark .alert-link { + color: #040505; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +.progress { + display: -ms-flexbox; + display: flex; + height: 1rem; + overflow: hidden; + line-height: 0; + font-size: 0.75rem; + background-color: #e9ecef; + border-radius: 0.25rem; +} + +.progress-bar { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + overflow: hidden; + color: #fff; + text-align: center; + white-space: nowrap; + background-color: #007bff; + transition: width 0.6s ease; +} + +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 1rem 1rem; +} + +.progress-bar-animated { + -webkit-animation: progress-bar-stripes 1s linear infinite; + animation: progress-bar-stripes 1s linear infinite; +} + +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + -webkit-animation: none; + animation: none; + } +} + +.media { + display: -ms-flexbox; + display: flex; + -ms-flex-align: start; + align-items: flex-start; +} + +.media-body { + -ms-flex: 1; + flex: 1; +} + +.list-group { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + border-radius: 0.25rem; +} + +.list-group-item-action { + width: 100%; + color: #495057; + text-align: inherit; +} + +.list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: #495057; + text-decoration: none; + background-color: #f8f9fa; +} + +.list-group-item-action:active { + //color: #212529; + background-color: #e9ecef; +} + +.list-group-item { + position: relative; + display: block; + padding: 0.75rem 1.25rem; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125); +} + +.list-group-item:first-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} + +.list-group-item:last-child { + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; +} + +.list-group-item.disabled, .list-group-item:disabled { + color: #6c757d; + pointer-events: none; + background-color: #fff; +} + +.list-group-item.active { + z-index: 2; + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.list-group-item + .list-group-item { + border-top-width: 0; +} + +.list-group-item + .list-group-item.active { + margin-top: -1px; + border-top-width: 1px; +} + +.list-group-horizontal { + -ms-flex-direction: row; + flex-direction: row; +} + +.list-group-horizontal > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; +} + +.list-group-horizontal > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; +} + +.list-group-horizontal > .list-group-item.active { + margin-top: 0; +} + +.list-group-horizontal > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; +} + +.list-group-horizontal > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; +} + +@media (min-width: 576px) { + .list-group-horizontal-sm { + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-sm > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-sm > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-sm > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} + +@media (min-width: 768px) { + .list-group-horizontal-md { + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-md > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-md > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-md > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} + +@media (min-width: 992px) { + .list-group-horizontal-lg { + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-lg > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-lg > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-lg > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} + +@media (min-width: 1200px) { + .list-group-horizontal-xl { + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-xl > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-xl > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-xl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} + +.list-group-flush { + border-radius: 0; +} + +.list-group-flush > .list-group-item { + border-width: 0 0 1px; +} + +.list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; +} + +.list-group-item-primary { + color: #004085; + background-color: #b8daff; +} + +.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { + color: #004085; + background-color: #9fcdff; +} + +.list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #004085; + border-color: #004085; +} + +.list-group-item-secondary { + color: #383d41; + background-color: #d6d8db; +} + +.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { + color: #383d41; + background-color: #c8cbcf; +} + +.list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #383d41; + border-color: #383d41; +} + +.list-group-item-success { + color: #155724; + background-color: #c3e6cb; +} + +.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { + color: #155724; + background-color: #b1dfbb; +} + +.list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #155724; + border-color: #155724; +} + +.list-group-item-info { + color: #0c5460; + background-color: #bee5eb; +} + +.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { + color: #0c5460; + background-color: #abdde5; +} + +.list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #0c5460; + border-color: #0c5460; +} + +.list-group-item-warning { + color: #856404; + background-color: #ffeeba; +} + +.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { + color: #856404; + background-color: #ffe8a1; +} + +.list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #856404; + border-color: #856404; +} + +.list-group-item-danger { + color: #721c24; + background-color: #f5c6cb; +} + +.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { + color: #721c24; + background-color: #f1b0b7; +} + +.list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #721c24; + border-color: #721c24; +} + +.list-group-item-light { + color: #818182; + background-color: #fdfdfe; +} + +.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { + color: #818182; + background-color: #ececf6; +} + +.list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #818182; + border-color: #818182; +} + +.list-group-item-dark { + color: #1b1e21; + background-color: #c6c8ca; +} + +.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { + color: #1b1e21; + background-color: #b9bbbe; +} + +.list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #1b1e21; + border-color: #1b1e21; +} + +.close { + float: right; + font-size: 1.5rem; + font-weight: 700; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: .5; +} + +.close:hover { + color: #000; + text-decoration: none; +} + +.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus { + opacity: .75; +} + +button.close { + padding: 0; + background-color: transparent; + border: 0; +} + +a.close.disabled { + pointer-events: none; +} + +.toast { + -ms-flex-preferred-size: 350px; + flex-basis: 350px; + max-width: 350px; + font-size: 0.875rem; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.1); + box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); + opacity: 0; + border-radius: 0.25rem; +} + +.toast:not(:last-child) { + margin-bottom: 0.75rem; +} + +.toast.showing { + opacity: 1; +} + +.toast.show { + display: block; + opacity: 1; +} + +.toast.hide { + display: none; +} + +.toast-header { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + padding: 0.25rem 0.75rem; + color: #6c757d; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} + +.toast-body { + padding: 0.75rem; +} + +.modal-open { + overflow: hidden; +} + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} + +.modal { + position: fixed; + top: 0; + left: 0; + z-index: 1050; + display: none; + width: 100%; + height: 100%; + overflow: hidden; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: 0.5rem; + pointer-events: none; +} + +.modal.fade .modal-dialog { + transition: -webkit-transform 0.3s ease-out; + transition: transform 0.3s ease-out; + transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out; + -webkit-transform: translate(0, -50px); + transform: translate(0, -50px); +} + +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} + +.modal.show .modal-dialog { + -webkit-transform: none; + transform: none; +} + +.modal.modal-static .modal-dialog { + -webkit-transform: scale(1.02); + transform: scale(1.02); +} + +.modal-dialog-scrollable { + display: -ms-flexbox; + display: flex; + max-height: calc(100% - 1rem); +} + +.modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 1rem); + overflow: hidden; +} + +.modal-dialog-scrollable .modal-header, +.modal-dialog-scrollable .modal-footer { + -ms-flex-negative: 0; + flex-shrink: 0; +} + +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + min-height: calc(100% - 1rem); +} + +.modal-dialog-centered::before { + display: block; + height: calc(100vh - 1rem); + height: -webkit-min-content; + height: -moz-min-content; + height: min-content; + content: ""; +} + +.modal-dialog-centered.modal-dialog-scrollable { + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + height: 100%; +} + +.modal-dialog-centered.modal-dialog-scrollable .modal-content { + max-height: none; +} + +.modal-dialog-centered.modal-dialog-scrollable::before { + content: none; +} + +.modal-content { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + width: 100%; + pointer-events: auto; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; + outline: 0; +} + +.modal-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop.show { + opacity: 0.5; +} + +.modal-header { + display: -ms-flexbox; + display: flex; + -ms-flex-align: start; + align-items: flex-start; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 1rem 1rem; + border-bottom: 1px solid #dee2e6; + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); +} + +.modal-header .close { + padding: 1rem 1rem; + margin: -1rem -1rem -1rem auto; +} + +.modal-title { + margin-bottom: 0; + line-height: 1.5; +} + +.modal-body { + position: relative; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1rem; +} + +.modal-footer { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: end; + justify-content: flex-end; + padding: 0.75rem; + border-top: 1px solid #dee2e6; + border-bottom-right-radius: calc(0.3rem - 1px); + border-bottom-left-radius: calc(0.3rem - 1px); +} + +.modal-footer > * { + margin: 0.25rem; +} + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} + +@media (min-width: 576px) { + .modal-dialog { + max-width: 500px; + margin: 1.75rem auto; + } + .modal-dialog-scrollable { + max-height: calc(100% - 3.5rem); + } + .modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 3.5rem); + } + .modal-dialog-centered { + min-height: calc(100% - 3.5rem); + } + .modal-dialog-centered::before { + height: calc(100vh - 3.5rem); + height: -webkit-min-content; + height: -moz-min-content; + height: min-content; + } + .modal-sm { + max-width: 300px; + } +} + +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + max-width: 800px; + } +} + +@media (min-width: 1200px) { + .modal-xl { + max-width: 1140px; + } +} + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + opacity: 0; +} + +.tooltip.show { + opacity: 0.9; +} + +.tooltip .arrow { + position: absolute; + display: block; + width: 0.8rem; + height: 0.4rem; +} + +.tooltip .arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { + padding: 0.4rem 0; +} + +.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { + bottom: 0; +} + +.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { + top: 0; + border-width: 0.4rem 0.4rem 0; + border-top-color: #000; +} + +.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { + padding: 0 0.4rem; +} + +.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { + left: 0; + width: 0.4rem; + height: 0.8rem; +} + +.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { + right: 0; + border-width: 0.4rem 0.4rem 0.4rem 0; + border-right-color: #000; +} + +.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { + padding: 0.4rem 0; +} + +.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { + top: 0; +} + +.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + bottom: 0; + border-width: 0 0.4rem 0.4rem; + border-bottom-color: #000; +} + +.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { + padding: 0 0.4rem; +} + +.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { + right: 0; + width: 0.4rem; + height: 0.8rem; +} + +.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { + left: 0; + border-width: 0.4rem 0 0.4rem 0.4rem; + border-left-color: #000; +} + +.tooltip-inner { + max-width: 200px; + padding: 0.25rem 0.5rem; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 0.25rem; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: block; + max-width: 276px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; +} + +.popover .arrow { + position: absolute; + display: block; + width: 1rem; + height: 0.5rem; + margin: 0 0.3rem; +} + +.popover .arrow::before, .popover .arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-popover-top, .bs-popover-auto[x-placement^="top"] { + margin-bottom: 0.5rem; +} + +.bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow { + bottom: calc(-0.5rem - 1px); +} + +.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before { + bottom: 0; + border-width: 0.5rem 0.5rem 0; + border-top-color: rgba(0, 0, 0, 0.25); +} + +.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after { + bottom: 1px; + border-width: 0.5rem 0.5rem 0; + border-top-color: #fff; +} + +.bs-popover-right, .bs-popover-auto[x-placement^="right"] { + margin-left: 0.5rem; +} + +.bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow { + left: calc(-0.5rem - 1px); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; +} + +.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before { + left: 0; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: rgba(0, 0, 0, 0.25); +} + +.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after { + left: 1px; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: #fff; +} + +.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { + margin-top: 0.5rem; +} + +.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow { + top: calc(-0.5rem - 1px); +} + +.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before { + top: 0; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: rgba(0, 0, 0, 0.25); +} + +.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after { + top: 1px; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: #fff; +} + +.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 1rem; + margin-left: -0.5rem; + content: ""; + border-bottom: 1px solid #f7f7f7; +} + +.bs-popover-left, .bs-popover-auto[x-placement^="left"] { + margin-right: 0.5rem; +} + +.bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow { + right: calc(-0.5rem - 1px); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; +} + +.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before { + right: 0; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: rgba(0, 0, 0, 0.25); +} + +.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after { + right: 1px; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: #fff; +} + +.popover-header { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); +} + +.popover-header:empty { + display: none; +} + +.popover-body { + padding: 0.5rem 0.75rem; + //color: #212529; +} + +.carousel { + position: relative; +} + +.carousel.pointer-event { + -ms-touch-action: pan-y; + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner::after { + display: block; + clear: both; + content: ""; +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transition: -webkit-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-left), +.active.carousel-item-right { + -webkit-transform: translateX(100%); + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-right), +.active.carousel-item-left { + -webkit-transform: translateX(-100%); + transform: translateX(-100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + -webkit-transform: none; + transform: none; +} + +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-left, +.carousel-fade .carousel-item-prev.carousel-item-right { + z-index: 1; + opacity: 1; +} + +.carousel-fade .active.carousel-item-left, +.carousel-fade .active.carousel-item-right { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.6s; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-left, + .carousel-fade .active.carousel-item-right { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + width: 15%; + color: #fff; + text-align: center; + opacity: 0.5; + transition: opacity 0.15s ease; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; + } +} + +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 20px; + height: 20px; + background: no-repeat 50% / 100% 100%; +} + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e"); +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 15; + display: -ms-flexbox; + display: flex; + -ms-flex-pack: center; + justify-content: center; + padding-left: 0; + margin-right: 15%; + margin-left: 15%; + list-style: none; +} + +.carousel-indicators li { + box-sizing: content-box; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + width: 30px; + height: 3px; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: .5; + transition: opacity 0.6s ease; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-indicators li { + transition: none; + } +} + +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; +} + +@-webkit-keyframes spinner-border { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes spinner-border { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +.spinner-border { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + border: 0.25em solid currentColor; + border-right-color: transparent; + border-radius: 50%; + -webkit-animation: spinner-border .75s linear infinite; + animation: spinner-border .75s linear infinite; +} + +.spinner-border-sm { + width: 1rem; + height: 1rem; + border-width: 0.2em; +} + +@-webkit-keyframes spinner-grow { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes spinner-grow { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.spinner-grow { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + background-color: currentColor; + border-radius: 50%; + opacity: 0; + -webkit-animation: spinner-grow .75s linear infinite; + animation: spinner-grow .75s linear infinite; +} + +.spinner-grow-sm { + width: 1rem; + height: 1rem; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.bg-primary { + background-color: #007bff !important; +} + +a.bg-primary:hover, a.bg-primary:focus, +button.bg-primary:hover, +button.bg-primary:focus { + background-color: #0062cc !important; +} + +.bg-secondary { + background-color: #6c757d !important; +} + +a.bg-secondary:hover, a.bg-secondary:focus, +button.bg-secondary:hover, +button.bg-secondary:focus { + background-color: #545b62 !important; +} + +.bg-success { + background-color: #28a745 !important; +} + +a.bg-success:hover, a.bg-success:focus, +button.bg-success:hover, +button.bg-success:focus { + background-color: #1e7e34 !important; +} + +.bg-info { + background-color: #17a2b8 !important; +} + +a.bg-info:hover, a.bg-info:focus, +button.bg-info:hover, +button.bg-info:focus { + background-color: #117a8b !important; +} + +.bg-warning { + background-color: #ffc107 !important; +} + +a.bg-warning:hover, a.bg-warning:focus, +button.bg-warning:hover, +button.bg-warning:focus { + background-color: #d39e00 !important; +} + +.bg-danger { + background-color: #dc3545 !important; +} + +a.bg-danger:hover, a.bg-danger:focus, +button.bg-danger:hover, +button.bg-danger:focus { + background-color: #bd2130 !important; +} + +.bg-light { + background-color: #f8f9fa !important; +} + +a.bg-light:hover, a.bg-light:focus, +button.bg-light:hover, +button.bg-light:focus { + background-color: #dae0e5 !important; +} + + +.bg-white { + background-color: #fff !important; +} + +.bg-transparent { + background-color: transparent !important; +} + +.border { + border: 1px solid #dee2e6 !important; +} + +.border-top { + border-top: 1px solid #dee2e6 !important; +} + +.border-right { + border-right: 1px solid #dee2e6 !important; +} + +.border-bottom { + border-bottom: 1px solid #dee2e6 !important; +} + +.border-left { + border-left: 1px solid #dee2e6 !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-right-0 { + border-right: 0 !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-left-0 { + border-left: 0 !important; +} + +.border-primary { + border-color: #007bff !important; +} + +.border-secondary { + border-color: #6c757d !important; +} + +.border-success { + border-color: #28a745 !important; +} + +.border-info { + border-color: #17a2b8 !important; +} + +.border-warning { + border-color: #ffc107 !important; +} + +.border-danger { + border-color: #dc3545 !important; +} + +.border-light { + border-color: #f8f9fa !important; +} + +.border-dark { + border-color: #343a40 !important; +} + +.border-white { + border-color: #fff !important; +} + +.rounded-sm { + border-radius: 0.2rem !important; +} + +.rounded { + border-radius: 0.25rem !important; +} + +.rounded-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important; +} + +.rounded-right { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; +} + +.rounded-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; +} + +.rounded-left { + border-top-left-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; +} + +.rounded-lg { + border-radius: 0.3rem !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: 50rem !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.clearfix::after { + display: block; + clear: both; + content: ""; +} + +.d-none { + display: none !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: -ms-flexbox !important; + display: flex !important; +} + +.d-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; +} + +@media (min-width: 576px) { + .d-sm-none { + display: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: -ms-flexbox !important; + display: flex !important; + } + .d-sm-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 768px) { + .d-md-none { + display: none !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: -ms-flexbox !important; + display: flex !important; + } + .d-md-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 992px) { + .d-lg-none { + display: none !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: -ms-flexbox !important; + display: flex !important; + } + .d-lg-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 1200px) { + .d-xl-none { + display: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: -ms-flexbox !important; + display: flex !important; + } + .d-xl-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media print { + .d-print-none { + display: none !important; + } + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: -ms-flexbox !important; + display: flex !important; + } + .d-print-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden; +} + +.embed-responsive::before { + display: block; + content: ""; +} + +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} + +.embed-responsive-21by9::before { + padding-top: 42.857143%; +} + +.embed-responsive-16by9::before { + padding-top: 56.25%; +} + +.embed-responsive-4by3::before { + padding-top: 75%; +} + +.embed-responsive-1by1::before { + padding-top: 100%; +} + +.flex-row { + -ms-flex-direction: row !important; + flex-direction: row !important; +} + +.flex-column { + -ms-flex-direction: column !important; + flex-direction: column !important; +} + +.flex-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; +} + +.flex-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; +} + +.flex-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; +} + +.flex-fill { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; +} + +.flex-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; +} + +.flex-grow-1 { + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; +} + +.flex-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; +} + +.justify-content-start { + -ms-flex-pack: start !important; + justify-content: flex-start !important; +} + +.justify-content-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; +} + +.justify-content-center { + -ms-flex-pack: center !important; + justify-content: center !important; +} + +.justify-content-between { + -ms-flex-pack: justify !important; + justify-content: space-between !important; +} + +.justify-content-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; +} + +.align-items-start { + -ms-flex-align: start !important; + align-items: flex-start !important; +} + +.align-items-end { + -ms-flex-align: end !important; + align-items: flex-end !important; +} + +.align-items-center { + -ms-flex-align: center !important; + align-items: center !important; +} + +.align-items-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; +} + +.align-items-stretch { + -ms-flex-align: stretch !important; + align-items: stretch !important; +} + +.align-content-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; +} + +.align-content-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; +} + +.align-content-center { + -ms-flex-line-pack: center !important; + align-content: center !important; +} + +.align-content-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; +} + +.align-content-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; +} + +.align-content-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; +} + +.align-self-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; +} + +.align-self-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; +} + +.align-self-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; +} + +.align-self-center { + -ms-flex-item-align: center !important; + align-self: center !important; +} + +.align-self-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; +} + +.align-self-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; +} + +@media (min-width: 576px) { + .flex-sm-row { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-sm-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-sm-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-sm-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-sm-fill { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-sm-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-sm-start { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-sm-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-sm-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-sm-between { + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-sm-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-sm-start { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-sm-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-sm-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-sm-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-sm-stretch { + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-sm-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-sm-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-sm-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-sm-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-sm-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-sm-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-sm-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-sm-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-sm-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-sm-center { + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-sm-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-sm-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } +} + +@media (min-width: 768px) { + .flex-md-row { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-md-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-md-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-md-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-md-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-md-fill { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-md-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-md-grow-1 { + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-md-start { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-md-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-md-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-md-between { + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-md-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-md-start { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-md-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-md-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-md-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-md-stretch { + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-md-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-md-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-md-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-md-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-md-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-md-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-md-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-md-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-md-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-md-center { + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-md-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-md-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } +} + +@media (min-width: 992px) { + .flex-lg-row { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-lg-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-lg-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-lg-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-lg-fill { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-lg-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-lg-start { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-lg-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-lg-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-lg-between { + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-lg-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-lg-start { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-lg-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-lg-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-lg-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-lg-stretch { + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-lg-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-lg-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-lg-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-lg-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-lg-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-lg-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-lg-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-lg-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-lg-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-lg-center { + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-lg-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-lg-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } +} + +@media (min-width: 1200px) { + .flex-xl-row { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-xl-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-xl-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-xl-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-xl-fill { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-xl-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-xl-start { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-xl-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-xl-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-xl-between { + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-xl-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-xl-start { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-xl-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-xl-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-xl-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-xl-stretch { + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-xl-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-xl-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-xl-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-xl-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-xl-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-xl-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-xl-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-xl-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-xl-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-xl-center { + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-xl-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-xl-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } +} + +.float-left { + float: left !important; +} + +.float-right { + float: right !important; +} + +.float-none { + float: none !important; +} + +@media (min-width: 576px) { + .float-sm-left { + float: left !important; + } + .float-sm-right { + float: right !important; + } + .float-sm-none { + float: none !important; + } +} + +@media (min-width: 768px) { + .float-md-left { + float: left !important; + } + .float-md-right { + float: right !important; + } + .float-md-none { + float: none !important; + } +} + +@media (min-width: 992px) { + .float-lg-left { + float: left !important; + } + .float-lg-right { + float: right !important; + } + .float-lg-none { + float: none !important; + } +} + +@media (min-width: 1200px) { + .float-xl-left { + float: left !important; + } + .float-xl-right { + float: right !important; + } + .float-xl-none { + float: none !important; + } +} + +.user-select-all { + -webkit-user-select: all !important; + -moz-user-select: all !important; + -ms-user-select: all !important; + user-select: all !important; +} + +.user-select-auto { + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + -ms-user-select: auto !important; + user-select: auto !important; +} + +.user-select-none { + -webkit-user-select: none !important; + -moz-user-select: none !important; + -ms-user-select: none !important; + user-select: none !important; +} + +.overflow-auto { + overflow: auto !important; +} + +.overflow-hidden { + overflow: hidden !important; +} + +.position-static { + position: static !important; +} + +.position-relative { + position: relative !important; +} + +.position-absolute { + position: absolute !important; +} + +.position-fixed { + position: fixed !important; +} + +.position-sticky { + position: -webkit-sticky !important; + position: sticky !important; +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +@supports ((position: -webkit-sticky) or (position: sticky)) { + .sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; +} + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.shadow { + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.h-25 { + height: 25% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.h-auto { + height: auto !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.min-vw-100 { + min-width: 100vw !important; +} + +.min-vh-100 { + min-height: 100vh !important; +} + +.vw-100 { + width: 100vw !important; +} + +.vh-100 { + height: 100vh !important; +} + +.m-0 { + margin: 0 !important; +} + +.mt-0, +.my-0 { + margin-top: 0 !important; +} + +.mr-0, +.mx-0 { + margin-right: 0 !important; +} + +.mb-0, +.my-0 { + margin-bottom: 0 !important; +} + +.ml-0, +.mx-0 { + margin-left: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.mt-1, +.my-1 { + margin-top: 0.25rem !important; +} + +.mr-1, +.mx-1 { + margin-right: 0.25rem !important; +} + +.mb-1, +.my-1 { + margin-bottom: 0.25rem !important; +} + +.ml-1, +.mx-1 { + margin-left: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.mt-2, +.my-2 { + margin-top: 0.5rem !important; +} + +.mr-2, +.mx-2 { + margin-right: 0.5rem !important; +} + +.mb-2, +.my-2 { + margin-bottom: 0.5rem !important; +} + +.ml-2, +.mx-2 { + margin-left: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.mt-3, +.my-3 { + margin-top: 1rem !important; +} + +.mr-3, +.mx-3 { + margin-right: 1rem !important; +} + +.mb-3, +.my-3 { + margin-bottom: 1rem !important; +} + +.ml-3, +.mx-3 { + margin-left: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.mt-4, +.my-4 { + margin-top: 1.5rem !important; +} + +.mr-4, +.mx-4 { + margin-right: 1.5rem !important; +} + +.mb-4, +.my-4 { + margin-bottom: 1.5rem !important; +} + +.ml-4, +.mx-4 { + margin-left: 1.5rem !important; +} + +.m-5 { + margin: 3rem !important; +} + +.mt-5, +.my-5 { + margin-top: 3rem !important; +} + +.mr-5, +.mx-5 { + margin-right: 3rem !important; +} + +.mb-5, +.my-5 { + margin-bottom: 3rem !important; +} + +.ml-5, +.mx-5 { + margin-left: 3rem !important; +} + +.p-0 { + padding: 0 !important; +} + +.pt-0, +.py-0 { + padding-top: 0 !important; +} + +.pr-0, +.px-0 { + padding-right: 0 !important; +} + +.pb-0, +.py-0 { + padding-bottom: 0 !important; +} + +.pl-0, +.px-0 { + padding-left: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.pt-1, +.py-1 { + padding-top: 0.25rem !important; +} + +.pr-1, +.px-1 { + padding-right: 0.25rem !important; +} + +.pb-1, +.py-1 { + padding-bottom: 0.25rem !important; +} + +.pl-1, +.px-1 { + padding-left: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.pt-2, +.py-2 { + padding-top: 0.5rem !important; +} + +.pr-2, +.px-2 { + padding-right: 0.5rem !important; +} + +.pb-2, +.py-2 { + padding-bottom: 0.5rem !important; +} + +.pl-2, +.px-2 { + padding-left: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.pt-3, +.py-3 { + padding-top: 1rem !important; +} + +.pr-3, +.px-3 { + padding-right: 1rem !important; +} + +.pb-3, +.py-3 { + padding-bottom: 1rem !important; +} + +.pl-3, +.px-3 { + padding-left: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.pt-4, +.py-4 { + padding-top: 1.5rem !important; +} + +.pr-4, +.px-4 { + padding-right: 1.5rem !important; +} + +.pb-4, +.py-4 { + padding-bottom: 1.5rem !important; +} + +.pl-4, +.px-4 { + padding-left: 1.5rem !important; +} + +.p-5 { + padding: 3rem !important; +} + +.pt-5, +.py-5 { + padding-top: 3rem !important; +} + +.pr-5, +.px-5 { + padding-right: 3rem !important; +} + +.pb-5, +.py-5 { + padding-bottom: 3rem !important; +} + +.pl-5, +.px-5 { + padding-left: 3rem !important; +} + +.m-n1 { + margin: -0.25rem !important; +} + +.mt-n1, +.my-n1 { + margin-top: -0.25rem !important; +} + +.mr-n1, +.mx-n1 { + margin-right: -0.25rem !important; +} + +.mb-n1, +.my-n1 { + margin-bottom: -0.25rem !important; +} + +.ml-n1, +.mx-n1 { + margin-left: -0.25rem !important; +} + +.m-n2 { + margin: -0.5rem !important; +} + +.mt-n2, +.my-n2 { + margin-top: -0.5rem !important; +} + +.mr-n2, +.mx-n2 { + margin-right: -0.5rem !important; +} + +.mb-n2, +.my-n2 { + margin-bottom: -0.5rem !important; +} + +.ml-n2, +.mx-n2 { + margin-left: -0.5rem !important; +} + +.m-n3 { + margin: -1rem !important; +} + +.mt-n3, +.my-n3 { + margin-top: -1rem !important; +} + +.mr-n3, +.mx-n3 { + margin-right: -1rem !important; +} + +.mb-n3, +.my-n3 { + margin-bottom: -1rem !important; +} + +.ml-n3, +.mx-n3 { + margin-left: -1rem !important; +} + +.m-n4 { + margin: -1.5rem !important; +} + +.mt-n4, +.my-n4 { + margin-top: -1.5rem !important; +} + +.mr-n4, +.mx-n4 { + margin-right: -1.5rem !important; +} + +.mb-n4, +.my-n4 { + margin-bottom: -1.5rem !important; +} + +.ml-n4, +.mx-n4 { + margin-left: -1.5rem !important; +} + +.m-n5 { + margin: -3rem !important; +} + +.mt-n5, +.my-n5 { + margin-top: -3rem !important; +} + +.mr-n5, +.mx-n5 { + margin-right: -3rem !important; +} + +.mb-n5, +.my-n5 { + margin-bottom: -3rem !important; +} + +.ml-n5, +.mx-n5 { + margin-left: -3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mt-auto, +.my-auto { + margin-top: auto !important; +} + +.mr-auto, +.mx-auto { + margin-right: auto !important; +} + +.mb-auto, +.my-auto { + margin-bottom: auto !important; +} + +.ml-auto, +.mx-auto { + margin-left: auto !important; +} + +@media (min-width: 576px) { + .m-sm-0 { + margin: 0 !important; + } + .mt-sm-0, + .my-sm-0 { + margin-top: 0 !important; + } + .mr-sm-0, + .mx-sm-0 { + margin-right: 0 !important; + } + .mb-sm-0, + .my-sm-0 { + margin-bottom: 0 !important; + } + .ml-sm-0, + .mx-sm-0 { + margin-left: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .mt-sm-1, + .my-sm-1 { + margin-top: 0.25rem !important; + } + .mr-sm-1, + .mx-sm-1 { + margin-right: 0.25rem !important; + } + .mb-sm-1, + .my-sm-1 { + margin-bottom: 0.25rem !important; + } + .ml-sm-1, + .mx-sm-1 { + margin-left: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .mt-sm-2, + .my-sm-2 { + margin-top: 0.5rem !important; + } + .mr-sm-2, + .mx-sm-2 { + margin-right: 0.5rem !important; + } + .mb-sm-2, + .my-sm-2 { + margin-bottom: 0.5rem !important; + } + .ml-sm-2, + .mx-sm-2 { + margin-left: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .mt-sm-3, + .my-sm-3 { + margin-top: 1rem !important; + } + .mr-sm-3, + .mx-sm-3 { + margin-right: 1rem !important; + } + .mb-sm-3, + .my-sm-3 { + margin-bottom: 1rem !important; + } + .ml-sm-3, + .mx-sm-3 { + margin-left: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .mt-sm-4, + .my-sm-4 { + margin-top: 1.5rem !important; + } + .mr-sm-4, + .mx-sm-4 { + margin-right: 1.5rem !important; + } + .mb-sm-4, + .my-sm-4 { + margin-bottom: 1.5rem !important; + } + .ml-sm-4, + .mx-sm-4 { + margin-left: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .mt-sm-5, + .my-sm-5 { + margin-top: 3rem !important; + } + .mr-sm-5, + .mx-sm-5 { + margin-right: 3rem !important; + } + .mb-sm-5, + .my-sm-5 { + margin-bottom: 3rem !important; + } + .ml-sm-5, + .mx-sm-5 { + margin-left: 3rem !important; + } + .p-sm-0 { + padding: 0 !important; + } + .pt-sm-0, + .py-sm-0 { + padding-top: 0 !important; + } + .pr-sm-0, + .px-sm-0 { + padding-right: 0 !important; + } + .pb-sm-0, + .py-sm-0 { + padding-bottom: 0 !important; + } + .pl-sm-0, + .px-sm-0 { + padding-left: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .pt-sm-1, + .py-sm-1 { + padding-top: 0.25rem !important; + } + .pr-sm-1, + .px-sm-1 { + padding-right: 0.25rem !important; + } + .pb-sm-1, + .py-sm-1 { + padding-bottom: 0.25rem !important; + } + .pl-sm-1, + .px-sm-1 { + padding-left: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .pt-sm-2, + .py-sm-2 { + padding-top: 0.5rem !important; + } + .pr-sm-2, + .px-sm-2 { + padding-right: 0.5rem !important; + } + .pb-sm-2, + .py-sm-2 { + padding-bottom: 0.5rem !important; + } + .pl-sm-2, + .px-sm-2 { + padding-left: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .pt-sm-3, + .py-sm-3 { + padding-top: 1rem !important; + } + .pr-sm-3, + .px-sm-3 { + padding-right: 1rem !important; + } + .pb-sm-3, + .py-sm-3 { + padding-bottom: 1rem !important; + } + .pl-sm-3, + .px-sm-3 { + padding-left: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .pt-sm-4, + .py-sm-4 { + padding-top: 1.5rem !important; + } + .pr-sm-4, + .px-sm-4 { + padding-right: 1.5rem !important; + } + .pb-sm-4, + .py-sm-4 { + padding-bottom: 1.5rem !important; + } + .pl-sm-4, + .px-sm-4 { + padding-left: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .pt-sm-5, + .py-sm-5 { + padding-top: 3rem !important; + } + .pr-sm-5, + .px-sm-5 { + padding-right: 3rem !important; + } + .pb-sm-5, + .py-sm-5 { + padding-bottom: 3rem !important; + } + .pl-sm-5, + .px-sm-5 { + padding-left: 3rem !important; + } + .m-sm-n1 { + margin: -0.25rem !important; + } + .mt-sm-n1, + .my-sm-n1 { + margin-top: -0.25rem !important; + } + .mr-sm-n1, + .mx-sm-n1 { + margin-right: -0.25rem !important; + } + .mb-sm-n1, + .my-sm-n1 { + margin-bottom: -0.25rem !important; + } + .ml-sm-n1, + .mx-sm-n1 { + margin-left: -0.25rem !important; + } + .m-sm-n2 { + margin: -0.5rem !important; + } + .mt-sm-n2, + .my-sm-n2 { + margin-top: -0.5rem !important; + } + .mr-sm-n2, + .mx-sm-n2 { + margin-right: -0.5rem !important; + } + .mb-sm-n2, + .my-sm-n2 { + margin-bottom: -0.5rem !important; + } + .ml-sm-n2, + .mx-sm-n2 { + margin-left: -0.5rem !important; + } + .m-sm-n3 { + margin: -1rem !important; + } + .mt-sm-n3, + .my-sm-n3 { + margin-top: -1rem !important; + } + .mr-sm-n3, + .mx-sm-n3 { + margin-right: -1rem !important; + } + .mb-sm-n3, + .my-sm-n3 { + margin-bottom: -1rem !important; + } + .ml-sm-n3, + .mx-sm-n3 { + margin-left: -1rem !important; + } + .m-sm-n4 { + margin: -1.5rem !important; + } + .mt-sm-n4, + .my-sm-n4 { + margin-top: -1.5rem !important; + } + .mr-sm-n4, + .mx-sm-n4 { + margin-right: -1.5rem !important; + } + .mb-sm-n4, + .my-sm-n4 { + margin-bottom: -1.5rem !important; + } + .ml-sm-n4, + .mx-sm-n4 { + margin-left: -1.5rem !important; + } + .m-sm-n5 { + margin: -3rem !important; + } + .mt-sm-n5, + .my-sm-n5 { + margin-top: -3rem !important; + } + .mr-sm-n5, + .mx-sm-n5 { + margin-right: -3rem !important; + } + .mb-sm-n5, + .my-sm-n5 { + margin-bottom: -3rem !important; + } + .ml-sm-n5, + .mx-sm-n5 { + margin-left: -3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mt-sm-auto, + .my-sm-auto { + margin-top: auto !important; + } + .mr-sm-auto, + .mx-sm-auto { + margin-right: auto !important; + } + .mb-sm-auto, + .my-sm-auto { + margin-bottom: auto !important; + } + .ml-sm-auto, + .mx-sm-auto { + margin-left: auto !important; + } +} + +@media (min-width: 768px) { + .m-md-0 { + margin: 0 !important; + } + .mt-md-0, + .my-md-0 { + margin-top: 0 !important; + } + .mr-md-0, + .mx-md-0 { + margin-right: 0 !important; + } + .mb-md-0, + .my-md-0 { + margin-bottom: 0 !important; + } + .ml-md-0, + .mx-md-0 { + margin-left: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .mt-md-1, + .my-md-1 { + margin-top: 0.25rem !important; + } + .mr-md-1, + .mx-md-1 { + margin-right: 0.25rem !important; + } + .mb-md-1, + .my-md-1 { + margin-bottom: 0.25rem !important; + } + .ml-md-1, + .mx-md-1 { + margin-left: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .mt-md-2, + .my-md-2 { + margin-top: 0.5rem !important; + } + .mr-md-2, + .mx-md-2 { + margin-right: 0.5rem !important; + } + .mb-md-2, + .my-md-2 { + margin-bottom: 0.5rem !important; + } + .ml-md-2, + .mx-md-2 { + margin-left: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .mt-md-3, + .my-md-3 { + margin-top: 1rem !important; + } + .mr-md-3, + .mx-md-3 { + margin-right: 1rem !important; + } + .mb-md-3, + .my-md-3 { + margin-bottom: 1rem !important; + } + .ml-md-3, + .mx-md-3 { + margin-left: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .mt-md-4, + .my-md-4 { + margin-top: 1.5rem !important; + } + .mr-md-4, + .mx-md-4 { + margin-right: 1.5rem !important; + } + .mb-md-4, + .my-md-4 { + margin-bottom: 1.5rem !important; + } + .ml-md-4, + .mx-md-4 { + margin-left: 1.5rem !important; + } + .m-md-5 { + margin: 3rem !important; + } + .mt-md-5, + .my-md-5 { + margin-top: 3rem !important; + } + .mr-md-5, + .mx-md-5 { + margin-right: 3rem !important; + } + .mb-md-5, + .my-md-5 { + margin-bottom: 3rem !important; + } + .ml-md-5, + .mx-md-5 { + margin-left: 3rem !important; + } + .p-md-0 { + padding: 0 !important; + } + .pt-md-0, + .py-md-0 { + padding-top: 0 !important; + } + .pr-md-0, + .px-md-0 { + padding-right: 0 !important; + } + .pb-md-0, + .py-md-0 { + padding-bottom: 0 !important; + } + .pl-md-0, + .px-md-0 { + padding-left: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .pt-md-1, + .py-md-1 { + padding-top: 0.25rem !important; + } + .pr-md-1, + .px-md-1 { + padding-right: 0.25rem !important; + } + .pb-md-1, + .py-md-1 { + padding-bottom: 0.25rem !important; + } + .pl-md-1, + .px-md-1 { + padding-left: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .pt-md-2, + .py-md-2 { + padding-top: 0.5rem !important; + } + .pr-md-2, + .px-md-2 { + padding-right: 0.5rem !important; + } + .pb-md-2, + .py-md-2 { + padding-bottom: 0.5rem !important; + } + .pl-md-2, + .px-md-2 { + padding-left: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .pt-md-3, + .py-md-3 { + padding-top: 1rem !important; + } + .pr-md-3, + .px-md-3 { + padding-right: 1rem !important; + } + .pb-md-3, + .py-md-3 { + padding-bottom: 1rem !important; + } + .pl-md-3, + .px-md-3 { + padding-left: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .pt-md-4, + .py-md-4 { + padding-top: 1.5rem !important; + } + .pr-md-4, + .px-md-4 { + padding-right: 1.5rem !important; + } + .pb-md-4, + .py-md-4 { + padding-bottom: 1.5rem !important; + } + .pl-md-4, + .px-md-4 { + padding-left: 1.5rem !important; + } + .p-md-5 { + padding: 3rem !important; + } + .pt-md-5, + .py-md-5 { + padding-top: 3rem !important; + } + .pr-md-5, + .px-md-5 { + padding-right: 3rem !important; + } + .pb-md-5, + .py-md-5 { + padding-bottom: 3rem !important; + } + .pl-md-5, + .px-md-5 { + padding-left: 3rem !important; + } + .m-md-n1 { + margin: -0.25rem !important; + } + .mt-md-n1, + .my-md-n1 { + margin-top: -0.25rem !important; + } + .mr-md-n1, + .mx-md-n1 { + margin-right: -0.25rem !important; + } + .mb-md-n1, + .my-md-n1 { + margin-bottom: -0.25rem !important; + } + .ml-md-n1, + .mx-md-n1 { + margin-left: -0.25rem !important; + } + .m-md-n2 { + margin: -0.5rem !important; + } + .mt-md-n2, + .my-md-n2 { + margin-top: -0.5rem !important; + } + .mr-md-n2, + .mx-md-n2 { + margin-right: -0.5rem !important; + } + .mb-md-n2, + .my-md-n2 { + margin-bottom: -0.5rem !important; + } + .ml-md-n2, + .mx-md-n2 { + margin-left: -0.5rem !important; + } + .m-md-n3 { + margin: -1rem !important; + } + .mt-md-n3, + .my-md-n3 { + margin-top: -1rem !important; + } + .mr-md-n3, + .mx-md-n3 { + margin-right: -1rem !important; + } + .mb-md-n3, + .my-md-n3 { + margin-bottom: -1rem !important; + } + .ml-md-n3, + .mx-md-n3 { + margin-left: -1rem !important; + } + .m-md-n4 { + margin: -1.5rem !important; + } + .mt-md-n4, + .my-md-n4 { + margin-top: -1.5rem !important; + } + .mr-md-n4, + .mx-md-n4 { + margin-right: -1.5rem !important; + } + .mb-md-n4, + .my-md-n4 { + margin-bottom: -1.5rem !important; + } + .ml-md-n4, + .mx-md-n4 { + margin-left: -1.5rem !important; + } + .m-md-n5 { + margin: -3rem !important; + } + .mt-md-n5, + .my-md-n5 { + margin-top: -3rem !important; + } + .mr-md-n5, + .mx-md-n5 { + margin-right: -3rem !important; + } + .mb-md-n5, + .my-md-n5 { + margin-bottom: -3rem !important; + } + .ml-md-n5, + .mx-md-n5 { + margin-left: -3rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mt-md-auto, + .my-md-auto { + margin-top: auto !important; + } + .mr-md-auto, + .mx-md-auto { + margin-right: auto !important; + } + .mb-md-auto, + .my-md-auto { + margin-bottom: auto !important; + } + .ml-md-auto, + .mx-md-auto { + margin-left: auto !important; + } +} + +@media (min-width: 992px) { + .m-lg-0 { + margin: 0 !important; + } + .mt-lg-0, + .my-lg-0 { + margin-top: 0 !important; + } + .mr-lg-0, + .mx-lg-0 { + margin-right: 0 !important; + } + .mb-lg-0, + .my-lg-0 { + margin-bottom: 0 !important; + } + .ml-lg-0, + .mx-lg-0 { + margin-left: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .mt-lg-1, + .my-lg-1 { + margin-top: 0.25rem !important; + } + .mr-lg-1, + .mx-lg-1 { + margin-right: 0.25rem !important; + } + .mb-lg-1, + .my-lg-1 { + margin-bottom: 0.25rem !important; + } + .ml-lg-1, + .mx-lg-1 { + margin-left: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .mt-lg-2, + .my-lg-2 { + margin-top: 0.5rem !important; + } + .mr-lg-2, + .mx-lg-2 { + margin-right: 0.5rem !important; + } + .mb-lg-2, + .my-lg-2 { + margin-bottom: 0.5rem !important; + } + .ml-lg-2, + .mx-lg-2 { + margin-left: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .mt-lg-3, + .my-lg-3 { + margin-top: 1rem !important; + } + .mr-lg-3, + .mx-lg-3 { + margin-right: 1rem !important; + } + .mb-lg-3, + .my-lg-3 { + margin-bottom: 1rem !important; + } + .ml-lg-3, + .mx-lg-3 { + margin-left: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .mt-lg-4, + .my-lg-4 { + margin-top: 1.5rem !important; + } + .mr-lg-4, + .mx-lg-4 { + margin-right: 1.5rem !important; + } + .mb-lg-4, + .my-lg-4 { + margin-bottom: 1.5rem !important; + } + .ml-lg-4, + .mx-lg-4 { + margin-left: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem !important; + } + .mt-lg-5, + .my-lg-5 { + margin-top: 3rem !important; + } + .mr-lg-5, + .mx-lg-5 { + margin-right: 3rem !important; + } + .mb-lg-5, + .my-lg-5 { + margin-bottom: 3rem !important; + } + .ml-lg-5, + .mx-lg-5 { + margin-left: 3rem !important; + } + .p-lg-0 { + padding: 0 !important; + } + .pt-lg-0, + .py-lg-0 { + padding-top: 0 !important; + } + .pr-lg-0, + .px-lg-0 { + padding-right: 0 !important; + } + .pb-lg-0, + .py-lg-0 { + padding-bottom: 0 !important; + } + .pl-lg-0, + .px-lg-0 { + padding-left: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .pt-lg-1, + .py-lg-1 { + padding-top: 0.25rem !important; + } + .pr-lg-1, + .px-lg-1 { + padding-right: 0.25rem !important; + } + .pb-lg-1, + .py-lg-1 { + padding-bottom: 0.25rem !important; + } + .pl-lg-1, + .px-lg-1 { + padding-left: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .pt-lg-2, + .py-lg-2 { + padding-top: 0.5rem !important; + } + .pr-lg-2, + .px-lg-2 { + padding-right: 0.5rem !important; + } + .pb-lg-2, + .py-lg-2 { + padding-bottom: 0.5rem !important; + } + .pl-lg-2, + .px-lg-2 { + padding-left: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .pt-lg-3, + .py-lg-3 { + padding-top: 1rem !important; + } + .pr-lg-3, + .px-lg-3 { + padding-right: 1rem !important; + } + .pb-lg-3, + .py-lg-3 { + padding-bottom: 1rem !important; + } + .pl-lg-3, + .px-lg-3 { + padding-left: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .pt-lg-4, + .py-lg-4 { + padding-top: 1.5rem !important; + } + .pr-lg-4, + .px-lg-4 { + padding-right: 1.5rem !important; + } + .pb-lg-4, + .py-lg-4 { + padding-bottom: 1.5rem !important; + } + .pl-lg-4, + .px-lg-4 { + padding-left: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem !important; + } + .pt-lg-5, + .py-lg-5 { + padding-top: 3rem !important; + } + .pr-lg-5, + .px-lg-5 { + padding-right: 3rem !important; + } + .pb-lg-5, + .py-lg-5 { + padding-bottom: 3rem !important; + } + .pl-lg-5, + .px-lg-5 { + padding-left: 3rem !important; + } + .m-lg-n1 { + margin: -0.25rem !important; + } + .mt-lg-n1, + .my-lg-n1 { + margin-top: -0.25rem !important; + } + .mr-lg-n1, + .mx-lg-n1 { + margin-right: -0.25rem !important; + } + .mb-lg-n1, + .my-lg-n1 { + margin-bottom: -0.25rem !important; + } + .ml-lg-n1, + .mx-lg-n1 { + margin-left: -0.25rem !important; + } + .m-lg-n2 { + margin: -0.5rem !important; + } + .mt-lg-n2, + .my-lg-n2 { + margin-top: -0.5rem !important; + } + .mr-lg-n2, + .mx-lg-n2 { + margin-right: -0.5rem !important; + } + .mb-lg-n2, + .my-lg-n2 { + margin-bottom: -0.5rem !important; + } + .ml-lg-n2, + .mx-lg-n2 { + margin-left: -0.5rem !important; + } + .m-lg-n3 { + margin: -1rem !important; + } + .mt-lg-n3, + .my-lg-n3 { + margin-top: -1rem !important; + } + .mr-lg-n3, + .mx-lg-n3 { + margin-right: -1rem !important; + } + .mb-lg-n3, + .my-lg-n3 { + margin-bottom: -1rem !important; + } + .ml-lg-n3, + .mx-lg-n3 { + margin-left: -1rem !important; + } + .m-lg-n4 { + margin: -1.5rem !important; + } + .mt-lg-n4, + .my-lg-n4 { + margin-top: -1.5rem !important; + } + .mr-lg-n4, + .mx-lg-n4 { + margin-right: -1.5rem !important; + } + .mb-lg-n4, + .my-lg-n4 { + margin-bottom: -1.5rem !important; + } + .ml-lg-n4, + .mx-lg-n4 { + margin-left: -1.5rem !important; + } + .m-lg-n5 { + margin: -3rem !important; + } + .mt-lg-n5, + .my-lg-n5 { + margin-top: -3rem !important; + } + .mr-lg-n5, + .mx-lg-n5 { + margin-right: -3rem !important; + } + .mb-lg-n5, + .my-lg-n5 { + margin-bottom: -3rem !important; + } + .ml-lg-n5, + .mx-lg-n5 { + margin-left: -3rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mt-lg-auto, + .my-lg-auto { + margin-top: auto !important; + } + .mr-lg-auto, + .mx-lg-auto { + margin-right: auto !important; + } + .mb-lg-auto, + .my-lg-auto { + margin-bottom: auto !important; + } + .ml-lg-auto, + .mx-lg-auto { + margin-left: auto !important; + } +} + +@media (min-width: 1200px) { + .m-xl-0 { + margin: 0 !important; + } + .mt-xl-0, + .my-xl-0 { + margin-top: 0 !important; + } + .mr-xl-0, + .mx-xl-0 { + margin-right: 0 !important; + } + .mb-xl-0, + .my-xl-0 { + margin-bottom: 0 !important; + } + .ml-xl-0, + .mx-xl-0 { + margin-left: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .mt-xl-1, + .my-xl-1 { + margin-top: 0.25rem !important; + } + .mr-xl-1, + .mx-xl-1 { + margin-right: 0.25rem !important; + } + .mb-xl-1, + .my-xl-1 { + margin-bottom: 0.25rem !important; + } + .ml-xl-1, + .mx-xl-1 { + margin-left: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .mt-xl-2, + .my-xl-2 { + margin-top: 0.5rem !important; + } + .mr-xl-2, + .mx-xl-2 { + margin-right: 0.5rem !important; + } + .mb-xl-2, + .my-xl-2 { + margin-bottom: 0.5rem !important; + } + .ml-xl-2, + .mx-xl-2 { + margin-left: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .mt-xl-3, + .my-xl-3 { + margin-top: 1rem !important; + } + .mr-xl-3, + .mx-xl-3 { + margin-right: 1rem !important; + } + .mb-xl-3, + .my-xl-3 { + margin-bottom: 1rem !important; + } + .ml-xl-3, + .mx-xl-3 { + margin-left: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .mt-xl-4, + .my-xl-4 { + margin-top: 1.5rem !important; + } + .mr-xl-4, + .mx-xl-4 { + margin-right: 1.5rem !important; + } + .mb-xl-4, + .my-xl-4 { + margin-bottom: 1.5rem !important; + } + .ml-xl-4, + .mx-xl-4 { + margin-left: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .mt-xl-5, + .my-xl-5 { + margin-top: 3rem !important; + } + .mr-xl-5, + .mx-xl-5 { + margin-right: 3rem !important; + } + .mb-xl-5, + .my-xl-5 { + margin-bottom: 3rem !important; + } + .ml-xl-5, + .mx-xl-5 { + margin-left: 3rem !important; + } + .p-xl-0 { + padding: 0 !important; + } + .pt-xl-0, + .py-xl-0 { + padding-top: 0 !important; + } + .pr-xl-0, + .px-xl-0 { + padding-right: 0 !important; + } + .pb-xl-0, + .py-xl-0 { + padding-bottom: 0 !important; + } + .pl-xl-0, + .px-xl-0 { + padding-left: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .pt-xl-1, + .py-xl-1 { + padding-top: 0.25rem !important; + } + .pr-xl-1, + .px-xl-1 { + padding-right: 0.25rem !important; + } + .pb-xl-1, + .py-xl-1 { + padding-bottom: 0.25rem !important; + } + .pl-xl-1, + .px-xl-1 { + padding-left: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .pt-xl-2, + .py-xl-2 { + padding-top: 0.5rem !important; + } + .pr-xl-2, + .px-xl-2 { + padding-right: 0.5rem !important; + } + .pb-xl-2, + .py-xl-2 { + padding-bottom: 0.5rem !important; + } + .pl-xl-2, + .px-xl-2 { + padding-left: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .pt-xl-3, + .py-xl-3 { + padding-top: 1rem !important; + } + .pr-xl-3, + .px-xl-3 { + padding-right: 1rem !important; + } + .pb-xl-3, + .py-xl-3 { + padding-bottom: 1rem !important; + } + .pl-xl-3, + .px-xl-3 { + padding-left: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .pt-xl-4, + .py-xl-4 { + padding-top: 1.5rem !important; + } + .pr-xl-4, + .px-xl-4 { + padding-right: 1.5rem !important; + } + .pb-xl-4, + .py-xl-4 { + padding-bottom: 1.5rem !important; + } + .pl-xl-4, + .px-xl-4 { + padding-left: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .pt-xl-5, + .py-xl-5 { + padding-top: 3rem !important; + } + .pr-xl-5, + .px-xl-5 { + padding-right: 3rem !important; + } + .pb-xl-5, + .py-xl-5 { + padding-bottom: 3rem !important; + } + .pl-xl-5, + .px-xl-5 { + padding-left: 3rem !important; + } + .m-xl-n1 { + margin: -0.25rem !important; + } + .mt-xl-n1, + .my-xl-n1 { + margin-top: -0.25rem !important; + } + .mr-xl-n1, + .mx-xl-n1 { + margin-right: -0.25rem !important; + } + .mb-xl-n1, + .my-xl-n1 { + margin-bottom: -0.25rem !important; + } + .ml-xl-n1, + .mx-xl-n1 { + margin-left: -0.25rem !important; + } + .m-xl-n2 { + margin: -0.5rem !important; + } + .mt-xl-n2, + .my-xl-n2 { + margin-top: -0.5rem !important; + } + .mr-xl-n2, + .mx-xl-n2 { + margin-right: -0.5rem !important; + } + .mb-xl-n2, + .my-xl-n2 { + margin-bottom: -0.5rem !important; + } + .ml-xl-n2, + .mx-xl-n2 { + margin-left: -0.5rem !important; + } + .m-xl-n3 { + margin: -1rem !important; + } + .mt-xl-n3, + .my-xl-n3 { + margin-top: -1rem !important; + } + .mr-xl-n3, + .mx-xl-n3 { + margin-right: -1rem !important; + } + .mb-xl-n3, + .my-xl-n3 { + margin-bottom: -1rem !important; + } + .ml-xl-n3, + .mx-xl-n3 { + margin-left: -1rem !important; + } + .m-xl-n4 { + margin: -1.5rem !important; + } + .mt-xl-n4, + .my-xl-n4 { + margin-top: -1.5rem !important; + } + .mr-xl-n4, + .mx-xl-n4 { + margin-right: -1.5rem !important; + } + .mb-xl-n4, + .my-xl-n4 { + margin-bottom: -1.5rem !important; + } + .ml-xl-n4, + .mx-xl-n4 { + margin-left: -1.5rem !important; + } + .m-xl-n5 { + margin: -3rem !important; + } + .mt-xl-n5, + .my-xl-n5 { + margin-top: -3rem !important; + } + .mr-xl-n5, + .mx-xl-n5 { + margin-right: -3rem !important; + } + .mb-xl-n5, + .my-xl-n5 { + margin-bottom: -3rem !important; + } + .ml-xl-n5, + .mx-xl-n5 { + margin-left: -3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mt-xl-auto, + .my-xl-auto { + margin-top: auto !important; + } + .mr-xl-auto, + .mx-xl-auto { + margin-right: auto !important; + } + .mb-xl-auto, + .my-xl-auto { + margin-bottom: auto !important; + } + .ml-xl-auto, + .mx-xl-auto { + margin-left: auto !important; + } +} + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + pointer-events: auto; + content: ""; + background-color: rgba(0, 0, 0, 0); +} + +.text-monospace { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; +} + +.text-justify { + text-align: justify !important; +} + +.text-wrap { + white-space: normal !important; +} + +.text-nowrap { + white-space: nowrap !important; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.text-left { + text-align: left !important; +} + +.text-right { + text-align: right !important; +} + +.text-center { + text-align: center !important; +} + +@media (min-width: 576px) { + .text-sm-left { + text-align: left !important; + } + .text-sm-right { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } +} + +@media (min-width: 768px) { + .text-md-left { + text-align: left !important; + } + .text-md-right { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } +} + +@media (min-width: 992px) { + .text-lg-left { + text-align: left !important; + } + .text-lg-right { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } +} + +@media (min-width: 1200px) { + .text-xl-left { + text-align: left !important; + } + .text-xl-right { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.font-weight-light { + font-weight: 300 !important; +} + +.font-weight-lighter { + font-weight: lighter !important; +} + +.font-weight-normal { + font-weight: 400 !important; +} + +.font-weight-bold { + font-weight: 700 !important; +} + +.font-weight-bolder { + font-weight: bolder !important; +} + +.font-italic { + font-style: italic !important; +} + +.text-white { + color: #fff !important; +} + +.text-primary { + color: #007bff !important; +} + +a.text-primary:hover, a.text-primary:focus { + color: #0056b3 !important; +} + +.text-secondary { + color: #6c757d !important; +} + +a.text-secondary:hover, a.text-secondary:focus { + color: #494f54 !important; +} + +.text-success { + color: #28a745 !important; +} + +a.text-success:hover, a.text-success:focus { + color: #19692c !important; +} + +.text-info { + color: #17a2b8 !important; +} + +a.text-info:hover, a.text-info:focus { + color: #0f6674 !important; +} + +.text-warning { + color: #ffc107 !important; +} + +a.text-warning:hover, a.text-warning:focus { + color: #ba8b00 !important; +} + +.text-danger { + color: #dc3545 !important; +} + +a.text-danger:hover, a.text-danger:focus { + color: #a71d2a !important; +} + +.text-light { + color: #f8f9fa !important; +} + +a.text-light:hover, a.text-light:focus { + color: #cbd3da !important; +} + +.text-dark { + color: #343a40 !important; +} + +a.text-dark:hover, a.text-dark:focus { + color: #121416 !important; +} + +.text-body { + //color: #212529 !important; +} + +.text-muted { + color: #6c757d !important; +} + +.text-black-50 { + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.text-decoration-none { + text-decoration: none !important; +} + +.text-break { + word-break: break-word !important; + word-wrap: break-word !important; +} + +.text-reset { + color: inherit !important; +} + +.visible { + visibility: visible !important; +} + +.invisible { + visibility: hidden !important; +} + +@media print { + *, + *::before, + *::after { + text-shadow: none !important; + box-shadow: none !important; + } + a:not(.btn) { + text-decoration: underline; + } + abbr[title]::after { + content: " (" attr(title) ")"; + } + pre { + white-space: pre-wrap !important; + } + pre, + blockquote { + border: 1px solid #adb5bd; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + @page { + size: a3; + } + body { + min-width: 992px !important; + } + .container { + min-width: 992px !important; + } + .navbar { + display: none; + } + .badge { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #dee2e6 !important; + } + .table-dark { + color: inherit; + } + .table-dark th, + .table-dark td, + .table-dark thead th, + .table-dark tbody + tbody { + border-color: #dee2e6; + } + .table .thead-dark th { + color: inherit; + border-color: #dee2e6; + } +} +/*# sourceMappingURL=bootstrap.css.map */ \ No newline at end of file diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index a8974b96fb..cd1d16797f 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -1,6 +1,38 @@ class ProductsController < ApplicationController def index @products = Product.all + end + + def show + @product = Product.find_by(id: params[:id]) + + if @product.nil? + redirect_to products_path + return + end + end + + def new + @product = Product.new + end + + def create + @product = Product.new(product_parms) + + if @product.save + redirect_to product_path(@product.id) + return + else + @product.errors.each do |type, err| + flash[type] = err + end + render :new + end + end + + private + def work_params + return params.require(:product).permit(:category, :name, :description, :session) end end diff --git a/app/models/category.rb b/app/models/category.rb new file mode 100644 index 0000000000..343b339c34 --- /dev/null +++ b/app/models/category.rb @@ -0,0 +1,3 @@ +class Category < ApplicationRecord + has_many :products +end diff --git a/app/models/product.rb b/app/models/product.rb index ee78335d7b..6b07d4b1bc 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -1,4 +1,8 @@ class Product < ApplicationRecord belongs_to :merchant + belongs_to :category has_many :order_items + + + end diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb index ec0e5ce445..0a4911fdd6 100644 --- a/app/views/homepages/index.html.erb +++ b/app/views/homepages/index.html.erb @@ -1,4 +1,227 @@ -

Homepages#index

-

Find me in app/views/homepages/index.html.erb

+ + + + + + pEtsy + -testing themes + +
+ + +
+
+
+
+ +
+ + + +
+
+
+
+
+ + + +
+
+
+ +

pEtsy

+ + + Category 2 + Category 3 +
+ +
+ + + + +
+
+
+ <%= image_tag 'furby-3.jpg', class: 'list_image'%> +
+

+ Item One +

+
$24.99
+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet numquam aspernatur!

+
+ +
+
+ + +
+
+ +
+

+ Item Two +

+
$24.99
+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet numquam aspernatur! Lorem ipsum dolor sit amet.

+
+ +
+
+ +
+
+ +
+

+ Item Three +

+
$24.99
+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet numquam aspernatur!

+
+ +
+
+ +
+
+ +
+

+ Item Four +

+
$24.99
+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet numquam aspernatur!

+
+ +
+
+ +
+
+ +
+

+ Item Five +

+
$24.99
+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet numquam aspernatur! Lorem ipsum dolor sit amet.

+
+ +
+
+ +
+
+ +
+

+ Item Six +

+
$24.99
+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet numquam aspernatur!

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

Copyright © pEtsy 2020

+
+ +
+ + + + + + + + diff --git a/app/views/products/index.html.erb b/app/views/products/index.html.erb index 64bd0e52ef..6a26748fff 100644 --- a/app/views/products/index.html.erb +++ b/app/views/products/index.html.erb @@ -1,5 +1,3 @@ -

Products

-

Find me in app/views/products/index.html.erb

<% @products.each do |product| %>
    diff --git a/config/routes.rb b/config/routes.rb index e0efda8814..414aebf789 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -6,6 +6,10 @@ resources :order_items resources :orders resources :products + resources :categories + resources :login + + # get 'homepages/index' # get 'order_items/index' # get 'orders/index' diff --git a/db/migrate/20201119092626_create_categories.rb b/db/migrate/20201119092626_create_categories.rb new file mode 100644 index 0000000000..9369bee8c0 --- /dev/null +++ b/db/migrate/20201119092626_create_categories.rb @@ -0,0 +1,8 @@ +class CreateCategories < ActiveRecord::Migration[6.0] + def change + create_table :categories do |t| + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index e37f0a5780..294e9d5fa4 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,11 +10,16 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_11_19_003947) do +ActiveRecord::Schema.define(version: 2020_11_19_092626) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" + create_table "categories", force: :cascade do |t| + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + end + create_table "merchants", force: :cascade do |t| t.string "username" t.string "email" diff --git a/test/models/category_test.rb b/test/models/category_test.rb new file mode 100644 index 0000000000..841a2edc6d --- /dev/null +++ b/test/models/category_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +describe Category do + # it "does a thing" do + # value(1+1).must_equal 2 + # end +end From be6f55cb588c56a0c8e9733ee4d5e3bf1bd00c90 Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Thu, 19 Nov 2020 19:12:25 -0800 Subject: [PATCH 026/129] Testing new theme with master --- app/controllers/products_controller.rb | 47 +++++++++++++++++-- config/routes.rb | 4 +- ...201120015859_add_retire_flag_to_product.rb | 5 ++ db/schema.rb | 3 +- 4 files changed, 53 insertions(+), 6 deletions(-) create mode 100644 db/migrate/20201120015859_add_retire_flag_to_product.rb diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 9d2aec8c97..4cf79f72bd 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -1,11 +1,11 @@ class ProductsController < ApplicationController + before_action :find_product, only: [:show, :edit, :update, :retire] + def index @products = Product.all end def show - @product = Product.find_by(id: params[:id]) - if @product.nil? redirect_to products_path return @@ -17,8 +17,6 @@ def new end def create - @product = Product.new(product_parms) - if @product.save redirect_to product_path(@product.id) return @@ -30,4 +28,45 @@ def create end end + def edit + if @product.nil? + redirect_to products_path + return + end + end + + def update + if @product.nil? + flash[:error] = "Cannot find product to update" + redirect_to products_path + return + elsif @product.update(product_params) + redirect_to product_path(@product.id) + return + else + render :edit + return + end + end + + def retire + + if @product.nil? + flash[:error] = "Cannot find product to retire" + redirect_to products_path + end + @product. + end + end + + private + + def find_product + @product = Product.find_by(id: params[:id]) + end + + def product_params + return params.require(:product).permit(:id, :name, :vin, :available) + end + end diff --git a/config/routes.rb b/config/routes.rb index f2ead27f28..b45a2f0506 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -5,7 +5,9 @@ resources :merchants resources :order_items resources :orders - resources :products + resources :products, except: [:destroy] # Called retire for clarity + delete '/products/:id', to: 'merchants#retire', as: 'retire_product' + get '/auth/:provider/callback', to: 'merchants#create', as: 'auth_callback' get '/auth/github', as: 'github_login' diff --git a/db/migrate/20201120015859_add_retire_flag_to_product.rb b/db/migrate/20201120015859_add_retire_flag_to_product.rb new file mode 100644 index 0000000000..4336f85cc4 --- /dev/null +++ b/db/migrate/20201120015859_add_retire_flag_to_product.rb @@ -0,0 +1,5 @@ +class AddRetireFlagToProduct < ActiveRecord::Migration[6.0] + def change + add_column :products, :retired, :boolean + end +end diff --git a/db/schema.rb b/db/schema.rb index e37f0a5780..674eaf6e89 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_11_19_003947) do +ActiveRecord::Schema.define(version: 2020_11_20_015859) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -49,6 +49,7 @@ t.bigint "merchant_id" t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false + t.boolean "retired" t.index ["merchant_id"], name: "index_products_on_merchant_id" end From eaac5524f743cb74d85727c37e342fea10d5c568 Mon Sep 17 00:00:00 2001 From: Ida Date: Thu, 19 Nov 2020 19:18:49 -0800 Subject: [PATCH 027/129] created new data --- db/seeds.rb | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/db/seeds.rb b/db/seeds.rb index a3bafd46bf..e2bdc52841 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -6,7 +6,20 @@ # movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) # Character.create(name: 'Luke', movie: movies.first) -merchants = Merchant.create!([{username: "coolperson", email: "coolperson@cool.com", provider: - "github", uid: "832943"}]) +merchants = Merchant.create!([{ username: "coolperson", email: "coolperson@cool.com", provider: "github", uid: "832943"}, + { username: "testuser", email: "test@test.com", provider: "github", uid: "34289"}, + { username: "wintergreen", email: "winter@green.com", provider: "github", uid: "34289"}, + { username: "sunshinerainbow", email: "sunshine@rainbow.com", provider: "github", uid: "010183"}, + { username: "awesomesauce", email: "awesome@sauce.com", provider: "github", uid: "97467"}]) + products = Product.create!([{ name: "Furby", description: "A toy from the 90s", price: 9.99, - stock: 200, merchant: merchants.first}]) + stock: 200, merchant: merchants.first}, + { name: "Tamagotchi", description: "The Tamagotchi is a handheld digital pet that was created in Japan. ", price: 15.30, + stock: 150, merchant: Merchant.find_by(username: "sunshinerainbow")}, + { name: "Poo Chi", description: "Poo-Chi, one of the first generations of robopet toys, is a robot dog designed by Samuel James Lloyd and Matt Lucas, ", + price: 5.30, stock: 100, merchant: Merchant.find_by(username: "testuser")}, + { name: "Neopets", description: "Users can own virtual pets, and buy virtual items for them using one of two virtual currencies", + price: 2.00, stock: 100, merchant: Merchant.find_by(username: "wintergreen")}, + { name: "Vintage Troll Doll", description: "They were first created in 1959 and became one of the United States' biggest toy fads in the early 1960s.", + price: 5.00, stock: 100, merchant: Merchant.find_by(username: "awesomesauce")} + ]) From 7d8c6fb256478568137fdda45b7861d7d2939c23 Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Thu, 19 Nov 2020 19:39:30 -0800 Subject: [PATCH 028/129] Updated products controller --- app/controllers/products_controller.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 4cf79f72bd..7e456990bb 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -55,8 +55,7 @@ def retire flash[:error] = "Cannot find product to retire" redirect_to products_path end - @product. - end + @product.retired = true end private From 7069b3806150f27460bfec0ef3df2b3ecd3d7abd Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Thu, 19 Nov 2020 19:58:13 -0800 Subject: [PATCH 029/129] Moved homepages content to application --- Gemfile | 1 - app/controllers/products_controller.rb | 2 + app/views/homepages/index.html.erb | 82 ---------------------- app/views/layouts/application.html.erb | 96 ++++++++++++++++++++++++-- db/schema.rb | 2 +- 5 files changed, 92 insertions(+), 91 deletions(-) diff --git a/Gemfile b/Gemfile index 36afa8ff34..5aeb09a05c 100644 --- a/Gemfile +++ b/Gemfile @@ -28,7 +28,6 @@ gem 'jbuilder', '~> 2.7' # Reduces boot times through caching; required in config/boot.rb gem 'bootsnap', '>= 1.4.2', require: false -gem 'bootstrap-saas' gem 'omniauth' gem 'omniauth-github' diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 4e346213f3..290f0ff95a 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -48,6 +48,8 @@ def update render :edit return end + end + def retire diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb index 0a4911fdd6..9a8a27c77a 100644 --- a/app/views/homepages/index.html.erb +++ b/app/views/homepages/index.html.erb @@ -1,75 +1,3 @@ - - - - - - pEtsy - - - - - - -
    -
    -
    -
    - -
    - - - -
    -
    -
    -
    -
    - - -
    @@ -210,17 +138,7 @@
    - -
    -
    -

    Copyright © pEtsy 2020

    -
    - -
    - - - diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 56d3c16db4..9eac81438a 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -2,6 +2,10 @@ Petsy + + + + <%= csrf_meta_tags %> <%= csp_meta_tag %> @@ -11,15 +15,46 @@
    -
    + +
    <% flash.each do |name, message| %> <% if name == "success" %> @@ -34,8 +69,55 @@ <% end %>
    + +
    +
    +
    +
    + +
    + + + +
    +
    +
    +
    +
    + + <%= yield %> + + +
    +
    +

    Copyright © pEtsy 2020

    +
    + +
    + + + + diff --git a/db/schema.rb b/db/schema.rb index 3920cdd3e0..15e43a9ed2 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_11_19_092626) do +ActiveRecord::Schema.define(version: 2020_11_20_015859) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" From 5e001f00c8615cdfd9c38b55f5ab2250bedcdae7 Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Thu, 19 Nov 2020 21:08:20 -0800 Subject: [PATCH 030/129] Product CRUD almost finished, need review of create product bug --- app/controllers/application_controller.rb | 4 +-- app/controllers/merchants_controller.rb | 2 +- app/controllers/products_controller.rb | 14 +++++++--- app/views/layouts/application.html.erb | 31 +++++++++++------------ app/views/products/_form.html.erb | 18 +++++++++++++ app/views/products/index.html.erb | 4 +++ app/views/products/new.html.erb | 2 ++ config/routes.rb | 7 ++++- 8 files changed, 58 insertions(+), 24 deletions(-) create mode 100644 app/views/products/_form.html.erb create mode 100644 app/views/products/new.html.erb diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 4a60108e9c..53c7bcf671 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -7,9 +7,9 @@ def get_current_merchant end def require_login - if current_merchant.nil? + if @current_merchant.nil? flash[:error] = "You must be logged in to view this section" - redirect_to login_path + redirect_to root_path end end end diff --git a/app/controllers/merchants_controller.rb b/app/controllers/merchants_controller.rb index 71a39adef2..d3de15113a 100644 --- a/app/controllers/merchants_controller.rb +++ b/app/controllers/merchants_controller.rb @@ -5,7 +5,7 @@ def index end def show - @merchant = Merchant.find_by(username: params[:username]) + @merchant = Merchant.find_by(id: params[:id]) if @merchant.nil? redirect_to merchants_path diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 290f0ff95a..cc76cbd8ce 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -1,5 +1,6 @@ class ProductsController < ApplicationController before_action :find_product, only: [:show, :edit, :update, :retire] + before_action :require_login, except: [:index, :show] def index @products = Product.all @@ -13,17 +14,22 @@ def show end def new - @product = Product.new + if params[:merchant_id] + @product = @current_merchant.products.new + end end def create - if @product.save + if @product.nil? + flash[:error] = "Cannot find product to update" + redirect_to products_path + return + elsif @product.save redirect_to product_path(@product.id) return else @product.errors.each do |type, err| flash[type] = err - flash[type] = err end render :new end @@ -67,7 +73,7 @@ def find_product end def product_params - return params.require(:product).permit(:id, :name, :vin, :available) + return params.require(:product).permit(:username, :id, :uid, :provider, :email) end end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 9eac81438a..22a04d7eff 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -54,20 +54,7 @@ - -
    - <% flash.each do |name, message| %> - <% if name == "success" %> -
    - <%= message %> -
    - <% else %> -
    - <%= message %> -
    - <% end %> - <% end %> -
    +
    @@ -103,8 +90,20 @@
    - - + +
    + <% flash.each do |name, message| %> + <% if name == "success" %> +
    + <%= message %> +
    + <% else %> +
    + <%= message %> +
    + <% end %> + <% end %> +
    <%= yield %> diff --git a/app/views/products/_form.html.erb b/app/views/products/_form.html.erb new file mode 100644 index 0000000000..db8a41ad2a --- /dev/null +++ b/app/views/products/_form.html.erb @@ -0,0 +1,18 @@ +<%= form_with model: @product do |f| %> + <%= f.label :name %> + <%= f.text_field :name %> + + <%= f.label :description %> + <%= f.text_area :description %> + + <%= f.label :price %> + <%= f.text_field :price %> + + <%= f.label :stock %> + <%= f.text_field :stock %> + + <%= f.label :photo_url %> + <%= f.text_field :photo_url %> + + <%= f.submit button_name %> +<% end %> \ No newline at end of file diff --git a/app/views/products/index.html.erb b/app/views/products/index.html.erb index 2fd9e1f556..27fec9a2b1 100644 --- a/app/views/products/index.html.erb +++ b/app/views/products/index.html.erb @@ -9,4 +9,8 @@
  • <%= product.stock %> in stock
+ + <% if @current_merchant %> + <%= link_to "Add a product", new_merchant_product_path(@current_merchant.id)%> + <% end %> <% end %> diff --git a/app/views/products/new.html.erb b/app/views/products/new.html.erb new file mode 100644 index 0000000000..fe476b281d --- /dev/null +++ b/app/views/products/new.html.erb @@ -0,0 +1,2 @@ +

List a new product for sale:

+<%= render partial: "form", locals: { button_name: "List product!"} %> \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 9fa7ae320c..e1237a87a8 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -6,10 +6,15 @@ resources :order_items resources :orders resources :products + + # Nested route to create product for a merchant + resources :merchants do + resources :products, only: [:new, :create] + end # resources :categories - resources :products, except: [:destroy] # Called retire for clarity + resources :products, except: [:destroy, :new, :create] # Called retire for clarity delete '/products/:id', to: 'merchants#retire', as: 'retire_product' get '/auth/:provider/callback', to: 'merchants#create', as: 'auth_callback' From 33d144130e66787841ca523f266f760bb6b662a9 Mon Sep 17 00:00:00 2001 From: Ida Date: Fri, 20 Nov 2020 12:07:30 -0800 Subject: [PATCH 031/129] added products show view --- app/views/products/show.html.erb | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 app/views/products/show.html.erb diff --git a/app/views/products/show.html.erb b/app/views/products/show.html.erb new file mode 100644 index 0000000000..9b4defd15a --- /dev/null +++ b/app/views/products/show.html.erb @@ -0,0 +1,13 @@ +

Product Details

+
    +
  • Product name: <%= @product.name %>
  • +
  • Description: <%= @product.description %>
  • +
  • Price: $<%= @product.price %>
  • +
  • Stock: <%= @product.stock %>
  • + <% Merchant.all.each do |merchant| %> + <% if merchant.id == @product.merchant_id %> +
  • Sold by: <%= merchant.username %>
  • + <% end %> + <% end %> + +
\ No newline at end of file From a8a62b83e3d448c5f17ae437368bf242b73e5884 Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Fri, 20 Nov 2020 13:19:22 -0800 Subject: [PATCH 032/129] Added hidden merchant to form --- app/views/products/_form.html.erb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/views/products/_form.html.erb b/app/views/products/_form.html.erb index db8a41ad2a..141de12350 100644 --- a/app/views/products/_form.html.erb +++ b/app/views/products/_form.html.erb @@ -14,5 +14,7 @@ <%= f.label :photo_url %> <%= f.text_field :photo_url %> + <%= f.hidden_field :merchant_id, value: @current_merchant.id %> + <%= f.submit button_name %> <% end %> \ No newline at end of file From adda9ebfac708ed714867388956f02620ec6ea70 Mon Sep 17 00:00:00 2001 From: Ida Date: Fri, 20 Nov 2020 13:20:27 -0800 Subject: [PATCH 033/129] added tests to product controller and show view --- app/controllers/products_controller.rb | 7 ++- test/controllers/products_controller_test.rb | 53 +++++++++++++++----- 2 files changed, 46 insertions(+), 14 deletions(-) diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 9d2aec8c97..ffa55f33df 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -17,7 +17,8 @@ def new end def create - @product = Product.new(product_parms) + # @product = Product.new(product_parms) + @product = Product.new(product_params) if @product.save redirect_to product_path(@product.id) @@ -30,4 +31,8 @@ def create end end + def product_params + return params.require(:product).permit(:name, :description, :price, :photo_url, :stock) + end + end diff --git a/test/controllers/products_controller_test.rb b/test/controllers/products_controller_test.rb index 44e81204d2..c3577f7f48 100644 --- a/test/controllers/products_controller_test.rb +++ b/test/controllers/products_controller_test.rb @@ -1,14 +1,17 @@ require "test_helper" describe ProductsController do -<<<<<<< HEAD -<<<<<<< HEAD -======= ->>>>>>> a29232a6fdc84e8604163f7ad184a59771ecdce4 + let(:product) { Product.create(name: "furby", description: "dog toy", price: 30.50, photo_url: "gettyimages.com", stock: 10) } + let(:merchant) { + Merchant.create(username: "ida", email: "ida@ida.com", + provider: "github", uid: "3050") + } + + describe "index" do it "responds with success when products are saved" do get products_path @@ -42,15 +45,11 @@ must_respond_with :redirect must_redirect_to products_path end -<<<<<<< HEAD - -======= - it "must get index" do - get products_path - must_respond_with :success ->>>>>>> Oauth_Users -======= ->>>>>>> a29232a6fdc84e8604163f7ad184a59771ecdce4 + + it "must get index" do + get products_path + must_respond_with :success + end end describe "new" do @@ -100,5 +99,33 @@ end end + describe "update" do + let(:updated_product_hash) { + { + product: { + name: "updated test", + description: "testing123", + price: 800.00, + photo_url: "xyyx", + stock: 240, + merchant_id: merchant.id + } + } + } + + it "can update an existing product with valid information" do + id = product.id + + expect{ + patch product_path(id), params: updated_product_hash + }.wont_change "Product.count" + + updated_product = Product.find_by(id: id) + + expect(updated_product.name).must_equal updated_product_hash[:product][:name] + expect(updated_product.description).must_equal updated_product_hash[:product][:description] + must_redirect_to product_path(id) + end + end end From 24fe6402c01aa54abeeda73dac1d3c94237292fc Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Fri, 20 Nov 2020 14:11:11 -0800 Subject: [PATCH 034/129] Product page integrated with theme --- app/assets/images/no-image-found.jpg | Bin 0 -> 12561 bytes app/models/product.rb | 2 +- app/views/layouts/application.html.erb | 6 +- app/views/merchants/index.html.erb | 2 +- app/views/products/index.html.erb | 85 ++++++++++++++++++++----- 5 files changed, 76 insertions(+), 19 deletions(-) create mode 100644 app/assets/images/no-image-found.jpg diff --git a/app/assets/images/no-image-found.jpg b/app/assets/images/no-image-found.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bc72370047139bdf28fba9485bfc6b8724256ac4 GIT binary patch literal 12561 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 XJ@? Welcome <%= @current_merchant.username %> + - <% else %> + <% else %> diff --git a/app/views/merchants/index.html.erb b/app/views/merchants/index.html.erb index 69453d4fbb..58bc6787c2 100644 --- a/app/views/merchants/index.html.erb +++ b/app/views/merchants/index.html.erb @@ -7,7 +7,7 @@
  • Email: <%= merchant.email %>
  • - + <% end %> diff --git a/app/views/products/index.html.erb b/app/views/products/index.html.erb index 27fec9a2b1..b970a251e0 100644 --- a/app/views/products/index.html.erb +++ b/app/views/products/index.html.erb @@ -1,16 +1,69 @@ -

    Fineries for Furry Friends

    -<% @products.each do |product| %> -
    -
      -
    • <%= product.name %>

    • -
    • Description: <%= product.description %>
    • -
    • Price: $<%= product.price %>
    • -
    • Sold by <%= link_to product.merchant.username, merchant_path(product.merchant) %>
    • -
    • <%= product.stock %> in stock
    • -
    -
    - - <% if @current_merchant %> - <%= link_to "Add a product", new_merchant_product_path(@current_merchant.id)%> - <% end %> -<% end %> +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + <% @products.each do |product| %> +
    +
    + <% if product.photo_url %> + <%= image_tag product.photo_url, class: 'list_image'%> + <% else %> + <%= image_tag 'no-image-found.jpg', class: 'list_image' %> + <% end %> +
    +

    + <%= product.name %> +

    +
    $<%= product.price %>
    +

    <%= product.description %>

    +
    + +
    +
    + <% end %> + + + +
    + + +
    + + +
    + + + + From c385924a2d878d6f9fdfc47f1618a4bce389101d Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Fri, 20 Nov 2020 14:30:39 -0800 Subject: [PATCH 035/129] Fixed bug preventing add product - needed product_params --- app/controllers/products_controller.rb | 13 +++++-------- app/views/layouts/application.html.erb | 2 +- app/views/products/_form.html.erb | 2 -- config/routes.rb | 5 ----- 4 files changed, 6 insertions(+), 16 deletions(-) diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index a2af0b3a5f..64681416ff 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -14,17 +14,14 @@ def show end def new - if params[:merchant_id] - @product = @current_merchant.products.new - end + @product = Product.new end def create - if @product.nil? - flash[:error] = "Cannot find product to update" - redirect_to products_path - return - elsif @product.save + @product = Product.new(product_params) + @product.merchant = @current_merchant + + if @product.save redirect_to product_path(@product.id) return else diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 2a5d6706ed..709dbf8013 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -40,7 +40,7 @@ Welcome <%= @current_merchant.username %> <% end %> + diff --git a/app/views/orders/cart.html.erb b/app/views/orders/cart.html.erb new file mode 100644 index 0000000000..0d0eb776fe --- /dev/null +++ b/app/views/orders/cart.html.erb @@ -0,0 +1,10 @@ +

    Shopping Cart:

    +Your Current ID: <%= @order.id %> +Your Current Status: <%= @order.status %> + +
      + <% @order.order_items.each do |item| %> + <% @product = Product.find_by(id: item.product_id) %> +
    • <%= @product.name %>
    • + <% end %> +
    diff --git a/app/views/products/index.html.erb b/app/views/products/index.html.erb index b970a251e0..340b9566c4 100644 --- a/app/views/products/index.html.erb +++ b/app/views/products/index.html.erb @@ -42,7 +42,7 @@ <% end %>

    - <%= product.name %> + <%= link_to product.name, product_path(product) %>

    $<%= product.price %>

    <%= product.description %>

    diff --git a/app/views/products/show.html.erb b/app/views/products/show.html.erb index 9b4defd15a..1d46c45e6c 100644 --- a/app/views/products/show.html.erb +++ b/app/views/products/show.html.erb @@ -9,5 +9,5 @@
  • Sold by: <%= merchant.username %>
  • <% end %> <% end %> - +
  • <%= link_to "Add to Cart", add_cart_path(@product), method: :patch %>
  • \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 60f137d260..3a74507c5e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -4,7 +4,7 @@ resources :homepages resources :merchants resources :order_items - resources :orders + resources :orders, except: :show resources :products # resources :categories @@ -16,6 +16,8 @@ get '/auth/github', as: 'github_login' delete '/logout', to: 'merchants#destroy', as: 'logout' + get '/cart', to: 'orders#cart', as: 'cart' + patch '/cart/:id', to: 'orders#add_to_cart', as: 'add_cart' # get 'homepages/index' # get 'order_items/index' From c3074761f700feb1bde3979ebc9febde0cb81596 Mon Sep 17 00:00:00 2001 From: Hanh Solo Date: Fri, 20 Nov 2020 17:21:56 -0800 Subject: [PATCH 037/129] Updated application_controller shopper method --- app/controllers/application_controller.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 9026254198..db7a9d02c4 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -14,9 +14,12 @@ def require_login end def shopper - if session[:shopper_id] @shopper = session[:shopper_id] + if Order.find_by(id: @shopper).nil? + session[:shopper_id] = Order.create!(status: "shopping").id + @shopper = session[:shopper_id] + end else session[:shopper_id] = Order.create!(status: "shopping").id @shopper = session[:shopper_id] From 9013f4dfca35887fbefbf3975f43e65dea0bb935 Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Fri, 20 Nov 2020 19:26:42 -0800 Subject: [PATCH 038/129] Added new indirect model relation and refactored shopper method --- app/controllers/application_controller.rb | 8 ++------ app/models/product.rb | 1 + 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index db7a9d02c4..bddbe60cbd 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -14,17 +14,13 @@ def require_login end def shopper - if session[:shopper_id] - @shopper = session[:shopper_id] - if Order.find_by(id: @shopper).nil? + if Order.find_by(id: session[:shopper_id]).nil? session[:shopper_id] = Order.create!(status: "shopping").id @shopper = session[:shopper_id] - end else - session[:shopper_id] = Order.create!(status: "shopping").id @shopper = session[:shopper_id] end - @shopper + return @shopper end end diff --git a/app/models/product.rb b/app/models/product.rb index 0d559a1e1b..958d7f4c8c 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -2,6 +2,7 @@ class Product < ApplicationRecord belongs_to :merchant # belongs_to :category has_many :order_items + has_many :orders, through: :order_items validates :name, presence: true, uniqueness: true validates :price, presence: true, numericality: { greater_than: 0 } From fbd81296b5af1acdf59a56fe16dee49ec088947e Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Fri, 20 Nov 2020 20:16:09 -0800 Subject: [PATCH 039/129] Refactored add_to_cart and edit_quantity to be in order_item controller, implemented use of quantity in cart management --- app/controllers/order_items_controller.rb | 41 ++++++++++++++++++++++- app/controllers/orders_controller.rb | 10 ------ app/views/orders/cart.html.erb | 23 ++++++++++--- app/views/products/show.html.erb | 6 +++- config/routes.rb | 14 ++++---- 5 files changed, 71 insertions(+), 23 deletions(-) diff --git a/app/controllers/order_items_controller.rb b/app/controllers/order_items_controller.rb index 70d7490e69..67843bdcda 100644 --- a/app/controllers/order_items_controller.rb +++ b/app/controllers/order_items_controller.rb @@ -1,4 +1,43 @@ class OrderItemsController < ApplicationController - def index + + def add_to_cart + @product = Product.find_by(id: params[:id]) + # Check if the item exists + if @order_item = OrderItem.find_by(product_id: @product.id, order_id: @shopper) + # Add to the existing quantity instead of creating a new item + @order_item.quantity += params["quantity"].to_i + @order_item.save + else + # Create a new order item with appropriate quantity + @order_item = OrderItem.create!(product_id: @product.id, order_id: @shopper, quantity: + params["quantity"].to_i) + end + + redirect_to cart_path + return @order_item + end + + def edit_quantity + @product = Product.find_by(id: params[:id]) + # If the item exists + if @order_item = OrderItem.find_by(product_id: @product.id, order_id: @shopper) + # Alter the order quantity + @order_item.quantity = params["quantity"].to_i + if @order_item.save.nil? + # Save failed + flash["error"] = "Invalid quantity specified" + else + flash["success"] = "Quantity updated!" + end + else + # Item not found + flash["error"] = "Item to edit quantity not found" + end + + redirect_to cart_path + + end + + end diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index ef6e173cbf..7d2fed89eb 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -1,20 +1,10 @@ class OrdersController < ApplicationController def index @orders = Order.all - end def cart @order = Order.find_by(id: @shopper) end - def add_to_cart - @product = Product.find_by(id: params[:id]) - @order_item = OrderItem.create!(product_id: @product.id, order_id: @shopper, quantity: 1) - - redirect_to cart_path - return @order_item - - end - end diff --git a/app/views/orders/cart.html.erb b/app/views/orders/cart.html.erb index 0d0eb776fe..33a6b2571c 100644 --- a/app/views/orders/cart.html.erb +++ b/app/views/orders/cart.html.erb @@ -2,9 +2,22 @@ Your Current ID: <%= @order.id %> Your Current Status: <%= @order.status %> -
      - <% @order.order_items.each do |item| %> - <% @product = Product.find_by(id: item.product_id) %> -
    • <%= @product.name %>
    • + + + + + + <% @order.order_items.each do |item| %> + + <% @product = Product.find_by(id: item.product_id) %> + + + <% end %> - +
      ItemQuantity
      <%= @product.name %> + <%= form_with url: edit_quantity_path(@product), method: :patch do |f| %> + <%= f.label :quantity %> + <%= f.select :quantity, (1..99), selected: item.quantity %> +
    • <%= f.submit "Add to Cart" %>
    • + <% end %> +
      diff --git a/app/views/products/show.html.erb b/app/views/products/show.html.erb index 1d46c45e6c..5746dce7ef 100644 --- a/app/views/products/show.html.erb +++ b/app/views/products/show.html.erb @@ -9,5 +9,9 @@
    • Sold by: <%= merchant.username %>
    • <% end %> <% end %> -
    • <%= link_to "Add to Cart", add_cart_path(@product), method: :patch %>
    • + <%= form_with url: add_cart_path(@product), method: :patch do |f| %> + <%= f.label :quantity %> + <%= f.select :quantity, (1..99) %> +
    • <%= f.submit "Add to Cart" %>
    • + <% end %>
    \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 3a74507c5e..e8a81bc0dc 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,23 +1,25 @@ Rails.application.routes.draw do root to: "homepages#index" + # TODO remove unused routes resources :homepages resources :merchants resources :order_items resources :orders, except: :show - resources :products + resources :products, except: :destroy # Called retire for clarity + delete '/products/:id', to: 'merchants#retire', as: 'retire_product' # resources :categories - resources :products, except: [:destroy, :new, :create] # Called retire for clarity - delete '/products/:id', to: 'merchants#retire', as: 'retire_product' - + # Login stuff get '/auth/:provider/callback', to: 'merchants#create', as: 'auth_callback' get '/auth/github', as: 'github_login' - delete '/logout', to: 'merchants#destroy', as: 'logout' + + # Cart stuff get '/cart', to: 'orders#cart', as: 'cart' - patch '/cart/:id', to: 'orders#add_to_cart', as: 'add_cart' + patch '/cart/edit_quantity/:id', to: 'order_items#edit_quantity', as: 'edit_quantity' + patch '/cart/:id', to: 'order_items#add_to_cart', as: 'add_cart' # get 'homepages/index' # get 'order_items/index' From 02fa0b35ba8e3c20faacee0507106b5f64711462 Mon Sep 17 00:00:00 2001 From: Ida Date: Sat, 21 Nov 2020 11:38:23 -0800 Subject: [PATCH 040/129] added fixtures file for products --- test/fixtures/products.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 test/fixtures/products.yml diff --git a/test/fixtures/products.yml b/test/fixtures/products.yml new file mode 100644 index 0000000000..5184bf80c7 --- /dev/null +++ b/test/fixtures/products.yml @@ -0,0 +1,14 @@ +product_one: + name: Furby + description: A toy from the 90s + price: 9.99 + stock: 200 + merchant: ada + +product_two: + name: Tamagotchi + description: The Tamagotchi is a handheld digital pet that was created in Japan + price: 15.30 + stock: 150 + merchant: grace + From 9aaeae719a1f431ae8add3601b6630d24d57b6ab Mon Sep 17 00:00:00 2001 From: Beatrice Tohni <68613162+Beatress@users.noreply.github.com> Date: Sat, 21 Nov 2020 13:31:30 -0800 Subject: [PATCH 041/129] Apply suggestions from code review --- app/views/orders/cart.html.erb | 2 +- config/routes.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/orders/cart.html.erb b/app/views/orders/cart.html.erb index 33a6b2571c..46de3ffecc 100644 --- a/app/views/orders/cart.html.erb +++ b/app/views/orders/cart.html.erb @@ -15,7 +15,7 @@ Your Current Status: <%= @order.status %> <%= form_with url: edit_quantity_path(@product), method: :patch do |f| %> <%= f.label :quantity %> <%= f.select :quantity, (1..99), selected: item.quantity %> -
  • <%= f.submit "Add to Cart" %>
  • +
  • <%= f.submit "Change Quantity %>
  • <% end %> diff --git a/config/routes.rb b/config/routes.rb index e8a81bc0dc..fc4b98cacc 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -8,7 +8,7 @@ resources :orders, except: :show resources :products, except: :destroy # Called retire for clarity delete '/products/:id', to: 'merchants#retire', as: 'retire_product' - +# TODO ^^ Move to products controller? # resources :categories # Login stuff From 71d3a56c3f628fcc9b2949482e3a10d57b27606b Mon Sep 17 00:00:00 2001 From: Ida Date: Sat, 21 Nov 2020 13:34:10 -0800 Subject: [PATCH 042/129] cart changes --- app/controllers/orders_controller.rb | 1 + app/views/orders/cart.html.erb | 9 +++++---- config/routes.rb | 1 - 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index ef6e173cbf..843c06a898 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -17,4 +17,5 @@ def add_to_cart end + end diff --git a/app/views/orders/cart.html.erb b/app/views/orders/cart.html.erb index 0d0eb776fe..9078e927ac 100644 --- a/app/views/orders/cart.html.erb +++ b/app/views/orders/cart.html.erb @@ -3,8 +3,9 @@ Your Current ID: <%= @order.id %> Your Current Status: <%= @order.status %>
      - <% @order.order_items.each do |item| %> - <% @product = Product.find_by(id: item.product_id) %> -
    • <%= @product.name %>
    • - <% end %> + <% @order.order_items.each do |item| %> + <% @product = Product.find_by(id: item.product_id) %> +
    • <%= @product.name %>
    • + <% end %>
    + diff --git a/config/routes.rb b/config/routes.rb index 3a74507c5e..9dad9a49c7 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -18,7 +18,6 @@ delete '/logout', to: 'merchants#destroy', as: 'logout' get '/cart', to: 'orders#cart', as: 'cart' patch '/cart/:id', to: 'orders#add_to_cart', as: 'add_cart' - # get 'homepages/index' # get 'order_items/index' # get 'orders/index' From 3e4cf7984006f2571878bfc86beec038053c2ae3 Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Sat, 21 Nov 2020 13:35:08 -0800 Subject: [PATCH 043/129] Added missing quotation mark --- app/views/orders/cart.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/orders/cart.html.erb b/app/views/orders/cart.html.erb index 46de3ffecc..455782e2cd 100644 --- a/app/views/orders/cart.html.erb +++ b/app/views/orders/cart.html.erb @@ -15,7 +15,7 @@ Your Current Status: <%= @order.status %> <%= form_with url: edit_quantity_path(@product), method: :patch do |f| %> <%= f.label :quantity %> <%= f.select :quantity, (1..99), selected: item.quantity %> -
  • <%= f.submit "Change Quantity %>
  • +
  • <%= f.submit "Change Quantity" %>
  • <% end %> From 901a251d3d879c8a28123b2da9b707e1a4aec1e4 Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Sat, 21 Nov 2020 13:40:14 -0800 Subject: [PATCH 044/129] Fixed merge conflicts --- app/views/orders/cart.html.erb | 3 --- config/routes.rb | 8 +++----- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/app/views/orders/cart.html.erb b/app/views/orders/cart.html.erb index e746d5945a..0a82e46e0e 100644 --- a/app/views/orders/cart.html.erb +++ b/app/views/orders/cart.html.erb @@ -2,7 +2,6 @@ Your Current ID: <%= @order.id %> Your Current Status: <%= @order.status %> -<<<<<<< HEAD
      <% @order.order_items.each do |item| %> <% @product = Product.find_by(id: item.product_id) %> @@ -10,7 +9,6 @@ Your Current Status: <%= @order.status %> <% end %>
    -======= @@ -30,4 +28,3 @@ Your Current Status: <%= @order.status %> <% end %>
    Item
    ->>>>>>> a25fd189f46fdbac54717fdafc401615b88cd0da diff --git a/config/routes.rb b/config/routes.rb index 700c3c00e2..a326af2329 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,6 +1,7 @@ Rails.application.routes.draw do root to: "homepages#index" + # TODO remove unused routes resources :homepages resources :merchants @@ -8,7 +9,8 @@ resources :orders, except: :show resources :products, except: :destroy # Called retire for clarity delete '/products/:id', to: 'merchants#retire', as: 'retire_product' -# TODO ^^ Move to products controller? + # TODO ^^ Move to products controller? + # resources :categories # Login stuff @@ -18,13 +20,9 @@ # Cart stuff get '/cart', to: 'orders#cart', as: 'cart' -<<<<<<< HEAD - patch '/cart/:id', to: 'orders#add_to_cart', as: 'add_cart' -======= patch '/cart/edit_quantity/:id', to: 'order_items#edit_quantity', as: 'edit_quantity' patch '/cart/:id', to: 'order_items#add_to_cart', as: 'add_cart' ->>>>>>> a25fd189f46fdbac54717fdafc401615b88cd0da # get 'homepages/index' # get 'order_items/index' # get 'orders/index' From 5e40a975cb09e7a6cc231d597dc7522996d1e9be Mon Sep 17 00:00:00 2001 From: Hanh Solo Date: Sat, 21 Nov 2020 14:34:47 -0800 Subject: [PATCH 045/129] Checkout form, method, routes and migrate --- app/controllers/orders_controller.rb | 4 +++ app/views/orders/cart.html.erb | 2 ++ app/views/orders/check_out.html.erb | 29 +++++++++++++++++++ config/routes.rb | 4 ++- ...01121222846_add_customer_info_to_orders.rb | 12 ++++++++ db/schema.rb | 10 ++++++- 6 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 app/views/orders/check_out.html.erb create mode 100644 db/migrate/20201121222846_add_customer_info_to_orders.rb diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index ff38fb6d2a..fa0af9b69f 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -16,5 +16,9 @@ def add_to_cart end + def check_out + @order = Order.find_by(id: @shopper) + end + end diff --git a/app/views/orders/cart.html.erb b/app/views/orders/cart.html.erb index 0a82e46e0e..c69d248f3d 100644 --- a/app/views/orders/cart.html.erb +++ b/app/views/orders/cart.html.erb @@ -28,3 +28,5 @@ Your Current Status: <%= @order.status %> <% end %> + +<%= link_to 'Checkout', checkout_path, class: 'btn btn-primary' %> diff --git a/app/views/orders/check_out.html.erb b/app/views/orders/check_out.html.erb new file mode 100644 index 0000000000..0cea424c02 --- /dev/null +++ b/app/views/orders/check_out.html.erb @@ -0,0 +1,29 @@ +<%= form_with model: @order, method: :post do |f| %> + + <%= f.label :email %> + <%= f.text_area :email %> + + <%= f.label :address %> + <%= f.text_field :address %> + + <%= f.label :name %> + <%= f.text_field :name %> + + <%= f.label :card_number %> + <%= f.text_field :card_number %> + + <%= f.label :expiration_month %> + <%= f.text_field :expiration_month %> + + <%= f.label :expiration_year %> + <%= f.text_field :expiration_year %> + + <%= f.label :security_code %> + <%= f.text_field :security_code %> + + <%= f.label :zip_code %> + <%= f.text_field :zip_code %> + + <%= f.submit 'Make Purchase' %> + +<% end %> \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index a326af2329..b207e728d1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -18,10 +18,12 @@ get '/auth/github', as: 'github_login' delete '/logout', to: 'merchants#destroy', as: 'logout' - # Cart stuff + # Cart(Order) stuff get '/cart', to: 'orders#cart', as: 'cart' patch '/cart/edit_quantity/:id', to: 'order_items#edit_quantity', as: 'edit_quantity' patch '/cart/:id', to: 'order_items#add_to_cart', as: 'add_cart' + get '/cart/checkout', to: 'orders#check_out', as: 'checkout' + post '/cart/:id', to: 'orders#process_order', as: 'process_order' # get 'homepages/index' # get 'order_items/index' diff --git a/db/migrate/20201121222846_add_customer_info_to_orders.rb b/db/migrate/20201121222846_add_customer_info_to_orders.rb new file mode 100644 index 0000000000..42c8dffd05 --- /dev/null +++ b/db/migrate/20201121222846_add_customer_info_to_orders.rb @@ -0,0 +1,12 @@ +class AddCustomerInfoToOrders < ActiveRecord::Migration[6.0] + def change + add_column :orders, :name, :string + add_column :orders, :email, :string + add_column :orders, :address, :string + add_column :orders, :card_number, :bigint + add_column :orders, :expiration_month, :integer + add_column :orders, :expiration_year, :integer + add_column :orders, :security_code, :integer + add_column :orders, :zip_code, :integer + end +end diff --git a/db/schema.rb b/db/schema.rb index 15e43a9ed2..e5cf52d263 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_11_20_015859) do +ActiveRecord::Schema.define(version: 2020_11_21_222846) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -43,6 +43,14 @@ t.string "status" t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false + t.string "name" + t.string "email" + t.string "address" + t.bigint "card_number" + t.integer "expiration_month" + t.integer "expiration_year" + t.integer "security_code" + t.integer "zip_code" end create_table "products", force: :cascade do |t| From c84c00a2e7b36c0ebf561a300985c6a71efa15db Mon Sep 17 00:00:00 2001 From: Hanh Solo Date: Sat, 21 Nov 2020 14:46:37 -0800 Subject: [PATCH 046/129] Order processing method --- app/controllers/orders_controller.rb | 24 +++++++++++++++++++++++- config/routes.rb | 2 +- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index fa0af9b69f..c6a6859468 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -16,9 +16,31 @@ def add_to_cart end - def check_out + def check_out # new @order = Order.find_by(id: @shopper) end + def process_order # + @order = Order.find_by(id: @shopper) + @order = order_params + @order.status = 'processing' + raise + + end + + private + + # def find_order + # @order = Order.find_by(id: params[:id]) + # end + + + def order_params + return params.require(:order).permit(:name, :email, :address, :card_number, + :expiration_month, :expiration_year, :security_code, :zip_code) + end + + + end diff --git a/config/routes.rb b/config/routes.rb index b207e728d1..ee8d295e7f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -6,7 +6,7 @@ resources :homepages resources :merchants resources :order_items - resources :orders, except: :show + resources :orders #except: :show resources :products, except: :destroy # Called retire for clarity delete '/products/:id', to: 'merchants#retire', as: 'retire_product' # TODO ^^ Move to products controller? From 7d5a15d3101957d931e9b563f523d76794724e62 Mon Sep 17 00:00:00 2001 From: Sandy Date: Sat, 21 Nov 2020 16:58:32 -0800 Subject: [PATCH 047/129] Added redirect to order controller, added show page, and finished process_order action --- app/controllers/orders_controller.rb | 24 ++++++++---------------- app/views/orders/show.html.erb | 1 + config/routes.rb | 4 ++-- 3 files changed, 11 insertions(+), 18 deletions(-) create mode 100644 app/views/orders/show.html.erb diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index c6a6859468..3ce19a031e 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -1,6 +1,6 @@ class OrdersController < ApplicationController - def index - @orders = Order.all + def show + @order = Order.find_by(id: @shopper) end def cart @@ -20,27 +20,19 @@ def check_out # new @order = Order.find_by(id: @shopper) end - def process_order # + def process_order #create @order = Order.find_by(id: @shopper) - @order = order_params + @order.update(order_params) @order.status = 'processing' - raise - + @order.save + redirect_to order_path + # raise end - private - - # def find_order - # @order = Order.find_by(id: params[:id]) - # end - + private def order_params return params.require(:order).permit(:name, :email, :address, :card_number, :expiration_month, :expiration_year, :security_code, :zip_code) end - - - - end diff --git a/app/views/orders/show.html.erb b/app/views/orders/show.html.erb new file mode 100644 index 0000000000..7d2c18b867 --- /dev/null +++ b/app/views/orders/show.html.erb @@ -0,0 +1 @@ +"testing show page" \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index ee8d295e7f..62172337f3 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -6,7 +6,7 @@ resources :homepages resources :merchants resources :order_items - resources :orders #except: :show + resources :orders resources :products, except: :destroy # Called retire for clarity delete '/products/:id', to: 'merchants#retire', as: 'retire_product' # TODO ^^ Move to products controller? @@ -23,7 +23,7 @@ patch '/cart/edit_quantity/:id', to: 'order_items#edit_quantity', as: 'edit_quantity' patch '/cart/:id', to: 'order_items#add_to_cart', as: 'add_cart' get '/cart/checkout', to: 'orders#check_out', as: 'checkout' - post '/cart/:id', to: 'orders#process_order', as: 'process_order' + post '/orders/:id', to: 'orders#process_order', as: 'process_order' # get 'homepages/index' # get 'order_items/index' From c429473c2cf563f4a44000ac07e9ebabd7ba948d Mon Sep 17 00:00:00 2001 From: Sandy Date: Sat, 21 Nov 2020 18:45:44 -0800 Subject: [PATCH 048/129] initial commit --- db/schema.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/db/schema.rb b/db/schema.rb index e5cf52d263..5b514d2154 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -20,6 +20,12 @@ t.datetime "updated_at", precision: 6, null: false end + + create_table "images", force: :cascade do |t| + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + end + create_table "merchants", force: :cascade do |t| t.string "username" t.string "email" From 1339a445c88f9ec88d1fb520a05ea753a281a377 Mon Sep 17 00:00:00 2001 From: Sandy Date: Sat, 21 Nov 2020 19:35:00 -0800 Subject: [PATCH 049/129] removed search bar and made footer sticky from application.html.erb --- app/assets/stylesheets/application.scss | 33 ++++++++--------- app/views/layouts/application.html.erb | 48 ++----------------------- 2 files changed, 18 insertions(+), 63 deletions(-) diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 9170af292e..1db55e0b50 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -72,6 +72,7 @@ article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { } body { + position: relative; margin: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 1rem; @@ -80,12 +81,24 @@ body { text-align: left; } +footer { + background-color:#CC490C; + padding-top: 20px; + padding-bottom: 20px; + text-align: center; + width: 100%; + position: fixed; + bottom: 0 +} +.nav-bar-11 { + margin-top: 100px; +} + .list_image{ float: left; width: 360px; height: 300px; object-fit: cover; - } [tabindex="-1"]:focus:not(:focus-visible) { @@ -2827,12 +2840,6 @@ fieldset:disabled a.btn { box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); } -.btn-dark { - color: #fff; - background-color: #343a40; - border-color: #343a40; -} - .btn-dark:hover { color: #fff; background-color: #23272b; @@ -4349,17 +4356,7 @@ input[type="button"].btn-block { padding: 0.5rem 1rem; } -.navbar .container, -.navbar .container-fluid, .navbar .container-sm, .navbar .container-md, .navbar .container-lg, .navbar .container-xl { - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -ms-flex-align: center; - align-items: center; - -ms-flex-pack: justify; - justify-content: space-between; -} + .navbar-brand { display: inline-block; diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 29d873d1f9..804e040136 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -14,7 +14,7 @@ -
    +
    - - - - - -
    -
    -
    -
    - -
    - - - -
    -
    -
    -
    -
    +
    @@ -115,15 +79,9 @@ <%= yield %> -
    \ No newline at end of file From c5dc4601a47ab0c73b10b560cbffb6eb3b04f7aa Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Tue, 24 Nov 2020 12:31:09 -0800 Subject: [PATCH 098/129] Added proper currency formatting everywhere --- app/views/order_items/index.html.erb | 2 -- app/views/orders/index.html.erb | 23 +++++++++++------------ app/views/orders/show.html.erb | 6 +++--- app/views/products/index.html.erb | 5 +++-- 4 files changed, 17 insertions(+), 19 deletions(-) delete mode 100644 app/views/order_items/index.html.erb diff --git a/app/views/order_items/index.html.erb b/app/views/order_items/index.html.erb deleted file mode 100644 index 25eb4a6ac8..0000000000 --- a/app/views/order_items/index.html.erb +++ /dev/null @@ -1,2 +0,0 @@ -

    OrderItems#index

    -

    Find me in app/views/order_items/index.html.erb

    diff --git a/app/views/orders/index.html.erb b/app/views/orders/index.html.erb index dbbeeb461e..b3c773129f 100644 --- a/app/views/orders/index.html.erb +++ b/app/views/orders/index.html.erb @@ -11,22 +11,21 @@ <% end %> -
    <% if @current_merchant %>

    Order Fulfillment:

    -

    Total Revenue: $<%= @current_merchant.total_revenue %>

    -

    Total Revenue by pending (shopping): $<%= @current_merchant.total_revenue('shopping') %>

    -

    Total Revenue by paid (processing): $<%= @current_merchant.total_revenue('processing') %>

    -

    Total Revenue by complete: $<%= @current_merchant.total_revenue('complete') %>

    -

    Total Revenue by cancelled: $<%= @current_merchant.total_revenue('cancelled') %>

    -

    Total Number of Orders: <%= @current_merchant.total_num %>

    -

    Total number of orders by pending: <%= @current_merchant.total_num('shopping') %>

    -

    Total number of orders by processing: <%= @current_merchant.total_num('processing') %>

    -

    Total number of orders by complete: <%= @current_merchant.total_num('complete') %>

    -

    Total number of orders by cancelled: <%= @current_merchant.total_num('cancelled') %>

    +

    Total Revenue: <%= number_to_currency(@current_merchant.total_revenue) %>

    +

    Total Revenue by pending (shopping): <%= number_to_currency(@current_merchant.total_revenue('shopping')) %>

    +

    Total Revenue by paid (processing): <%= number_to_currency(@current_merchant.total_revenue('processing')) %>

    +

    Total Revenue by complete: <%= number_to_currency(@current_merchant.total_revenue('complete')) %>

    +

    Total Revenue by cancelled: <%= number_to_currency(@current_merchant.total_revenue('cancelled')) %>

    +

    Total Number of Orders: <%= number_to_currency(@current_merchant.total_num) %>

    +

    Total number of orders by pending: <%= number_to_currency(@current_merchant.total_num('shopping')) %>

    +

    Total number of orders by processing: <%= number_to_currency(@current_merchant.total_num('processing')) %>

    +

    Total number of orders by complete: <%= number_to_currency(@current_merchant.total_num('complete')) %>

    +

    Total number of orders by cancelled: <%= number_to_currency(@current_merchant.total_num('cancelled')) %>

    Orders:

    @@ -43,7 +42,7 @@ - + diff --git a/app/views/orders/show.html.erb b/app/views/orders/show.html.erb index 64e4d6096b..f1196bea6c 100644 --- a/app/views/orders/show.html.erb +++ b/app/views/orders/show.html.erb @@ -13,13 +13,13 @@ Your Order ID: <%= @order.id %> <% @product = Product.find_by(id: item.product_id) %> - - + + <% end %>
    <%= order.id %> <%= order.name %> <%= order.email %><%= order.total %><%= number_to_currency(order.total) %> <%= link_to "Go", order_path(order), class: 'btn btn-primary' %> <%= order.created_at %><%= @product.name %> <%= item.quantity %>$<%= @product.price %>$<%= @product.price * item.quantity %><%= number_to_currency(@product.price) %><%= number_to_currency(@product.price * item.quantity) %>
    -

    Grand total: <%= @order.total %>

    +

    Grand total: <%= number_to_currency(@order.total) %>

    Shopper details

    diff --git a/app/views/products/index.html.erb b/app/views/products/index.html.erb index 150e6ad239..93e0ab4053 100644 --- a/app/views/products/index.html.erb +++ b/app/views/products/index.html.erb @@ -16,11 +16,12 @@

    <%= link_to product.name, product_path(product) %>

    -
    $<%= product.price %>
    +
    <%= number_to_currency(product.price) %>

    <%= product.description %>

    From 2617d4115cc189203e9f2c1f8091f278f280be43 Mon Sep 17 00:00:00 2001 From: Beatrice Tohni <68613162+Beatress@users.noreply.github.com> Date: Tue, 24 Nov 2020 12:44:27 -0800 Subject: [PATCH 099/129] Update orders_table.html.erb --- app/views/merchants/orders_table.html.erb | 49 ++++++++++++----------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/app/views/merchants/orders_table.html.erb b/app/views/merchants/orders_table.html.erb index d2d234257c..ec9757d5ae 100644 --- a/app/views/merchants/orders_table.html.erb +++ b/app/views/merchants/orders_table.html.erb @@ -1,25 +1,26 @@ - - - - - - - - - - - - <% @current_merchant.orders.uniq.each do |order|%> - - - - - - <% if order.status == 'processing' %> - - <% end %> - - <% end %> - -
    Order NumberCustomerOrder ItemsTotal CostStatus
    <%= link_to "##{order.id}", order_path(order) %><%= order.order_belongs_to_merchant?.count %><%= order.total_revenue %><%= order.status %><%= button_to "Processing Order", process_order_path(order) %>
    +# Ida worked on an order dashboard for merchants in orders/index +# +# +# +# +# +# +# +# +# +# +# +# <% @current_merchant.orders.uniq.each do |order|%> +# +# +# +# +# +# <% if order.status == 'processing' %> +# +# <% end %> +# +# <% end %> +# +#
    Order NumberCustomerOrder ItemsTotal CostStatus
    <%= link_to "##{order.id}", order_path(order) %><%= order.order_belongs_to_merchant?.count %><%= order.total_revenue %><%= order.status %><%= button_to "Processing Order", process_order_path(order) %>
    From fc32d7c58c20f7ecdedd0174a7816f08aa3e2fc7 Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Tue, 24 Nov 2020 14:21:36 -0800 Subject: [PATCH 100/129] Applied suggestions from code review --- app/controllers/merchants_controller.rb | 8 +--- app/models/product.rb | 2 +- app/views/merchants/orders_table.html.erb | 50 +++++++++++------------ test/models/product_test.rb | 14 +------ 4 files changed, 29 insertions(+), 45 deletions(-) diff --git a/app/controllers/merchants_controller.rb b/app/controllers/merchants_controller.rb index b52122aed9..143586f92b 100644 --- a/app/controllers/merchants_controller.rb +++ b/app/controllers/merchants_controller.rb @@ -1,5 +1,5 @@ class MerchantsController < ApplicationController - before_action :require_login, only: [ :dashboard :manage_orders, :manage_products, :logout] + before_action :require_login, only: [:logout] def index @merchants = Merchant.all @@ -46,12 +46,6 @@ def create # same as login return end - def dashboard; end - - def manage_orders; end - - def manage_products; end - def destroy # same as logout session[:merchant_id] = nil flash[:success] = "Successfully logged out!" diff --git a/app/models/product.rb b/app/models/product.rb index 9d669ffc20..cc91463847 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -2,7 +2,7 @@ class Product < ApplicationRecord belongs_to :merchant # belongs_to :category has_many :order_items - has_many :orders, through: :order_items # + has_many :orders, through: :order_items validates :name, presence: true, uniqueness: true validates :price, presence: true, numericality: { greater_than: 0 } diff --git a/app/views/merchants/orders_table.html.erb b/app/views/merchants/orders_table.html.erb index ec9757d5ae..a777235727 100644 --- a/app/views/merchants/orders_table.html.erb +++ b/app/views/merchants/orders_table.html.erb @@ -1,26 +1,26 @@ -# Ida worked on an order dashboard for merchants in orders/index -# -# -# -# -# -# -# -# -# -# -# -# <% @current_merchant.orders.uniq.each do |order|%> -# -# -# -# -# -# <% if order.status == 'processing' %> -# -# <% end %> -# -# <% end %> -# -#
    Order NumberCustomerOrder ItemsTotal CostStatus
    <%= link_to "##{order.id}", order_path(order) %><%= order.order_belongs_to_merchant?.count %><%= order.total_revenue %><%= order.status %><%= button_to "Processing Order", process_order_path(order) %>
    + + + + + + + + + + + + + <%# @current_merchant.orders.uniq.each do |order|%> + + + + + + <%# if order.status == 'processing' %> + + <%# end %> + + <%# end %> + + diff --git a/test/models/product_test.rb b/test/models/product_test.rb index 26d417ca13..dc9a57aefc 100644 --- a/test/models/product_test.rb +++ b/test/models/product_test.rb @@ -48,22 +48,12 @@ describe "relationships" do it 'belongs to a merchant' do expect(@product).must_respond_to :merchant - expect(@product.merchant).must_be_an_instance_of Merchant + expect(@product.merchant).must_be_instance_of Merchant end - it 'has many products' do - expect(@order.products.count).must_equal 2 - @order.products.each do |product| - expect(product).must_be_instance_of Product - end - - end - it "has many order items" do - - expect(@product.order_items) - + expect(@product.respond_to?(:order_items)).must_equal true end end From b60c7bdfa56872772bab5c2bbac3b1e8792532a6 Mon Sep 17 00:00:00 2001 From: Hanh Solo Date: Tue, 24 Nov 2020 14:31:18 -0800 Subject: [PATCH 101/129] Merges fixed --- app/controllers/merchants_controller.rb | 2 +- test/models/product_test.rb | 24 +++++++++++++++++------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/app/controllers/merchants_controller.rb b/app/controllers/merchants_controller.rb index b52122aed9..d6f2d258e6 100644 --- a/app/controllers/merchants_controller.rb +++ b/app/controllers/merchants_controller.rb @@ -1,5 +1,5 @@ class MerchantsController < ApplicationController - before_action :require_login, only: [ :dashboard :manage_orders, :manage_products, :logout] + before_action :require_login, only: [ :dashboard, :manage_orders, :manage_products, :logout] def index @merchants = Merchant.all diff --git a/test/models/product_test.rb b/test/models/product_test.rb index 26d417ca13..aa91883716 100644 --- a/test/models/product_test.rb +++ b/test/models/product_test.rb @@ -6,6 +6,10 @@ "github", uid: "832943") @product = Product.create(name: "test name", description: "test description", price: 4.55, photo_url: "gettyimages.com", stock: 10, merchant_id: @merchant.id) + # @product1 = products(:product_one) + @order1 = orders(:first_order) + @order2 = orders(:second_order) + end describe "validations" do @@ -48,23 +52,29 @@ describe "relationships" do it 'belongs to a merchant' do expect(@product).must_respond_to :merchant - expect(@product.merchant).must_be_an_instance_of Merchant + expect(@product.merchant).must_be_instance_of Merchant end - it 'has many products' do - expect(@order.products.count).must_equal 2 - @order.products.each do |product| + it 'has many orders through order_items' do + # expect(@product.orders.size).must_equal 2 # how do we add a product to order? + products.each do |product| expect(product).must_be_instance_of Product end end it "has many order items" do - - expect(@product.order_items) - + expect(@product.order_items.count).must_equal 2 + @product.order_items.each do |orderitem| + expect(orderitem).must_be_instance_of OrderItem + end end end + + # describe 'spotlight' do + + # end + end From 223efd1b692581fd64d0e23362122cef87b75cad Mon Sep 17 00:00:00 2001 From: Hanh Solo Date: Tue, 24 Nov 2020 14:50:47 -0800 Subject: [PATCH 102/129] product model relations tests --- test/models/product_test.rb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/test/models/product_test.rb b/test/models/product_test.rb index 8cc3237a7e..61e7bd760a 100644 --- a/test/models/product_test.rb +++ b/test/models/product_test.rb @@ -4,12 +4,17 @@ before do @merchant = Merchant.create(username: "coolperson", email: "coolperson@cool.com", provider: "github", uid: "832943") + @product = Product.create(name: "test name", description: "test description", price: 4.55, photo_url: "gettyimages.com", stock: 10, merchant_id: @merchant.id) # @product1 = products(:product_one) + @order1 = orders(:first_order) @order2 = orders(:second_order) + @order_item = OrderItem.create!(product_id: @product.id, order_id: @order1.id, quantity: 2) + @order_item1 = OrderItem.create!(product_id: @product.id, order_id: @order2.id, quantity: 6) + end describe "validations" do @@ -57,9 +62,9 @@ end it 'has many orders through order_items' do - # expect(@product.orders.size).must_equal 2 # how do we add a product to order? - products.each do |product| - expect(product).must_be_instance_of Product + expect(@product.orders.size).must_equal 2 + @product.orders.each do |order| + expect(order).must_be_instance_of Order end end From b881304981729b73922d1c420e91406df8e7c85a Mon Sep 17 00:00:00 2001 From: Hanh Solo Date: Tue, 24 Nov 2020 15:14:49 -0800 Subject: [PATCH 103/129] order model tests completed --- app/models/product.rb | 2 +- test/models/order_test.rb | 27 +++++++++++++++++++++------ test/models/product_test.rb | 10 ++++++++-- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/app/models/product.rb b/app/models/product.rb index cc91463847..f2cccd7b44 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -1,6 +1,5 @@ class Product < ApplicationRecord belongs_to :merchant - # belongs_to :category has_many :order_items has_many :orders, through: :order_items @@ -11,4 +10,5 @@ def self.spotlight spotlight_for_all_products = Product.all.sample return spotlight_for_all_products end + end \ No newline at end of file diff --git a/test/models/order_test.rb b/test/models/order_test.rb index 1c2d6e3a74..5fb83ccdf7 100644 --- a/test/models/order_test.rb +++ b/test/models/order_test.rb @@ -8,6 +8,8 @@ @merchant = merchants(:grace) @product = Product.create!(name: 'test toy', price: 222, merchant_id: @merchant.id) @product1 =Product.create!(name: 'test toy1', price: 111, merchant_id: @merchant.id) + @order_item = OrderItem.create!(product_id: @product.id, order_id: @order.id, quantity: 2) + @order_item1 = OrderItem.create!(product_id: @product1.id, order_id: @order.id, quantity: 2) end describe 'validations' do @@ -31,13 +33,23 @@ it "fails validations when expiration month is greater than 12" do @order.expiration_month = 13 expect(@order.valid?).must_equal false + # expect(@order.errors.messages[:expiration_year].include?("Invalid card number")).must_equal true end - it "fails validations when expiration year is less than current year" do + it "fails validations when expiration month is less than current month" do @order.expiration_year = Time.now.year @order.expiration_month = Time.now.month - 1 - puts @order.expiration_year expect(@order.valid?).must_equal false + @order.expiration_year_cannot_be_in_the_past + expect(@order.errors.messages[:expiration_month].include?("can't be in the past")).must_equal true + end + + it "fails validations when expiration year is less than current year" do + @order.expiration_month = Time.now.month + @order.expiration_year = Time.now.year - 1 + expect(@order.valid?).must_equal false + @order.expiration_year_cannot_be_in_the_past + expect(@order.errors.messages[:expiration_year].include?("can't be in the past")).must_equal true end it "fails validations when zip code is not integer" do @@ -48,10 +60,6 @@ end describe "relationships" do - before do - @order_item = OrderItem.create!(product_id: @product.id, order_id: @order.id, quantity: 2) - @order_item1 = OrderItem.create!(product_id: @product1.id, order_id: @order.id, quantity: 2) - end it 'an order can have many products through order_items' do expect(@order.products.size).must_equal 2 @@ -76,5 +84,12 @@ end end + describe 'total' do + + it 'will return the total of an order' do + expect(@order.total).must_equal 666 + end + + end end diff --git a/test/models/product_test.rb b/test/models/product_test.rb index 61e7bd760a..21818f6237 100644 --- a/test/models/product_test.rb +++ b/test/models/product_test.rb @@ -80,8 +80,14 @@ end - # describe 'spotlight' do + describe 'spotlight' do + + it 'must be an instance of Product' do + + expect(Product.spotlight).must_be_instance_of Product + + end - # end + end end From 06bc5f5433bb5ea3b22954043cacb55451b20907 Mon Sep 17 00:00:00 2001 From: Hanh Solo Date: Tue, 24 Nov 2020 15:27:19 -0800 Subject: [PATCH 104/129] updated test helper for simplecov --- app/controllers/merchants_controller.rb | 1 - app/controllers/orders_controller.rb | 6 ++---- test/test_helper.rb | 9 ++++++++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/controllers/merchants_controller.rb b/app/controllers/merchants_controller.rb index 61cd769c30..143586f92b 100644 --- a/app/controllers/merchants_controller.rb +++ b/app/controllers/merchants_controller.rb @@ -1,5 +1,4 @@ class MerchantsController < ApplicationController - # before_action :require_login, only: [ :dashboard, :manage_orders, :manage_products, :logout] before_action :require_login, only: [:logout] def index diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index fca72d16db..fd8c4db3ad 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -1,6 +1,6 @@ class OrdersController < ApplicationController - before_action :find_order, except: [:index, :show] + def index # @orders = @current_merchant.orders @orders = session[:orders] @@ -14,7 +14,7 @@ def index def show @order = Order.find_by(id: params[:id].to_i) - if @current_merchant&.order_belongs_to_merchant?(@order) + if @current_merchant&.order_belongs_to_merchant?(@order) #check for nil before calling the method # Merchant can view this order page return elsif @orders.include?(@order.id) @@ -58,8 +58,6 @@ def process_order # Customer clicked purchase button, process order end end - - private def find_order diff --git a/test/test_helper.rb b/test/test_helper.rb index 61ff32fda8..99e23b1913 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -4,7 +4,14 @@ require "minitest/rails" require "minitest/reporters" # for Colorized output require 'simplecov' -SimpleCov.start +SimpleCov.start 'rails' do + add_filter 'test' + add_filter 'mailer' + add_filter 'job' + add_filter 'helper' + add_filter 'channel' + +end Minitest::Reporters.use!( Minitest::Reporters::SpecReporter.new, From ca1c2d8dbd168f05bef64346193410d3217fbcf8 Mon Sep 17 00:00:00 2001 From: Sandy Date: Tue, 24 Nov 2020 16:00:03 -0800 Subject: [PATCH 105/129] Added google font --- app/assets/stylesheets/application.scss | 13 +++++++++++-- app/views/homepages/index.html.erb | 4 ++-- app/views/layouts/application.html.erb | 15 +++++++++++++-- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 564c8f411d..ed79d8086a 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -75,13 +75,14 @@ body { padding-bottom: 100px; position: relative; margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - font-size: 1rem; + font-family: 'Baloo Thambi 2', cursive; + font-size: 1.2rem; font-weight: 400; line-height: 1.5; text-align: left; } + footer { background-color:#CC490C; padding-top: 20px; @@ -122,6 +123,14 @@ footer { margin-bottom: 100px; } +.churro-bio { + margin-left: 30px; + font-family: 'Baloo Thambi 2', cursive; + font-size: 1.2rem; + font-weight: 400; + line-height: 1.5; +} + [tabindex="-1"]:focus:not(:focus-visible) { outline: 0 !important; } diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb index bc87a97f06..4c92c1e8bf 100644 --- a/app/views/homepages/index.html.erb +++ b/app/views/homepages/index.html.erb @@ -19,12 +19,12 @@

    <%= @spotlight.description%>

    -
    -

    Pet of the day

    +

    Pet of the day: Churro

    <%= image_tag @churro, class: 'churro_image'%> + At pEtsy, we believe that every animal deserves a forever home. Starting this week, 5% of sales generated will be given to local animal shelters across the state of Washington. Thanks to you, we can place more lovely cats like Churro into loving families!
    diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 82ea48ed74..2b7eec97b2 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -2,16 +2,27 @@ Petsy + + + <%= csrf_meta_tags %> <%= csp_meta_tag %> - - <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> + + From 16933250ad3a0fe786af61b1d56cc4c6ea74138e Mon Sep 17 00:00:00 2001 From: Sandy Date: Tue, 24 Nov 2020 16:20:58 -0800 Subject: [PATCH 106/129] Added rounded corners to pics --- app/assets/stylesheets/application.scss | 10 ++++++++-- app/views/homepages/index.html.erb | 5 +++-- db/schema.rb | 5 +++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index ed79d8086a..2d5ee0ab00 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -103,6 +103,10 @@ footer { object-fit: cover; padding-bottom: 50px; margin-bottom: 100px; + border-radius: 25px; + background: #CC490C; + padding: 3px; + } .list_image_homepage{ @@ -110,8 +114,9 @@ footer { width: 360px; height: 300px; object-fit: cover; - padding-bottom: 50px; margin-bottom: 100px; + border-radius: 20px; + } .churro_image { @@ -119,8 +124,9 @@ footer { width: 350px; height: 450px; object-fit: cover; - padding-bottom: 50px; margin-bottom: 100px; + border-radius: 20px; + } .churro-bio { diff --git a/app/views/homepages/index.html.erb b/app/views/homepages/index.html.erb index 4c92c1e8bf..fb8d47004d 100644 --- a/app/views/homepages/index.html.erb +++ b/app/views/homepages/index.html.erb @@ -24,8 +24,9 @@

    Pet of the day: Churro

    <%= image_tag @churro, class: 'churro_image'%> - At pEtsy, we believe that every animal deserves a forever home. Starting this week, 5% of sales generated will be given to local animal shelters across the state of Washington. Thanks to you, we can place more lovely cats like Churro into loving families! - + At pEtsy, we believe that every animal deserves a forever home. + Starting this week, 5% of sales generated will be given to local animal shelters across the state of Washington. + Thanks to you, we can place more lovely cats like Churro into loving families!
    diff --git a/db/schema.rb b/db/schema.rb index e9268164ce..2c37f2aace 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -20,6 +20,11 @@ t.datetime "updated_at", precision: 6, null: false end + create_table "images", force: :cascade do |t| + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + end + create_table "merchants", force: :cascade do |t| t.string "username" t.string "email" From ed9e2586bac823e19ea67d3d870419a4880de99b Mon Sep 17 00:00:00 2001 From: Hanh Solo Date: Tue, 24 Nov 2020 16:25:37 -0800 Subject: [PATCH 107/129] updated homepages controller test --- test/controllers/homepages_controller_test.rb | 1 + test/models/order_item_test.rb | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/test/controllers/homepages_controller_test.rb b/test/controllers/homepages_controller_test.rb index 180285d736..39bdf1d531 100644 --- a/test/controllers/homepages_controller_test.rb +++ b/test/controllers/homepages_controller_test.rb @@ -1,6 +1,7 @@ require "test_helper" describe HomepagesController do + it "must get index" do get homepages_path must_respond_with :success diff --git a/test/models/order_item_test.rb b/test/models/order_item_test.rb index 39939f634d..6e7ae2c9f2 100644 --- a/test/models/order_item_test.rb +++ b/test/models/order_item_test.rb @@ -59,10 +59,17 @@ it 'changes quantity when updates' do - @order_item.quantity = @order_item.quantity + 7 - expect(@order_item.quantity).must_equal 11 + @order_item.add_quantity(7) + expect( @order_item.quantity).must_equal 11 end + + it 'changes quantity when updates' do + + @order_item.change_quantity(7) + expect( @order_item.quantity).must_equal 7 + + end end end From 5e8133dab4d20f13af81f6c531ab7401cf2c30a5 Mon Sep 17 00:00:00 2001 From: Ida Date: Tue, 24 Nov 2020 17:00:40 -0800 Subject: [PATCH 108/129] added retire tests --- app/controllers/products_controller.rb | 1 + test/controllers/products_controller_test.rb | 47 ++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 500c6175fd..0b95d286ac 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -62,6 +62,7 @@ def retire if @product.nil? flash[:error] = "Cannot find product to retire" redirect_to products_path + return end if @product.retired @product.retired = false diff --git a/test/controllers/products_controller_test.rb b/test/controllers/products_controller_test.rb index 98a8e95601..ed2e5f73ed 100644 --- a/test/controllers/products_controller_test.rb +++ b/test/controllers/products_controller_test.rb @@ -157,4 +157,51 @@ }.wont_change "product.name" end end + + describe 'retire' do + it 'can retire a product with a valid id' do + perform_login(merchants(:ada)) + + prod = products(:product_one) + + expect{ + delete product_path(prod.id) + }.wont_change "Product.count" + + prod.reload #will refresh all values + expect(prod.retired).must_equal true + expect(flash[:success]).must_equal "Retired product" + must_respond_with :redirect + must_redirect_to product_path(prod) + + end + + it 'cannot find a product with an invalid id' do + perform_login(merchants(:ada)) + expect{ + delete product_path(-1) + }.wont_change "Product.count" + + expect(flash[:error]).must_equal "Cannot find product to retire" + must_respond_with :redirect + must_redirect_to products_path + end + + it 'cannot retire a retired product' do + perform_login(merchants(:ada)) + + prod = products(:product_one) + delete product_path(prod.id) + + expect{ + delete product_path(prod.id) + }.wont_change "Product.count" + + prod.reload #will refresh all values + expect(prod.retired).must_equal false + expect(flash[:success]).must_equal "Put product back for sale!" + must_respond_with :redirect + must_redirect_to product_path(prod) + end + end end From 61bd34a35626c45b58534fdb9656e6fe297bf05f Mon Sep 17 00:00:00 2001 From: Hanh Solo Date: Tue, 24 Nov 2020 17:11:01 -0800 Subject: [PATCH 109/129] Updated test_helper simplecov --- config/spring.rb | 5 +++++ test/models/merchant_test.rb | 6 ++++++ test/test_helper.rb | 19 +++++++++++-------- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/config/spring.rb b/config/spring.rb index db5bf1307a..a90c4da589 100644 --- a/config/spring.rb +++ b/config/spring.rb @@ -4,3 +4,8 @@ "tmp/restart.txt", "tmp/caching-dev.txt" ) + +if ENV['RAILS_ENV'] == 'test' + require 'simplecov' + SimpleCov.start 'rails' +end \ No newline at end of file diff --git a/test/models/merchant_test.rb b/test/models/merchant_test.rb index 116675ca9f..9e88ccf408 100644 --- a/test/models/merchant_test.rb +++ b/test/models/merchant_test.rb @@ -51,4 +51,10 @@ end + describe 'total_revenue' do + # it 'must properly calculate the total revenue for the order' do + # expect(@merchant.total_revenue() + # end + end + end diff --git a/test/test_helper.rb b/test/test_helper.rb index 99e23b1913..c54b4c4f1f 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,17 +1,20 @@ ENV['RAILS_ENV'] ||= 'test' require_relative '../config/environment' require 'rails/test_help' +require 'simplecov' +SimpleCov.start 'rails' do + add_filter '/bin/' + add_filter '/db/' + add_filter '/jobs/' + add_filter '/mailers/' + add_filter '/helpers/' + add_filter '/channels/' + add_filter '/controllers/application_controller.rb' + add_filter '/test/' # for minitest +end require "minitest/rails" require "minitest/reporters" # for Colorized output -require 'simplecov' -SimpleCov.start 'rails' do - add_filter 'test' - add_filter 'mailer' - add_filter 'job' - add_filter 'helper' - add_filter 'channel' -end Minitest::Reporters.use!( Minitest::Reporters::SpecReporter.new, From 71c1ce7c02861fbe8576b5104058dc926649ccd2 Mon Sep 17 00:00:00 2001 From: Beatrice T Date: Tue, 24 Nov 2020 17:17:28 -0800 Subject: [PATCH 110/129] Wrote tests for merchant and order controller --- app/controllers/orders_controller.rb | 8 +- test/controllers/merchants_controller_test.rb | 43 ++++++- test/controllers/orders_controller_test.rb | 108 ++++++++++++++++-- test/fixtures/orders.yml | 11 ++ 4 files changed, 153 insertions(+), 17 deletions(-) diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index fd8c4db3ad..47e0282c5a 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -14,7 +14,11 @@ def index def show @order = Order.find_by(id: params[:id].to_i) - if @current_merchant&.order_belongs_to_merchant?(@order) #check for nil before calling the method + if @order.nil? + # Not found + flash[:error] = "The order doesn't exist!" + redirect_to root_path + elsif @current_merchant&.order_belongs_to_merchant?(@order) #check for nil before calling the method # Merchant can view this order page return elsif @orders.include?(@order.id) @@ -45,7 +49,7 @@ def process_order # Customer clicked purchase button, process order @order.update(order_params) @order.status = 'paid' - if @order.save + if @order.save! session[:orders] << @order.id # Add order ID to list of orders session[:shopper_id] = Order.create!(status: "shopping").id # Start a new cart/order for user flash[:success] = "Order placed successfully, please wait two decades for processing" diff --git a/test/controllers/merchants_controller_test.rb b/test/controllers/merchants_controller_test.rb index 2a0ee6322c..277a10fdb3 100644 --- a/test/controllers/merchants_controller_test.rb +++ b/test/controllers/merchants_controller_test.rb @@ -3,10 +3,24 @@ describe MerchantsController do -# it 'must get index' do -# get merchant_path -# must_respond_with :success -# end + describe 'index' do + it 'must get index' do + get merchants_path + must_respond_with :success + end + end + + describe 'show' do + it 'can show a merchants page' do + get merchant_path(merchants(:grace).id) + must_respond_with :success + end + + it 'won\'t show an invalid merchant' do + get merchant_path(-1) + must_respond_with :redirect + end + end describe "auth_callback" do it "logs in an existing merchant" do @@ -15,7 +29,7 @@ expect { perform_login(merchant) }.wont_change "Merchant.count" must_redirect_to root_path expect(session[:merchant_id]).must_equal merchant.id - + expect(flash[:success]).must_include "returning merchant" end it "creates an account for a new merchant and redirects to the root route" do @@ -23,6 +37,8 @@ # Should have created a new merchant expect { perform_login(merchant) }.must_change "Merchant.count", 1 + expect(flash[:success]).must_include "new merchant" + must_redirect_to root_path # The new merchant's ID should be set in the session @@ -36,17 +52,32 @@ expect { perform_login(merchant) }.wont_change "Merchant.count" expect(session[:merchant_id]).must_be_nil + expect(flash[:error]).must_include "Could not create" + end - it "redirects to the login route if given duplicate merchant data" do + it "fails if given duplicate merchant data" do merchant = Merchant.new(provider: "github", uid: 99999, username: "test_merchant", email: "grace@hooper.net") expect { perform_login(merchant) }.wont_change "Merchant.count" + expect(flash[:error]).must_include "Could not create" expect(session[:merchant_id]).must_be_nil end + end + + describe 'destroy' do + it 'can destroy a merchant' do + perform_login(merchants(:grace)) + delete logout_path + expect(session[:merchant_id]).must_be_nil + expect(flash[:success]).must_include "Successfully logged out!" + must_redirect_to root_path + + end + end end diff --git a/test/controllers/orders_controller_test.rb b/test/controllers/orders_controller_test.rb index ec2b57c507..122f9bc8b5 100644 --- a/test/controllers/orders_controller_test.rb +++ b/test/controllers/orders_controller_test.rb @@ -2,19 +2,109 @@ describe OrdersController do before do - perform_login + # @ada = perform_login(merchants(:ada)) + get root_path # To set cart + @shopper = session[:shopper_id] + @order = Order.find_by(id: @shopper) + @order.name = 'ada' + @order.email = 'fjfj@jddj.com' end - - it "must get index" do - get orders_path - must_respond_with :success + + + describe 'index' do + it "must get index" do + add_products_to_cart + checkout_products + get orders_path + must_respond_with :success + end + + it 'reads orders from session' do + get orders_path + add_products_to_cart + checkout_products + expect(session[:orders]).must_equal [@order.id] + must_respond_with :redirect + end end - it "assigns orders" do - order = orders(:first_order) + describe 'cart' do + it 'must get cart path' do + get cart_path + must_respond_with :success + end + + it 'gets check out page if cart has items' do + add_products_to_cart + get checkout_path + must_respond_with :success + end - # expect(assigns(:orders)).must_equal [order_one] - expect(order).must_be_instance_of Order + it 'redirects to cart if cart is empty' do + get checkout_path + must_respond_with :redirect + end end + describe 'show' do + it 'can view own paid order' do + add_products_to_cart + checkout_products + get order_path(@order) + must_respond_with :success + end + + it 'in progress order redirects to cart' do + add_products_to_cart + get order_path(@order) + must_respond_with :redirect + end + + it 'user can view a past order' do + old_order = @order.id + add_products_to_cart + checkout_products + add_products_to_cart + checkout_products + get order_path(old_order) + must_respond_with :success + end + + it 'user can\'t view someone else\'s order' do + add_products_to_cart + checkout_products + get order_path(orders(:paid_order)) + must_respond_with :redirect + expect(flash[:error]).must_include "tried to view" + end + + it 'user can\'t view an order that doesn\'t exist' do + get order_path(1337) + must_respond_with :redirect + expect(flash[:error]).must_include "exist" + end + end + + + private + + def add_products_to_cart + patch add_cart_path(id: products(:product_one).id, quantity: 1) + patch add_cart_path(id: products(:product_two).id, quantity: 1) + end + + def checkout_products + post process_order_path({ + order: { + name: @order.name, + email: @order.email, + address: @order.address, + card_number: @order.card_number, + expiration_month: @order.expiration_month, + expiration_year: @order.expiration_year, + security_code: @order.security_code, + zip_code: @order.zip_code + } + }) + end end diff --git a/test/fixtures/orders.yml b/test/fixtures/orders.yml index 02cf4b582f..52b19f20ae 100644 --- a/test/fixtures/orders.yml +++ b/test/fixtures/orders.yml @@ -17,3 +17,14 @@ second_order: expiration_year: 2025 security_code: 125 zip_code: 11222 + +paid_order: + name: 'lovelaffce' + email: 'grace@ffada.com' + address: 'ada address' + card_number: 123456789123456789 + expiration_month: 10 + expiration_year: 2025 + security_code: 125 + zip_code: 11222 + status: 'paid' From 8053698aa448b39e1155aceedc54c29baa98c6ae Mon Sep 17 00:00:00 2001 From: Ida Date: Tue, 24 Nov 2020 17:21:08 -0800 Subject: [PATCH 111/129] added find product --- test/controllers/products_controller_test.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/controllers/products_controller_test.rb b/test/controllers/products_controller_test.rb index ed2e5f73ed..d53e9111f3 100644 --- a/test/controllers/products_controller_test.rb +++ b/test/controllers/products_controller_test.rb @@ -204,4 +204,11 @@ must_redirect_to product_path(prod) end end + + describe 'find product' do + it 'can find a product' do + prod = products(:product_one) + expect(Product.find_by(id: prod.id)).must_equal prod + end + end end From 9d10aba039cecb284bf092d68d67cfb52275ba34 Mon Sep 17 00:00:00 2001 From: Ida Date: Tue, 24 Nov 2020 17:25:16 -0800 Subject: [PATCH 112/129] added find product test --- test/controllers/products_controller_test.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/controllers/products_controller_test.rb b/test/controllers/products_controller_test.rb index d53e9111f3..06e08f5965 100644 --- a/test/controllers/products_controller_test.rb +++ b/test/controllers/products_controller_test.rb @@ -206,9 +206,13 @@ end describe 'find product' do - it 'can find a product' do + it 'can find a product with a valid id' do prod = products(:product_one) expect(Product.find_by(id: prod.id)).must_equal prod end + it 'cannot find a product with a valid id' do + # prod = products(:product_one) + expect(Product.find_by(id: -1)).must_equal nil + end end end From efc6f5f616664846b529847dd35af58f6954f316 Mon Sep 17 00:00:00 2001 From: Sandy Date: Tue, 24 Nov 2020 17:31:50 -0800 Subject: [PATCH 113/129] Added test framework for order items --- .../order_items_controller_test.rb | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/test/controllers/order_items_controller_test.rb b/test/controllers/order_items_controller_test.rb index 3981b307d0..e96489ff1c 100644 --- a/test/controllers/order_items_controller_test.rb +++ b/test/controllers/order_items_controller_test.rb @@ -5,5 +5,44 @@ # get order_items_index_url # must_respond_with :success # end + # + it "can save an order" do + + end + + it "can add to an existing order" do + + end + + it "can retire a product and redirect to products path" do + + + + must_respond_with :redirect + expect(flash[:error]).must_equal "That product is retired!" + end + + it "can update a product quantity" do + + + + expect(flash[:success]).must_equal "Quantity updated!" + end + + it "returns error for invalid product quantity " do + # Arrange + + # Act + # Assert + expect(flash[:error]).must_equal "Invalid quantity specified" + end + + it "returns error for item/product not found " do + # Arrange + + # Act + # Assert + expect(flash[:error]).must_equal "Item to edit quantity not found" + end end From 8128bc9f8508fe1a932c4cb6d1ed086c5528c315 Mon Sep 17 00:00:00 2001 From: Sandy Date: Tue, 24 Nov 2020 17:33:57 -0800 Subject: [PATCH 114/129] Added test framework for order items --- coverage/.last_run.json | 5 + coverage/.resultset.json | 502 ++ coverage/.resultset.json.lock | 0 .../DataTables-1.10.20/images/sort_asc.png | Bin 0 -> 160 bytes .../images/sort_asc_disabled.png | Bin 0 -> 148 bytes .../DataTables-1.10.20/images/sort_both.png | Bin 0 -> 201 bytes .../DataTables-1.10.20/images/sort_desc.png | Bin 0 -> 158 bytes .../images/sort_desc_disabled.png | Bin 0 -> 146 bytes coverage/assets/0.12.3/application.css | 1 + coverage/assets/0.12.3/application.js | 7 + coverage/assets/0.12.3/colorbox/border.png | Bin 0 -> 163 bytes coverage/assets/0.12.3/colorbox/controls.png | Bin 0 -> 2033 bytes coverage/assets/0.12.3/colorbox/loading.gif | Bin 0 -> 9427 bytes .../0.12.3/colorbox/loading_background.png | Bin 0 -> 166 bytes coverage/assets/0.12.3/favicon_green.png | Bin 0 -> 1009 bytes coverage/assets/0.12.3/favicon_red.png | Bin 0 -> 1009 bytes coverage/assets/0.12.3/favicon_yellow.png | Bin 0 -> 1009 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../0.12.3/images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../0.12.3/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../0.12.3/images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../0.12.3/images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../0.12.3/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes coverage/assets/0.12.3/loading.gif | Bin 0 -> 7247 bytes coverage/assets/0.12.3/magnify.png | Bin 0 -> 1301 bytes coverage/index.html | 5658 +++++++++++++++++ 33 files changed, 6173 insertions(+) create mode 100644 coverage/.last_run.json create mode 100644 coverage/.resultset.json create mode 100644 coverage/.resultset.json.lock create mode 100644 coverage/assets/0.12.3/DataTables-1.10.20/images/sort_asc.png create mode 100644 coverage/assets/0.12.3/DataTables-1.10.20/images/sort_asc_disabled.png create mode 100644 coverage/assets/0.12.3/DataTables-1.10.20/images/sort_both.png create mode 100644 coverage/assets/0.12.3/DataTables-1.10.20/images/sort_desc.png create mode 100644 coverage/assets/0.12.3/DataTables-1.10.20/images/sort_desc_disabled.png create mode 100644 coverage/assets/0.12.3/application.css create mode 100644 coverage/assets/0.12.3/application.js create mode 100644 coverage/assets/0.12.3/colorbox/border.png create mode 100644 coverage/assets/0.12.3/colorbox/controls.png create mode 100644 coverage/assets/0.12.3/colorbox/loading.gif create mode 100644 coverage/assets/0.12.3/colorbox/loading_background.png create mode 100644 coverage/assets/0.12.3/favicon_green.png create mode 100644 coverage/assets/0.12.3/favicon_red.png create mode 100644 coverage/assets/0.12.3/favicon_yellow.png create mode 100644 coverage/assets/0.12.3/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 coverage/assets/0.12.3/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 coverage/assets/0.12.3/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 coverage/assets/0.12.3/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 coverage/assets/0.12.3/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 coverage/assets/0.12.3/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 coverage/assets/0.12.3/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 coverage/assets/0.12.3/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 coverage/assets/0.12.3/images/ui-icons_222222_256x240.png create mode 100644 coverage/assets/0.12.3/images/ui-icons_2e83ff_256x240.png create mode 100644 coverage/assets/0.12.3/images/ui-icons_454545_256x240.png create mode 100644 coverage/assets/0.12.3/images/ui-icons_888888_256x240.png create mode 100644 coverage/assets/0.12.3/images/ui-icons_cd0a0a_256x240.png create mode 100644 coverage/assets/0.12.3/loading.gif create mode 100644 coverage/assets/0.12.3/magnify.png create mode 100644 coverage/index.html diff --git a/coverage/.last_run.json b/coverage/.last_run.json new file mode 100644 index 0000000000..a69eb39a95 --- /dev/null +++ b/coverage/.last_run.json @@ -0,0 +1,5 @@ +{ + "result": { + "covered_percent": 0.0 + } +} diff --git a/coverage/.resultset.json b/coverage/.resultset.json new file mode 100644 index 0000000000..1e5f5c2e07 --- /dev/null +++ b/coverage/.resultset.json @@ -0,0 +1,502 @@ +{ + "Minitest": { + "coverage": { + "/Users/spv/Desktop/Ada_14/betsy/app/mailers/application_mailer.rb": { + "lines": [ + 0, + 0, + 0, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/models/category.rb": { + "lines": [ + 0, + 0, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/models/order_item.rb": { + "lines": [ + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/models/product.rb": { + "lines": [ + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + 0, + 0, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/models/order.rb": { + "lines": [ + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + 0, + null, + null, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/models/application_record.rb": { + "lines": [ + 0, + 0, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/models/merchant.rb": { + "lines": [ + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + null, + 0, + 0, + null, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/jobs/application_job.rb": { + "lines": [ + 0, + null, + null, + null, + null, + null, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/controllers/application_controller.rb": { + "lines": [ + 0, + null, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/controllers/homepages_controller.rb": { + "lines": [ + 0, + 0, + 0, + 0, + 0, + null + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/controllers/merchants_controller.rb": { + "lines": [ + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 0, + null, + 0, + 0, + 0, + null, + null, + null, + null, + null, + 0, + 0, + 0, + 0, + 0, + null, + null, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + null, + null, + 0, + null + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/controllers/orders_controller.rb": { + "lines": [ + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + null, + 0, + 0, + 0, + 0, + null, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/controllers/products_controller.rb": { + "lines": [ + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 0, + null, + 0, + 0, + 0, + 0, + 0, + 0, + null, + 0, + null, + 0, + 0, + 0, + null, + null, + 0, + 0, + 0, + null, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/controllers/order_items_controller.rb": { + "lines": [ + 0, + null, + 0, + 0, + null, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + null, + 0, + 0, + null, + 0, + null, + 0, + 0, + null, + 0, + 0, + 0, + 0, + 0, + null, + 0, + 0, + null, + 0, + null, + 0, + null, + 0, + 0, + 0, + 0, + null, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + null, + null, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/helpers/homepages_helper.rb": { + "lines": [ + 0, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/helpers/orders_helper.rb": { + "lines": [ + 0, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/helpers/merchants_helper.rb": { + "lines": [ + 0, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/helpers/order_items_helper.rb": { + "lines": [ + 0, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/helpers/products_helper.rb": { + "lines": [ + 0, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/helpers/application_helper.rb": { + "lines": [ + 0, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/channels/application_cable/connection.rb": { + "lines": [ + 0, + 0, + 0, + 0 + ], + "branches": { + } + }, + "/Users/spv/Desktop/Ada_14/betsy/app/channels/application_cable/channel.rb": { + "lines": [ + 0, + 0, + 0, + 0 + ], + "branches": { + } + } + }, + "timestamp": 1606267964 + } +} diff --git a/coverage/.resultset.json.lock b/coverage/.resultset.json.lock new file mode 100644 index 0000000000..e69de29bb2 diff --git a/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_asc.png b/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_asc.png new file mode 100644 index 0000000000000000000000000000000000000000..e1ba61a8055fcb18273f2468d335572204667b1f GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3I*bWaz@5R22v2@;zYta_*?F5u6Q zWR@in#&u+WgT?Hi<}D3B3}GOXuX|8Oj3tosHiJ3*4TN zC7>_x-r1O=t(?KoTC+`+>7&2GzdqLHBg&F)2Q?&EGZ+}|Rpsc~9`m>jw35No)z4*} HQ$iB}HK{Sd literal 0 HcmV?d00001 diff --git a/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_asc_disabled.png b/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_asc_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..fb11dfe24a6c564cb7ddf8bc96703ebb121df1e7 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S0wixl{&NRX(Vi}jAsXkC6BcOhI9!^3NY?Do zDX;f`c1`y6n0RgO@$!H7chZT&|Jn0dmaqO^XNm-CGtk!Ur<_=Jws3;%W$<+Mb6Mw<&;$T1GdZXL literal 0 HcmV?d00001 diff --git a/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_both.png b/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_both.png new file mode 100644 index 0000000000000000000000000000000000000000..af5bc7c5a10b9d6d57cb641aeec752428a07f0ca GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S0wixl{&NRX6FglULp08Bycxyy87-Q;~nRxO8@-UU*I^KVWyN+&SiMHu5xDOu|HNvwzODfTdXjhVyNu1 z#7^XbGKZ7LW3XeONb$RKLeE*WhqbYpIXPIqK@r4)v+qN8um%99%MPpS9d#7Ed7SL@Bp00i_>zopr0H-Zb Aj{pDw literal 0 HcmV?d00001 diff --git a/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_desc.png b/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_desc.png new file mode 100644 index 0000000000000000000000000000000000000000..0e156deb5f61d18f9e2ec5da4f6a8c94a5b4fb41 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7S1|*9D%+3I*R8JSj5R22v2@yo z(czD9$NuDl3Ljm9c#_#4$vXUz=f1~&WY3aa=h!;z7fOEN>ySP9QA=6C-^Dmb&tuM= z4Z&=WZU;2WF>e%GI&mWJk^K!jrbro{W;-I>FeCfLGJl3}+Z^2)3Kw?+EoAU?^>bP0 Hl+XkKC^j|Q{b@g3TV7E(Grjn^aLC2o)_ptHrtUEoT$S@q)~)7U@V;W{6)!%@ u>N?4t-1qslpJw9!O?PJ&w0Cby.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear,left top,left bottom,color-stop(0,white),color-stop(100%,#dcdcdc));background:-webkit-linear-gradient(top,white 0,#dcdcdc 100%);background:-moz-linear-gradient(top,white 0,#dcdcdc 100%);background:-ms-linear-gradient(top,white 0,#dcdcdc 100%);background:-o-linear-gradient(top,white 0,#dcdcdc 100%);background:linear-gradient(to bottom,white 0,#dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#585858),color-stop(100%,#111));background:-webkit-linear-gradient(top,#585858 0,#111 100%);background:-moz-linear-gradient(top,#585858 0,#111 100%);background:-ms-linear-gradient(top,#585858 0,#111 100%);background:-o-linear-gradient(top,#585858 0,#111 100%);background:linear-gradient(to bottom,#585858 0,#111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:0;background-color:#2b2b2b;background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#2b2b2b),color-stop(100%,#0c0c0c));background:-webkit-linear-gradient(top,#2b2b2b 0,#0c0c0c 100%);background:-moz-linear-gradient(top,#2b2b2b 0,#0c0c0c 100%);background:-ms-linear-gradient(top,#2b2b2b 0,#0c0c0c 100%);background:-o-linear-gradient(top,#2b2b2b 0,#0c0c0c 100%);background:linear-gradient(to bottom,#2b2b2b 0,#0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,0.9)),color-stop(75%,rgba(255,255,255,0.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,0.9) 25%,rgba(255,255,255,0.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,0.9) 25%,rgba(255,255,255,0.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,0.9) 25%,rgba(255,255,255,0.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,0.9) 25%,rgba(255,255,255,0.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,0.9) 25%,rgba(255,255,255,0.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:0}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width:767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:.5em}}@media screen and (max-width:640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:.5em}}pre .comment,pre .template_comment,pre .diff .header,pre .javadoc{color:#998;font-style:italic}pre .keyword,pre .css .rule .keyword,pre .winutils,pre .javascript .title,pre .lisp .title{color:#000;font-weight:bold}pre .number,pre .hexcolor{color:#458}pre .string,pre .tag .value,pre .phpdoc,pre .tex .formula{color:#d14}pre .subst{color:#712}pre .constant,pre .title,pre .id{color:#900;font-weight:bold}pre .javascript .title,pre .lisp .title,pre .subst{font-weight:normal}pre .class .title,pre .haskell .label,pre .tex .command{color:#458;font-weight:bold}pre .tag,pre .tag .title,pre .rules .property,pre .django .tag .keyword{color:navy;font-weight:normal}pre .attribute,pre .variable,pre .instancevar,pre .lisp .body{color:teal}pre .regexp{color:#009926}pre .class{color:#458;font-weight:bold}pre .symbol,pre .ruby .symbol .string,pre .ruby .symbol .keyword,pre .ruby .symbol .keymethods,pre .lisp .keyword,pre .tex .special,pre .input_number{color:#990073}pre .builtin,pre .built_in,pre .lisp .title{color:#0086b3}pre .preprocessor,pre .pi,pre .doctype,pre .shebang,pre .cdata{color:#999;font-weight:bold}pre .deletion{background:#fdd}pre .addition{background:#dfd}pre .diff .change{background:#0086b3}pre .chunk{color:#aaa}pre .tex .formula{opacity:.5}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute;left:-99999999px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui-helper-clearfix{display:inline-block}/*\*/* html .ui-helper-clearfix{height:1%}.ui-helper-clearfix{display:block}/**/.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default !important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-widget :active{outline:0}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-off{background-position:-96px -144px}.ui-icon-radio-on{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px}.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-corner-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-bottom{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-corner-right{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-corner-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-all{-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30);-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}#colorbox,#cboxOverlay,#cboxWrapper{position:absolute;top:0;left:0;z-index:9999;overflow:hidden}#cboxOverlay{position:fixed;width:100%;height:100%}#cboxMiddleLeft,#cboxBottomLeft{clear:left}#cboxContent{position:relative}#cboxLoadedContent{overflow:auto}#cboxTitle{margin:0}#cboxLoadingOverlay,#cboxLoadingGraphic{position:absolute;top:0;left:0;width:100%;height:100%}#cboxPrevious,#cboxNext,#cboxClose,#cboxSlideshow{cursor:pointer}.cboxPhoto{float:left;margin:auto;border:0;display:block;max-width:none}.cboxIframe{width:100%;height:100%;display:block;border:0}#colorbox,#cboxContent,#cboxLoadedContent{box-sizing:content-box}#cboxOverlay{background:#000}#cboxTopLeft{width:14px;height:14px;background:url(colorbox/controls.png) no-repeat 0 0}#cboxTopCenter{height:14px;background:url(colorbox/border.png) repeat-x top left}#cboxTopRight{width:14px;height:14px;background:url(colorbox/controls.png) no-repeat -36px 0}#cboxBottomLeft{width:14px;height:43px;background:url(colorbox/controls.png) no-repeat 0 -32px}#cboxBottomCenter{height:43px;background:url(colorbox/border.png) repeat-x bottom left}#cboxBottomRight{width:14px;height:43px;background:url(colorbox/controls.png) no-repeat -36px -32px}#cboxMiddleLeft{width:14px;background:url(colorbox/controls.png) repeat-y -175px 0}#cboxMiddleRight{width:14px;background:url(colorbox/controls.png) repeat-y -211px 0}#cboxContent{background:#fff;overflow:visible}.cboxIframe{background:#fff}#cboxError{padding:50px;border:1px solid #ccc}#cboxLoadedContent{margin-bottom:5px}#cboxLoadingOverlay{background:url(colorbox/loading_background.png) no-repeat center center}#cboxLoadingGraphic{background:url(colorbox/loading.gif) no-repeat center center}#cboxTitle{position:absolute;bottom:-25px;left:0;text-align:center;width:100%;font-weight:bold;color:#7c7c7c}#cboxCurrent{position:absolute;bottom:-25px;left:58px;font-weight:bold;color:#7c7c7c}#cboxPrevious,#cboxNext,#cboxClose,#cboxSlideshow{position:absolute;bottom:-29px;background:url(colorbox/controls.png) no-repeat 0 0;width:23px;height:23px;text-indent:-9999px}#cboxPrevious{left:0;background-position:-51px -25px}#cboxPrevious:hover{background-position:-51px 0}#cboxNext{left:27px;background-position:-75px -25px}#cboxNext:hover{background-position:-75px 0}#cboxClose{right:0;background-position:-100px -25px}#cboxClose:hover{background-position:-100px 0}.cboxSlideshow_on #cboxSlideshow{background-position:-125px 0;right:27px}.cboxSlideshow_on #cboxSlideshow:hover{background-position:-150px 0}.cboxSlideshow_off #cboxSlideshow{background-position:-150px -25px;right:27px}.cboxSlideshow_off #cboxSlideshow:hover{background-position:-125px 0}#loading{position:fixed;left:40%;top:50%}a{color:#333;text-decoration:none}a:hover{color:#000;text-decoration:underline}body{font-family:"Lucida Grande",Helvetica,"Helvetica Neue",Arial,sans-serif;padding:12px;background-color:#333}h1,h2,h3,h4{color:#1c2324;margin:0;padding:0;margin-bottom:12px}table{width:100%}#content{clear:left;background-color:white;border:2px solid #ddd;border-top:8px solid #ddd;padding:18px;-webkit-border-bottom-left-radius:5px;-webkit-border-bottom-right-radius:5px;-webkit-border-top-right-radius:5px;-moz-border-radius-bottomleft:5px;-moz-border-radius-bottomright:5px;-moz-border-radius-topright:5px;border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top-right-radius:5px}.dataTables_filter,.dataTables_info{padding:2px 6px}abbr.timeago{text-decoration:none;border:0;font-weight:bold}.timestamp{float:right;color:#ddd}.group_tabs{list-style:none;float:left;margin:0;padding:0}.group_tabs li{display:inline;float:left}.group_tabs li a{font-family:Helvetica,Arial,sans-serif;display:block;float:left;text-decoration:none;padding:4px 8px;background-color:#aaa;background:-webkit-gradient(linear,0 0,0 bottom,from(#ddd),to(#aaa));background:-moz-linear-gradient(#ddd,#aaa);background:linear-gradient(#ddd,#aaa);text-shadow:#e5e5e5 1px 1px 0;border-bottom:0;color:#333;font-weight:bold;margin-right:8px;border-top:1px solid #efefef;-webkit-border-top-left-radius:2px;-webkit-border-top-right-radius:2px;-moz-border-radius-topleft:2px;-moz-border-radius-topright:2px;border-top-left-radius:2px;border-top-right-radius:2px}.group_tabs li a:hover{background-color:#ccc;background:-webkit-gradient(linear,0 0,0 bottom,from(#eee),to(#aaa));background:-moz-linear-gradient(#eee,#aaa);background:linear-gradient(#eee,#aaa)}.group_tabs li a:active{padding-top:5px;padding-bottom:3px}.group_tabs li.active a{color:black;text-shadow:#fff 1px 1px 0;background-color:#ddd;background:-webkit-gradient(linear,0 0,0 bottom,from(white),to(#ddd));background:-moz-linear-gradient(white,#ddd);background:linear-gradient(white,#ddd)}.file_list{margin-bottom:18px}.file_list--responsive{overflow-x:auto;overflow-y:hidden}a.src_link{background:url("./magnify.png") no-repeat left 50%;padding-left:18px}tr,td{margin:0;padding:0}th{white-space:nowrap}th.ui-state-default{cursor:pointer}th span.ui-icon{float:left}td{padding:4px 8px}td.strong{font-weight:bold}.cell--number{text-align:right}.source_table h3,.source_table h4{padding:0;margin:0;margin-bottom:4px}.source_table .header{padding:10px}.source_table pre{margin:0;padding:0;white-space:normal;color:#000;font-family:"Monaco","Inconsolata","Consolas",monospace}.source_table code{color:#000;font-family:"Monaco","Inconsolata","Consolas",monospace}.source_table pre{background-color:#333}.source_table pre ol{margin:0;padding:0;margin-left:45px;font-size:12px;color:white}.source_table pre li{margin:0;padding:2px 6px;border-left:5px solid white}.source_table pre li code{white-space:pre;white-space:pre-wrap}.source_table pre .hits{float:right;margin-left:10px;padding:2px 4px;background-color:#444;background:-webkit-gradient(linear,0 0,0 bottom,from(#222),to(#666));background:-moz-linear-gradient(#222,#666);background:linear-gradient(#222,#666);color:white;font-family:Helvetica,"Helvetica Neue",Arial,sans-serif;font-size:10px;font-weight:bold;text-align:center;border-radius:6px}#footer{color:#ddd;font-size:12px;font-weight:bold;margin-top:12px;text-align:right}#footer a{color:#eee;text-decoration:underline}#footer a:hover{color:#fff;text-decoration:none}.green{color:#090}.red{color:#900}.yellow{color:#da0}.blue{color:blue}thead th{background:white}.source_table .covered{border-color:#090}.source_table .missed{border-color:#900}.source_table .never{border-color:black}.source_table .skipped{border-color:#fc0}.source_table .missed-branch{border-color:#bf0000}.source_table .covered:nth-child(odd){background-color:#cdf2cd}.source_table .covered:nth-child(even){background-color:#dbf2db}.source_table .missed:nth-child(odd){background-color:#f7c0c0}.source_table .missed:nth-child(even){background-color:#f7cfcf}.source_table .never:nth-child(odd){background-color:#efefef}.source_table .never:nth-child(even){background-color:#f4f4f4}.source_table .skipped:nth-child(odd){background-color:#fbf0c0}.source_table .skipped:nth-child(even){background-color:#fbffcf}.source_table .missed-branch:nth-child(odd){background-color:#cc8e8e}.source_table .missed-branch:nth-child(even){background-color:#cc6e6e} \ No newline at end of file diff --git a/coverage/assets/0.12.3/application.js b/coverage/assets/0.12.3/application.js new file mode 100644 index 0000000000..e1c2ab2346 --- /dev/null +++ b/coverage/assets/0.12.3/application.js @@ -0,0 +1,7 @@ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(T,e){"use strict";function g(e,t,n){var r,a,i=(n=n||le).createElement("script");if(i.text=e,t)for(r in Se)(a=t[r]||t.getAttribute&&t.getAttribute(r))&&i.setAttribute(r,a);n.head.appendChild(i).parentNode.removeChild(i)}function m(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?pe[ge.call(e)]||"object":typeof e}function s(e){var t=!!e&&"length"in e&&e.length,n=m(e);return!we(e)&&!xe(e)&&("array"===n||0===t||"number"==typeof t&&0D.cacheLength&&delete n[r.shift()],n[e+" "]=t}var r=[];return n}function l(e){return e[q]=!0,e}function a(e){var t=E.createElement("fieldset");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function t(e,t){for(var n=e.split("|"),r=n.length;r--;)D.attrHandle[n[r]]=t}function u(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function r(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function i(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function o(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&_e(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function s(o){return l(function(i){return i=+i,l(function(e,t){for(var n,r=o([],e.length,i),a=r.length;a--;)e[n=r[a]]&&(e[n]=!(t[n]=e[n]))})})}function p(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function c(){}function g(e){for(var t=0,n=e.length,r="";t+~]|"+re+")"+re+"*"),fe=new RegExp(re+"|>"),de=new RegExp(oe),he=new RegExp("^"+ae+"$"),pe={ID:new RegExp("^#("+ae+")"),CLASS:new RegExp("^\\.("+ae+")"),TAG:new RegExp("^("+ae+"|[*])"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+re+"*(even|odd|(([+-]|)(\\d*)n|)"+re+"*(?:([+-]|)"+re+"*(\\d+)|))"+re+"*\\)|)","i"),bool:new RegExp("^(?:"+ne+")$","i"),needsContext:new RegExp("^"+re+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+re+"*((?:-\\d)?\\d*)"+re+"*\\)|)(?=[^-]|$)","i")},ge=/HTML$/i,me=/^(?:input|select|textarea|button)$/i,ve=/^h\d$/i,ye=/^[^{]+\{\s*\[native \w/,be=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,we=/[+~]/,xe=new RegExp("\\\\([\\da-f]{1,6}"+re+"?|("+re+")|.)","ig"),Se=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},De=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,Te=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},Ce=function(){L()},_e=f(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{Q.apply(Y=ee.call(W.childNodes),W.childNodes),Y[W.childNodes.length].nodeType}catch(Ae){Q={apply:Y.length?function(e,t){K.apply(e,ee.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}for(v in S=w.support={},C=w.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!ge.test(t||n&&n.nodeName||"HTML")},L=w.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:W;return r!==E&&9===r.nodeType&&r.documentElement&&(R=(E=r).documentElement,F=!C(E),W!==E&&(n=E.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Ce,!1):n.attachEvent&&n.attachEvent("onunload",Ce)),S.attributes=a(function(e){return e.className="i",!e.getAttribute("className")}),S.getElementsByTagName=a(function(e){return e.appendChild(E.createComment("")),!e.getElementsByTagName("*").length}),S.getElementsByClassName=ye.test(E.getElementsByClassName),S.getById=a(function(e){return R.appendChild(e).id=q,!E.getElementsByName||!E.getElementsByName(q).length}),S.getById?(D.filter.ID=function(e){var t=e.replace(xe,Se);return function(e){return e.getAttribute("id")===t}},D.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&F){var n=t.getElementById(e);return n?[n]:[]}}):(D.filter.ID=function(e){var n=e.replace(xe,Se);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},D.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&F){var n,r,a,i=t.getElementById(e);if(i){if((n=i.getAttributeNode("id"))&&n.value===e)return[i];for(a=t.getElementsByName(e),r=0;i=a[r++];)if((n=i.getAttributeNode("id"))&&n.value===e)return[i]}return[]}}),D.find.TAG=S.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):S.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],a=0,i=t.getElementsByTagName(e);if("*"!==e)return i;for(;n=i[a++];)1===n.nodeType&&r.push(n);return r},D.find.CLASS=S.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&F)return t.getElementsByClassName(e)},H=[],P=[],(S.qsa=ye.test(E.querySelectorAll))&&(a(function(e){R.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&P.push("[*^$]="+re+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||P.push("\\["+re+"*(?:value|"+ne+")"),e.querySelectorAll("[id~="+q+"-]").length||P.push("~="),e.querySelectorAll(":checked").length||P.push(":checked"),e.querySelectorAll("a#"+q+"+*").length||P.push(".#.+[+~]")}),a(function(e){e.innerHTML="";var t=E.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&P.push("name"+re+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&P.push(":enabled",":disabled"),R.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&P.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),P.push(",.*:")})),(S.matchesSelector=ye.test(M=R.matches||R.webkitMatchesSelector||R.mozMatchesSelector||R.oMatchesSelector||R.msMatchesSelector))&&a(function(e){S.disconnectedMatch=M.call(e,"*"),M.call(e,"[s!='']:x"),H.push("!=",oe)}),P=P.length&&new RegExp(P.join("|")),H=H.length&&new RegExp(H.join("|")),t=ye.test(R.compareDocumentPosition),O=t||ye.test(R.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},G=t?function(e,t){if(e===t)return j=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!S.sortDetached&&t.compareDocumentPosition(e)===n?e===E||e.ownerDocument===W&&O(W,e)?-1:t===E||t.ownerDocument===W&&O(W,t)?1:I?te(I,e)-te(I,t):0:4&n?-1:1)}:function(e,t){if(e===t)return j=!0,0;var n,r=0,a=e.parentNode,i=t.parentNode,o=[e],s=[t];if(!a||!i)return e===E?-1:t===E?1:a?-1:i?1:I?te(I,e)-te(I,t):0;if(a===i)return u(e,t);for(n=e;n=n.parentNode;)o.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;o[r]===s[r];)r++;return r?u(o[r],s[r]):o[r]===W?-1:s[r]===W?1:0}),E},w.matches=function(e,t){return w(e,null,null,t)},w.matchesSelector=function(e,t){if((e.ownerDocument||e)!==E&&L(e),S.matchesSelector&&F&&!V[t+" "]&&(!H||!H.test(t))&&(!P||!P.test(t)))try{var n=M.call(e,t);if(n||S.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(Ae){V(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(xe,Se),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,Se),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||w.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&w.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return pe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&de.test(n)&&(t=_(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(xe,Se).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=U[e+" "];return t||(t=new RegExp("(^|"+re+")"+e+"("+re+"|$)"))&&U(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,a){return function(e){var t=w.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===a:"!="===r?t!==a:"^="===r?a&&0===t.indexOf(a):"*="===r?a&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;Te.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?Te.find.matchesSelector(r,e)?[r]:[]:Te.find.matches(e,Te.grep(t,function(e){return 1===e.nodeType}))},Te.fn.extend({find:function(e){var t,n,r=this.length,a=this;if("string"!=typeof e)return this.pushStack(Te(e).filter(function(){for(t=0;t)[^>]*|#([\w-]+))$/;(Te.fn.init=function(e,t,n){var r,a;if(!e)return this;if(n=n||je,"string"!=typeof e)return e.nodeType?(this[0]=e,this.length=1,this):we(e)?n.ready!==undefined?n.ready(e):e(Te):Te.makeArray(e,this);if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:Le.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof Te?t[0]:t,Te.merge(this,Te.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:le,!0)),Ie.test(r[1])&&Te.isPlainObject(t))for(r in t)we(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(a=le.getElementById(r[2]))&&(this[0]=a,this.length=1),this}).prototype=Te.fn,je=Te(le);var Ee=/^(?:parents|prev(?:Until|All))/,Re={children:!0,contents:!0,next:!0,prev:!0};Te.fn.extend({has:function(e){var t=Te(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,rt=/^$|^module$|\/(?:java|ecma)script/i,at={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};at.optgroup=at.option,at.tbody=at.tfoot=at.colgroup=at.caption=at.thead,at.th=at.td;var it,ot,st=/<|&#?\w+;/;it=le.createDocumentFragment().appendChild(le.createElement("div")),(ot=le.createElement("input")).setAttribute("type","radio"),ot.setAttribute("checked","checked"),ot.setAttribute("name","t"),it.appendChild(ot),be.checkClone=it.cloneNode(!0).cloneNode(!0).lastChild.checked,it.innerHTML="",be.noCloneChecked=!!it.cloneNode(!0).lastChild.defaultValue;var lt=/^key/,ut=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ct=/^([^.]*)(?:\.(.+)|)/;Te.event={global:{},add:function(t,e,n,r,a){var i,o,s,l,u,c,f,d,h,p,g,m=Be.get(t);if(m)for(n.handler&&(n=(i=n).handler,a=i.selector),a&&Te.find.matchesSelector(Je,a),n.guid||(n.guid=Te.guid++),(l=m.events)||(l=m.events={}),(o=m.handle)||(o=m.handle=function(e){return void 0!==Te&&Te.event.triggered!==e.type?Te.event.dispatch.apply(t,arguments):undefined}),u=(e=(e||"").match(Fe)||[""]).length;u--;)h=g=(s=ct.exec(e[u])||[])[1],p=(s[2]||"").split(".").sort(),h&&(f=Te.event.special[h]||{},h=(a?f.delegateType:f.bindType)||h,f=Te.event.special[h]||{},c=Te.extend({type:h,origType:g,data:r,handler:n,guid:n.guid,selector:a,needsContext:a&&Te.expr.match.needsContext.test(a),namespace:p.join(".")},i),(d=l[h])||((d=l[h]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,p,o)||t.addEventListener&&t.addEventListener(h,o)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),a?d.splice(d.delegateCount++,0,c):d.push(c),Te.event.global[h]=!0)},remove:function(e,t,n,r,a){var i,o,s,l,u,c,f,d,h,p,g,m=Be.hasData(e)&&Be.get(e);if(m&&(l=m.events)){for(u=(t=(t||"").match(Fe)||[""]).length;u--;)if(h=g=(s=ct.exec(t[u])||[])[1],p=(s[2]||"").split(".").sort(),h){for(f=Te.event.special[h]||{},d=l[h=(r?f.delegateType:f.bindType)||h]||[],s=s[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),o=i=d.length;i--;)c=d[i],!a&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(i,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));o&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,p,m.handle)||Te.removeEvent(e,h,m.handle),delete l[h])}else for(h in l)Te.event.remove(e,h+t[u],n,r,!0);Te.isEmptyObject(l)&&Be.remove(e,"handle events")}},dispatch:function(e){var t,n,r,a,i,o,s=Te.event.fix(e),l=new Array(arguments.length),u=(Be.get(this,"events")||{})[s.type]||[],c=Te.event.special[s.type]||{};for(l[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,dt=/\s*$/g;Te.extend({htmlPrefilter:function(e){return e.replace(ft,"<$1>")},clone:function(e,t,n){var r,a,i,o,s=e.cloneNode(!0),l=Ye(e);if(!(be.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||Te.isXMLDoc(e)))for(o=w(s),r=0,a=(i=w(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",a=function(e){r.remove(),a=null,e&&t("error"===e.type?404:200,e.type)}),le.head.appendChild(r[0])},abort:function(){a&&a()}}});var an,on=[],sn=/(=)\?(?=&|$)|\?\?/;Te.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=on.pop()||Te.expando+"_"+Ot++;return this[e]=!0,e}}),Te.ajaxPrefilter("json jsonp",function(e,t,n){var r,a,i,o=!1!==e.jsonp&&(sn.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&sn.test(e.data)&&"data");if(o||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=we(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,o?e[o]=e[o].replace(sn,"$1"+r):!1!==e.jsonp&&(e.url+=(qt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return i||Te.error(r+" was not called"),i[0]},e.dataTypes[0]="json",a=T[r],T[r]=function(){i=arguments},n.always(function(){a===undefined?Te(T).removeProp(r):T[r]=a,e[r]&&(e.jsonpCallback=t.jsonpCallback,on.push(r)),i&&we(a)&&a(i[0]),i=a=undefined}),"script"}),be.createHTMLDocument=((an=le.implementation.createHTMLDocument("").body).innerHTML="
    ",2===an.childNodes.length),Te.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(be.createHTMLDocument?((r=(t=le.implementation.createHTMLDocument("")).createElement("base")).href=le.location.href,t.head.appendChild(r)):t=le),i=!n&&[],(a=Ie.exec(e))?[t.createElement(a[1])]:(a=S([e],t,i),i&&i.length&&Te(i).remove(),Te.merge([],a.childNodes)));var r,a,i},Te.fn.load=function(e,t,n){var r,a,i,o=this,s=e.indexOf(" ");return-1").append(Te.parseHTML(e)).find(r):e)}).always(n&&function(e,t){o.each(function(){n.apply(this,i||[e.responseText,t,e])})}),this},Te.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){Te.fn[t]=function(e){return this.on(t,e)}}),Te.expr.pseudos.animated=function(t){return Te.grep(Te.timers,function(e){return t===e.elem}).length},Te.offset={setOffset:function(e,t,n){var r,a,i,o,s,l,u=Te.css(e,"position"),c=Te(e),f={};"static"===u&&(e.style.position="relative"),s=c.offset(),i=Te.css(e,"top"),l=Te.css(e,"left"),("absolute"===u||"fixed"===u)&&-1<(i+l).indexOf("auto")?(o=(r=c.position()).top,a=r.left):(o=parseFloat(i)||0,a=parseFloat(l)||0),we(t)&&(t=t.call(e,n,Te.extend({},s))),null!=t.top&&(f.top=t.top-s.top+o),null!=t.left&&(f.left=t.left-s.left+a),"using"in t?t.using.call(e,f):c.css(f)}},Te.fn.extend({offset:function(t){if(arguments.length)return t===undefined?this:this.each(function(e){Te.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],a={top:0,left:0};if("fixed"===Te.css(r,"position"))t=r.getBoundingClientRect();else{for(t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===Te.css(e,"position");)e=e.parentNode;e&&e!==r&&1===e.nodeType&&((a=Te(e).offset()).top+=Te.css(e,"borderTopWidth",!0),a.left+=Te.css(e,"borderLeftWidth",!0))}return{top:t.top-a.top-Te.css(r,"marginTop",!0),left:t.left-a.left-Te.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===Te.css(e,"position");)e=e.offsetParent;return e||Je})}}),Te.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,a){var i="pageYOffset"===a;Te.fn[t]=function(e){return Me(this,function(e,t,n){var r;if(xe(e)?r=e:9===e.nodeType&&(r=e.defaultView),n===undefined)return r?r[a]:e[t];r?r.scrollTo(i?r.pageXOffset:n,i?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),Te.each(["top","left"],function(e,n){Te.cssHooks[n]=M(be.pixelPosition,function(e,t){if(t)return t=H(e,n),gt.test(t)?Te(e).position()[n]+"px":t})}),Te.each({Height:"height",Width:"width"},function(o,s){Te.each({padding:"inner"+o,content:s,"":"outer"+o},function(r,i){Te.fn[i]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),a=r||(!0===e||!0===t?"margin":"border");return Me(this,function(e,t,n){var r;return xe(e)?0===i.indexOf("outer")?e["inner"+o]:e.document.documentElement["client"+o]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+o],r["scroll"+o],e.body["offset"+o],r["offset"+o],r["client"+o])):n===undefined?Te.css(e,t,a):Te.style(e,t,n,a)},s,n?e:undefined,n)}})}),Te.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){Te.fn[n]=function(e,t){return 0"}for(var i=0,o="",s=[];e.length||t.length;){var l=r().splice(0,1)[0];if(o+=x(n.substr(i,l.offset-i)),i=l.offset,"start"==l.event)o+=a(l.node),s.push(l.node);else if("stop"==l.event){var u=s.length;do{var c=s[--u];o+=""}while(c!=l.node);for(s.splice(u,1);u'+x(a[0])+""):n+=x(a[0]),r=t.lR.lastIndex,a=t.lR.exec(e)}return n+=x(e.substr(r,e.length-r))}function f(e,t){if(t.sL&&T[t.sL]){var n=D(t.sL,e);return g+=n.keyword_count,n.value}return r(e,t)}function d(e,t){var n=e.cN?'':"";e.rB?(m+=n,e.buffer=""):e.eB?(m+=x(t)+n,e.buffer=""):(m+=n,e.buffer=t),h.push(e),p+=e.r}function i(e,t,n){var r=h[h.length-1];if(n)return m+=f(r.buffer+e,r),!1;var a=l(t,r);if(a)return m+=f(r.buffer+e,r),d(a,t),a.rB;var i=u(h.length-1,t);if(i){var o=r.cN?"":"";for(r.rE?m+=f(r.buffer+e,r)+o:r.eE?m+=f(r.buffer+e,r)+o+x(t):m+=f(r.buffer+e+t,r)+o;1":"",m+=o,i--,h.length--;var s=h[h.length-1];return h.length--,h[h.length-1].buffer="",s.starts&&d(s.starts,""),r.rE}if(c(t,r))throw"Illegal"}var s=T[e],h=[s.dM],p=0,g=0,m="";try{var v=0;s.dM.buffer="";do{var y=n(t,v),b=i(y[0],y[1],y[2]);v+=y[0].length,b||(v+=y[1].length)}while(!y[2]);if(1o.keyword_count+o.r&&(o=l),l.keyword_count+l.r>i.keyword_count+i.r&&(o=i,i=l)}}var u=e.className;u.match(i.language)||(u=u?u+" "+i.language:i.language);var c=g(e);if(c.length)(f=document.createElement("pre")).innerHTML=i.value,i.value=m(c,g(f),r);if(n&&(i.value=i.value.replace(/^((<[^>]+>|\t)+)/gm,function(e,t){return t.replace(/\t/g,n)})),t&&(i.value=i.value.replace(/\n/g,"
    ")),/MSIE [678]/.test(navigator.userAgent)&&"CODE"==e.tagName&&"PRE"==e.parentNode.tagName){var f=e.parentNode,d=document.createElement("div");d.innerHTML="
    "+i.value+"
    ",e=d.firstChild.firstChild,d.firstChild.cN=f.cN,f.parentNode.replaceChild(d.firstChild,f)}else e.innerHTML=i.value;e.className=u,e.dataset={},e.dataset.result={language:i.language,kw:i.keyword_count,re:i.r},o&&o.language&&(e.dataset.second_best={language:o.language,kw:o.keyword_count,re:o.r})}}function i(){if(!i.called){i.called=!0,v();for(var e=document.getElementsByTagName("pre"),t=0;t|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",this.BE={b:"\\\\.",r:0},this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0},this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0},this.CLCM={cN:"comment",b:"//",e:"$"},this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"},this.HCM={cN:"comment",b:"#",e:"$"},this.NM={cN:"number",b:this.NR,r:0},this.CNM={cN:"number",b:this.CNR,r:0},this.inherit=function(e,t){var n={};for(var r in e)n[r]=e[r];if(t)for(var r in t)n[r]=t[r];return n}};hljs.LANGUAGES.ruby=function(){var e="[a-zA-Z_][a-zA-Z0-9_]*(\\!|\\?)?",t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",n={keyword:{and:1,"false":1,then:1,defined:1,module:1,"in":1,"return":1,redo:1,"if":1,BEGIN:1,retry:1,end:1,"for":1,"true":1,self:1,when:1,next:1,until:1,"do":1,begin:1,unless:1,END:1,rescue:1,nil:1,"else":1,"break":1,undef:1,not:1,"super":1,"class":1,"case":1,require:1,"yield":1,alias:1,"while":1,ensure:1,elsif:1,or:1,def:1},keymethods:{__id__:1,__send__:1,abort:1,abs:1,"all?":1,allocate:1,ancestors:1,"any?":1,arity:1,assoc:1,at:1,at_exit:1,autoload:1,"autoload?":1,"between?":1,binding:1,binmode:1,"block_given?":1,call:1,callcc:1,caller:1,capitalize:1,"capitalize!":1,casecmp:1,"catch":1,ceil:1,center:1,chomp:1,"chomp!":1,chop:1,"chop!":1,chr:1,"class":1,class_eval:1,"class_variable_defined?":1,class_variables:1,clear:1,clone:1,close:1,close_read:1,close_write:1,"closed?":1,coerce:1,collect:1,"collect!":1,compact:1,"compact!":1,concat:1,"const_defined?":1,const_get:1,const_missing:1,const_set:1,constants:1,count:1,crypt:1,"default":1,default_proc:1,"delete":1,"delete!":1,delete_at:1,delete_if:1,detect:1,display:1,div:1,divmod:1,downcase:1,"downcase!":1,downto:1,dump:1,dup:1,each:1,each_byte:1,each_index:1,each_key:1,each_line:1,each_pair:1,each_value:1,each_with_index:1,"empty?":1,entries:1,eof:1,"eof?":1,"eql?":1,"equal?":1,eval:1,exec:1,exit:1,"exit!":1,extend:1,fail:1,fcntl:1,fetch:1,fileno:1,fill:1,find:1,find_all:1,first:1,flatten:1,"flatten!":1,floor:1,flush:1,for_fd:1,foreach:1,fork:1,format:1,freeze:1,"frozen?":1,fsync:1,getc:1,gets:1,global_variables:1,grep:1,gsub:1,"gsub!":1,"has_key?":1,"has_value?":1,hash:1,hex:1,id:1,include:1,"include?":1,included_modules:1,index:1,indexes:1,indices:1,induced_from:1,inject:1,insert:1,inspect:1,instance_eval:1,instance_method:1,instance_methods:1,"instance_of?":1,"instance_variable_defined?":1,instance_variable_get:1,instance_variable_set:1,instance_variables:1,"integer?":1,intern:1,invert:1,ioctl:1,"is_a?":1,isatty:1,"iterator?":1,join:1,"key?":1,keys:1,"kind_of?":1,lambda:1,last:1,length:1,lineno:1,ljust:1,load:1,local_variables:1,loop:1,lstrip:1,"lstrip!":1,map:1,"map!":1,match:1,max:1,"member?":1,merge:1,"merge!":1,method:1,"method_defined?":1,method_missing:1,methods:1,min:1,module_eval:1,modulo:1,name:1,nesting:1,"new":1,next:1,"next!":1,"nil?":1,nitems:1,"nonzero?":1,object_id:1,oct:1,open:1,pack:1,partition:1,pid:1,pipe:1,pop:1,popen:1,pos:1,prec:1,prec_f:1,prec_i:1,print:1,printf:1,private_class_method:1,private_instance_methods:1,"private_method_defined?":1,private_methods:1,proc:1,protected_instance_methods:1, +"protected_method_defined?":1,protected_methods:1,public_class_method:1,public_instance_methods:1,"public_method_defined?":1,public_methods:1,push:1,putc:1,puts:1,quo:1,raise:1,rand:1,rassoc:1,read:1,read_nonblock:1,readchar:1,readline:1,readlines:1,readpartial:1,rehash:1,reject:1,"reject!":1,remainder:1,reopen:1,replace:1,require:1,"respond_to?":1,reverse:1,"reverse!":1,reverse_each:1,rewind:1,rindex:1,rjust:1,round:1,rstrip:1,"rstrip!":1,scan:1,seek:1,select:1,send:1,set_trace_func:1,shift:1,singleton_method_added:1,singleton_methods:1,size:1,sleep:1,slice:1,"slice!":1,sort:1,"sort!":1,sort_by:1,split:1,sprintf:1,squeeze:1,"squeeze!":1,srand:1,stat:1,step:1,store:1,strip:1,"strip!":1,sub:1,"sub!":1,succ:1,"succ!":1,sum:1,superclass:1,swapcase:1,"swapcase!":1,sync:1,syscall:1,sysopen:1,sysread:1,sysseek:1,system:1,syswrite:1,taint:1,"tainted?":1,tell:1,test:1,"throw":1,times:1,to_a:1,to_ary:1,to_f:1,to_hash:1,to_i:1,to_int:1,to_io:1,to_proc:1,to_s:1,to_str:1,to_sym:1,tr:1,"tr!":1,tr_s:1,"tr_s!":1,trace_var:1,transpose:1,trap:1,truncate:1,"tty?":1,type:1,ungetc:1,uniq:1,"uniq!":1,unpack:1,unshift:1,untaint:1,untrace_var:1,upcase:1,"upcase!":1,update:1,upto:1,"value?":1,values:1,values_at:1,warn:1,write:1,write_nonblock:1,"zero?":1,zip:1}},r={cN:"yardoctag",b:"@[A-Za-z]+"},a={cN:"comment",b:"#",e:"$",c:[r]},i={cN:"comment",b:"^\\=begin",e:"^\\=end",c:[r],r:10},o={cN:"comment",b:"^__END__",e:"\\n$"},s={cN:"subst",b:"#\\{",e:"}",l:e,k:n},l=[hljs.BE,s],u={cN:"string",b:"'",e:"'",c:l,r:0},c={cN:"string",b:'"',e:'"',c:l,r:0},f={cN:"string",b:"%[qw]?\\(",e:"\\)",c:l,r:10},d={cN:"string",b:"%[qw]?\\[",e:"\\]",c:l,r:10},h={cN:"string",b:"%[qw]?{",e:"}",c:l,r:10},p={cN:"string",b:"%[qw]?<",e:">",c:l,r:10},g={cN:"string",b:"%[qw]?/",e:"/",c:l,r:10},m={cN:"string",b:"%[qw]?%",e:"%",c:l,r:10},v={cN:"string",b:"%[qw]?-",e:"-",c:l,r:10},y={cN:"string",b:"%[qw]?\\|",e:"\\|",c:l,r:10},b={cN:"function",b:"\\bdef\\s+",e:" |$|;",l:e,k:n,c:[{cN:"title",b:t,l:e,k:n},{cN:"params",b:"\\(",e:"\\)",l:e,k:n},a,i,o]},w={cN:"identifier",b:e,l:e,k:n,r:0},x=[a,i,o,u,c,f,d,h,p,g,m,v,y,{cN:"class",b:"\\b(class|module)\\b",e:"$|;",k:{"class":1,module:1},c:[{cN:"title",b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?",r:0},{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+hljs.IR+"::)?"+hljs.IR}]},a,i,o]},b,{cN:"constant",b:"(::)?([A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:":",c:[u,c,f,d,h,p,g,m,v,y,w],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"number",b:"\\?\\w"},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},w,{b:"("+hljs.RSR+")\\s*",c:[a,i,o,{cN:"regexp",b:"/",e:"/[a-z]*",i:"\\n",c:[hljs.BE]}],r:0}];return s.c=x,{dM:{l:e,k:n,c:b.c[1].c=x}}}(),function(c,s,o){function l(e,t,n){var r=s.createElement(e);return t&&(r.id=te+t),n&&(r.style.cssText=n),c(r)}function f(){return o.innerHeight?o.innerHeight:c(o).height()}function u(e,n){n!==Object(n)&&(n={}),this.cache={},this.el=e,this.value=function(e){var t;return this.cache[e]===undefined&&((t=c(this.el).attr("data-cbox-"+e))!==undefined?this.cache[e]=t:n[e]!==undefined?this.cache[e]=n[e]:Q[e]!==undefined&&(this.cache[e]=Q[e])),this.cache[e]},this.get=function(e){var t=this.value(e);return c.isFunction(t)?t.call(this.el,this):t}}function i(e){var t=k.length,n=(X+e)%t;return n<0?t+n:n}function d(e,t){return Math.round((/%/.test(e)?("x"===t?I.width():f())/100:1)*parseInt(e,10))}function h(e,t){return e.get("photo")||e.get("photoRegex").test(t)}function p(e,t){return e.get("retinaUrl")&&1"),w()}}function a(){S||(t=!1,I=c(o),S=l(ce).attr({id:ee,"class":!1===c.support.opacity?te+"IE":"",role:"dialog",tabindex:"-1"}).hide(),x=l(ce,"Overlay").hide(),E=c([l(ce,"LoadingOverlay")[0],l(ce,"LoadingGraphic")[0]]),D=l(ce,"Wrapper"),T=l(ce,"Content").append(R=l(ce,"Title"),F=l(ce,"Current"),M=c('