[tor-commits] [donate/master] Added stripe-react-elements

peterh at torproject.org peterh at torproject.org
Tue Jun 18 18:02:12 UTC 2019


commit 56ed406eb6f6275b3151a59e600f500e697ff5dc
Author: peterh <peterh at giantrabbit.com>
Date:   Wed Apr 17 12:18:54 2019 -0700

    Added stripe-react-elements
---
 node_modules/.yarn-integrity                       |    9 +-
 node_modules/react-dom/build-info.json             |   10 +-
 .../cjs/react-dom-server.browser.development.js    |   43 +-
 .../cjs/react-dom-server.browser.production.min.js |    6 +-
 .../cjs/react-dom-server.node.development.js       |   43 +-
 .../cjs/react-dom-server.node.production.min.js    |    6 +-
 .../cjs/react-dom-test-utils.development.js        |    2 +-
 .../cjs/react-dom-test-utils.production.min.js     |    2 +-
 .../cjs/react-dom-unstable-fire.development.js     |  398 +++-
 .../cjs/react-dom-unstable-fire.production.min.js  |   22 +-
 .../cjs/react-dom-unstable-fire.profiling.min.js   |   39 +-
 .../react-dom-unstable-fizz.browser.development.js |    2 +-
 ...act-dom-unstable-fizz.browser.production.min.js |    2 +-
 .../react-dom-unstable-fizz.node.development.js    |    2 +-
 .../react-dom-unstable-fizz.node.production.min.js |    2 +-
 ...dom-unstable-native-dependencies.development.js |    2 +-
 ...-unstable-native-dependencies.production.min.js |    2 +-
 .../react-dom/cjs/react-dom.development.js         |  398 +++-
 .../react-dom/cjs/react-dom.production.min.js      |   22 +-
 .../react-dom/cjs/react-dom.profiling.min.js       |   39 +-
 node_modules/react-dom/package.json                |    4 +-
 .../umd/react-dom-server.browser.development.js    |   43 +-
 .../umd/react-dom-server.browser.production.min.js |    6 +-
 .../umd/react-dom-test-utils.development.js        |    2 +-
 .../umd/react-dom-test-utils.production.min.js     |    2 +-
 .../umd/react-dom-unstable-fire.development.js     |  398 +++-
 .../umd/react-dom-unstable-fire.production.min.js  |  100 +-
 .../umd/react-dom-unstable-fire.profiling.min.js   |   81 +-
 .../react-dom-unstable-fizz.browser.development.js |    2 +-
 ...act-dom-unstable-fizz.browser.production.min.js |    2 +-
 ...dom-unstable-native-dependencies.development.js |    2 +-
 ...-unstable-native-dependencies.production.min.js |    2 +-
 .../react-dom/umd/react-dom.development.js         |  398 +++-
 .../react-dom/umd/react-dom.production.min.js      |  100 +-
 .../react-dom/umd/react-dom.profiling.min.js       |   81 +-
 node_modules/react-stripe-elements/LICENSE         |   21 +
 node_modules/react-stripe-elements/README.md       |  779 ++++++++
 .../dist/react-stripe-elements.js                  | 1905 ++++++++++++++++++++
 .../dist/react-stripe-elements.min.js              |    1 +
 .../react-stripe-elements/es/components/Element.js |  159 ++
 .../es/components/Element.test.js                  |  155 ++
 .../es/components/Elements.js                      |  126 ++
 .../es/components/Elements.test.js                 |   93 +
 .../es/components/PaymentRequestButtonElement.js   |  144 ++
 .../components/PaymentRequestButtonElement.test.js |  145 ++
 .../es/components/Provider.js                      |  176 ++
 .../es/components/Provider.test.js                 |  199 ++
 .../react-stripe-elements/es/components/inject.js  |  206 +++
 .../es/components/inject.test.js                   |  358 ++++
 .../react-stripe-elements/es/decls/Stripe.js       |    1 +
 node_modules/react-stripe-elements/es/index.js     |   70 +
 .../react-stripe-elements/es/index.test.js         |  411 +++++
 .../react-stripe-elements/es/utils/isEqual.js      |   56 +
 .../react-stripe-elements/es/utils/isEqual.test.js |   34 +
 .../react-stripe-elements/es/utils/shallowEqual.js |   15 +
 .../es/utils/shallowEqual.test.js                  |   18 +
 .../lib/components/Element.js                      |  159 ++
 .../lib/components/Element.test.js                 |  155 ++
 .../lib/components/Elements.js                     |  126 ++
 .../lib/components/Elements.test.js                |   93 +
 .../lib/components/PaymentRequestButtonElement.js  |  144 ++
 .../components/PaymentRequestButtonElement.test.js |  145 ++
 .../lib/components/Provider.js                     |  176 ++
 .../lib/components/Provider.test.js                |  199 ++
 .../react-stripe-elements/lib/components/inject.js |  206 +++
 .../lib/components/inject.test.js                  |  358 ++++
 .../react-stripe-elements/lib/decls/Stripe.js      |    1 +
 node_modules/react-stripe-elements/lib/index.js    |   70 +
 .../react-stripe-elements/lib/index.test.js        |  411 +++++
 .../react-stripe-elements/lib/utils/isEqual.js     |   56 +
 .../lib/utils/isEqual.test.js                      |   34 +
 .../lib/utils/shallowEqual.js                      |   15 +
 .../lib/utils/shallowEqual.test.js                 |   18 +
 node_modules/react-stripe-elements/package.json    |   77 +
 .../src/components/Element.js                      |  138 ++
 .../src/components/Element.test.js                 |  147 ++
 .../src/components/Elements.js                     |  126 ++
 .../src/components/Elements.test.js                |   95 +
 .../src/components/PaymentRequestButtonElement.js  |  125 ++
 .../components/PaymentRequestButtonElement.test.js |  155 ++
 .../src/components/Provider.js                     |  190 ++
 .../src/components/Provider.test.js                |  193 ++
 .../react-stripe-elements/src/components/inject.js |  217 +++
 .../src/components/inject.test.js                  |  336 ++++
 .../react-stripe-elements/src/decls/Stripe.js      |   28 +
 node_modules/react-stripe-elements/src/index.js    |   49 +
 .../react-stripe-elements/src/index.test.js        |  321 ++++
 .../react-stripe-elements/src/utils/isEqual.js     |   51 +
 .../src/utils/isEqual.test.js                      |   51 +
 .../src/utils/shallowEqual.js                      |   13 +
 .../src/utils/shallowEqual.test.js                 |   13 +
 node_modules/react/build-info.json                 |   10 +-
 node_modules/react/cjs/react.development.js        |    6 +-
 node_modules/react/cjs/react.production.min.js     |    6 +-
 node_modules/react/package.json                    |    4 +-
 node_modules/react/umd/react.development.js        |    6 +-
 node_modules/react/umd/react.production.min.js     |    6 +-
 node_modules/react/umd/react.profiling.min.js      |    6 +-
 node_modules/scheduler/build-info.json             |   10 +-
 .../scheduler/cjs/scheduler-tracing.development.js |    2 +-
 .../cjs/scheduler-tracing.production.min.js        |    2 +-
 .../cjs/scheduler-tracing.profiling.min.js         |    2 +-
 .../scheduler/cjs/scheduler.development.js         |    2 +-
 .../scheduler/cjs/scheduler.production.min.js      |    2 +-
 node_modules/scheduler/package.json                |    2 +-
 yarn.lock                                          |   22 +-
 106 files changed, 11383 insertions(+), 742 deletions(-)

diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity
index 3059f940..ee7604fc 100644
--- a/node_modules/.yarn-integrity
+++ b/node_modules/.yarn-integrity
@@ -22,6 +22,7 @@
     "parcel-bundler@^1.11.0",
     "react-dom@^16.8.3",
     "react-popper@^1.3.3",
+    "react-stripe-elements@^2.0.3",
     "react@^16.8.3",
     "round-to@^2.0.0",
     "sass@^1.17.2",
@@ -886,6 +887,7 @@
     "process-nextick-args@~2.0.0": "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa",
     "process@^0.11.10": "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182",
     "promise@^7.1.1": "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf",
+    "prop-types@^15.5.10": "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5",
     "prop-types@^15.6.1": "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5",
     "prop-types@^15.6.2": "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5",
     "proto-list@~1.2.1": "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849",
@@ -911,10 +913,11 @@
     "randomfill@^1.0.3": "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458",
     "range-parser@~1.2.0": "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e",
     "rc@^1.2.7": "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed",
-    "react-dom@^16.8.3": "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.3.tgz#ae236029e66210783ac81999d3015dfc475b9c32",
+    "react-dom@^16.8.3": "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f",
     "react-is@^16.8.1": "https://registry.yarnpkg.com/react-is/-/react-is-16.8.3.tgz#4ad8b029c2a718fc0cfc746c8d4e1b7221e5387d",
     "react-popper@^1.3.3": "https://registry.yarnpkg.com/react-popper/-/react-popper-1.3.3.tgz#2c6cef7515a991256b4f0536cd4bdcb58a7b6af6",
-    "react@^16.8.3": "https://registry.yarnpkg.com/react/-/react-16.8.3.tgz#c6f988a2ce895375de216edcfaedd6b9a76451d9",
+    "react-stripe-elements@^2.0.3": "https://registry.yarnpkg.com/react-stripe-elements/-/react-stripe-elements-2.0.3.tgz#cfd0f68d00ce52a07aab1cb2b59b29dc12309486",
+    "react@^16.8.3": "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe",
     "readable-stream@>=1.0.33-1 <1.1.0-0": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c",
     "readable-stream@^2.0.2": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf",
     "readable-stream@^2.0.6": "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf",
@@ -984,7 +987,7 @@
     "sax@^1.2.4": "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9",
     "sax@~1.2.1": "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9",
     "sax@~1.2.4": "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9",
-    "scheduler@^0.13.3": "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.3.tgz#bed3c5850f62ea9c716a4d781f9daeb9b2a58896",
+    "scheduler@^0.13.6": "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889",
     "semver@^4.1.0": "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da",
     "semver@^5.3.0": "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004",
     "semver@^5.4.1": "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004",
diff --git a/node_modules/react-dom/build-info.json b/node_modules/react-dom/build-info.json
index 00d7f844..e1796b48 100644
--- a/node_modules/react-dom/build-info.json
+++ b/node_modules/react-dom/build-info.json
@@ -1,8 +1,8 @@
 {
-  "branch": "pull/14902",
-  "buildNumber": "13558",
-  "checksum": "9da4ab1",
-  "commit": "29b7b775f",
+  "branch": "pull/15226",
+  "buildNumber": "14079",
+  "checksum": "4a4c239",
+  "commit": "297165f1e",
   "environment": "ci",
-  "reactVersion": "16.8.2-canary-29b7b775f"
+  "reactVersion": "16.8.5-canary-297165f1e"
 }
diff --git a/node_modules/react-dom/cjs/react-dom-server.browser.development.js b/node_modules/react-dom/cjs/react-dom-server.browser.development.js
index 2ec7fba1..4e83e075 100644
--- a/node_modules/react-dom/cjs/react-dom-server.browser.development.js
+++ b/node_modules/react-dom/cjs/react-dom-server.browser.development.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-server.browser.development.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -66,7 +66,7 @@ function invariant(condition, format, a, b, c, d, e, f) {
 
 // TODO: this is special because it gets imported during build.
 
-var ReactVersion = '16.8.3';
+var ReactVersion = '16.8.6';
 
 /**
  * Similar to invariant but only logs a warning if the condition is not met.
@@ -360,12 +360,12 @@ var enableSuspenseServerRenderer = false; // TODO: true? Here it might just be f
 // Control this behavior with a flag to support 16.6 minor releases in the meanwhile.
 
 var ReactDebugCurrentFrame$1 = void 0;
+var didWarnAboutInvalidateContextType = void 0;
 {
   ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;
+  didWarnAboutInvalidateContextType = new Set();
 }
 
-var didWarnAboutInvalidateContextType = {};
-
 var emptyObject = {};
 {
   Object.freeze(emptyObject);
@@ -405,16 +405,33 @@ function validateContextBounds(context, threadID) {
 
 function processContext(type, context, threadID) {
   var contextType = type.contextType;
-  if (typeof contextType === 'object' && contextType !== null) {
-    {
-      if (contextType.$$typeof !== REACT_CONTEXT_TYPE) {
-        var name = getComponentName(type) || 'Component';
-        if (!didWarnAboutInvalidateContextType[name]) {
-          didWarnAboutInvalidateContextType[name] = true;
-          warningWithoutStack$1(false, '%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext(). ' + 'Did you accidentally pass the Context.Provider instead?', name);
+  {
+    if ('contextType' in type) {
+      var isValid =
+      // Allow null for conditional declaration
+      contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a <Context.Consumer>
+
+      if (!isValid && !didWarnAboutInvalidateContextType.has(type)) {
+        didWarnAboutInvalidateContextType.add(type);
+
+        var addendum = '';
+        if (contextType === undefined) {
+          addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.';
+        } else if (typeof contextType !== 'object') {
+          addendum = ' However, it is set to a ' + typeof contextType + '.';
+        } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {
+          addendum = ' Did you accidentally pass the Context.Provider instead?';
+        } else if (contextType._context !== undefined) {
+          // <Context.Consumer>
+          addendum = ' Did you accidentally pass the Context.Consumer instead?';
+        } else {
+          addendum = ' However, it is set to an object with keys {' + Object.keys(contextType).join(', ') + '}.';
         }
+        warningWithoutStack$1(false, '%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext().%s', getComponentName(type) || 'Component', addendum);
       }
     }
+  }
+  if (typeof contextType === 'object' && contextType !== null) {
     validateContextBounds(contextType, threadID);
     return contextType[threadID];
   } else {
@@ -932,7 +949,7 @@ var isInHookUserCodeInDev = false;
 var currentHookNameInDev = void 0;
 
 function resolveCurrentlyRenderingComponent() {
-  !(currentlyRenderingComponent !== null) ? invariant(false, 'Hooks can only be called inside the body of a function component. (https://fb.me/react-invalid-hook-call)') : void 0;
+  !(currentlyRenderingComponent !== null) ? invariant(false, 'Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.') : void 0;
   {
     !!isInHookUserCodeInDev ? warning$1(false, 'Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. ' + 'You can only call Hooks at the top level of your React function. ' + 'For more information, see ' + 'https://fb.me/rules-of-hooks') : void 0;
   }
@@ -1195,7 +1212,7 @@ function useLayoutEffect(create, inputs) {
   {
     currentHookNameInDev = 'useLayoutEffect';
   }
-  warning$1(false, 'useLayoutEffect does nothing on the server, because its effect cannot ' + "be encoded into the server renderer's output format. This will lead " + 'to a mismatch between the initial, non-hydrated UI and the intended ' + 'UI. To avoid this, useLayoutEffect should only be used in ' + 'components that render exclusively on the client.');
+  warning$1(false, 'useLayoutEffect does nothing on the server, because its effect cannot ' + "be encoded into the server renderer's output format. This will lead " + 'to a mismatch between the initial, non-hydrated UI and the intended ' + 'UI. To avoid this, useLayoutEffect should only be used in ' + 'components that render exclusively on the client. ' + 'See https://fb.me/react-uselayouteffect-ssr for common fixes.');
 }
 
 function dispatchAction(componentIdentity, queue, action) {
diff --git a/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js b/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js
index 4f695d44..7079a207 100644
--- a/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js
+++ b/node_modules/react-dom/cjs/react-dom-server.browser.production.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-server.browser.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -21,7 +21,7 @@ function sa(a,b,d,c){if(null===b||"undefined"===typeof b||ra(a,b,d,c))return!0;i
 ["capture","download"].forEach(function(a){J[a]=new I(a,4,!1,a,null)});["cols","rows","size","span"].forEach(function(a){J[a]=new I(a,6,!1,a,null)});["rowSpan","start"].forEach(function(a){J[a]=new I(a,5,!1,a.toLowerCase(),null)});var K=/[\-:]([a-z])/g;function L(a){return a[1].toUpperCase()}
 "accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect ve
 rt-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(a){var b=a.replace(K,
 L);J[b]=new I(b,1,!1,a,null)});"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(a){var b=a.replace(K,L);J[b]=new I(b,1,!1,a,"http://www.w3.org/1999/xlink")});["xml:base","xml:lang","xml:space"].forEach(function(a){var b=a.replace(K,L);J[b]=new I(b,1,!1,a,"http://www.w3.org/XML/1998/namespace")});["tabIndex","crossOrigin"].forEach(function(a){J[a]=new I(a,1,!1,a.toLowerCase(),null)});var ta=/["'&<>]/;
-function M(a){if("boolean"===typeof a||"number"===typeof a)return""+a;a=""+a;var b=ta.exec(a);if(b){var d="",c,f=0;for(c=b.index;c<a.length;c++){switch(a.charCodeAt(c)){case 34:b=""";break;case 38:b="&";break;case 39:b="&#x27;";break;case 60:b="<";break;case 62:b=">";break;default:continue}f!==c&&(d+=a.substring(f,c));f=c+1;d+=b}a=f!==c?d+a.substring(f,c):d}return a}var N=null,O=null,P=null,Q=!1,S=!1,T=null,U=0;function V(){null===N?r("307"):void 0;return N}
+function M(a){if("boolean"===typeof a||"number"===typeof a)return""+a;a=""+a;var b=ta.exec(a);if(b){var d="",c,f=0;for(c=b.index;c<a.length;c++){switch(a.charCodeAt(c)){case 34:b=""";break;case 38:b="&";break;case 39:b="&#x27;";break;case 60:b="<";break;case 62:b=">";break;default:continue}f!==c&&(d+=a.substring(f,c));f=c+1;d+=b}a=f!==c?d+a.substring(f,c):d}return a}var N=null,O=null,P=null,Q=!1,S=!1,T=null,U=0;function V(){null===N?r("321"):void 0;return N}
 function ua(){0<U&&r("312");return{memoizedState:null,queue:null,next:null}}function W(){null===P?null===O?(Q=!1,O=P=ua()):(Q=!0,P=O):null===P.next?(Q=!1,P=P.next=ua()):(Q=!0,P=P.next);return P}function va(a,b,d,c){for(;S;)S=!1,U+=1,P=null,d=a(b,c);O=N=null;U=0;P=T=null;return d}function wa(a,b){return"function"===typeof b?b(a):b}
 function xa(a,b,d){N=V();P=W();if(Q){var c=P.queue;b=c.dispatch;if(null!==T&&(d=T.get(c),void 0!==d)){T.delete(c);c=P.memoizedState;do c=a(c,d.action),d=d.next;while(null!==d);P.memoizedState=c;return[c,b]}return[P.memoizedState,b]}a=a===wa?"function"===typeof b?b():b:void 0!==d?d(b):b;P.memoizedState=a;a=P.queue={last:null,dispatch:null};a=a.dispatch=ya.bind(null,N,a);return[P.memoizedState,a]}
 function ya(a,b,d){25>U?void 0:r("301");if(a===N)if(S=!0,a={action:d,next:null},null===T&&(T=new Map),d=T.get(b),void 0===d)T.set(b,a);else{for(b=d;null!==b.next;)b=b.next;b.next=a}}function za(){}
@@ -48,4 +48,4 @@ D=1===this.stack.length;B="<"+a.type;for(y in h)if(Oa.call(h,y)){var l=h[y];if(n
 m.indexOf("-"))m="string"===typeof u.is;else switch(m){case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":m=!1;break b;default:m=!0}if(m)Pa.hasOwnProperty(y)||(n=y,n=qa(n)&&null!=l?n+"="+('"'+M(l)+'"'):"");else{m=y;n=l;l=J.hasOwnProperty(m)?J[m]:null;if(u="style"!==m)u=null!==l?0===l.type:!(2<m.length)||"o"!==m[0]&&"O"!==m[0]||"n"!==m[1]&&"N"!==m[1]?!1:!0;u||sa(m,n,l,!1)?n="":null!==
 l?(m=l.attributeName,l=l.type,n=3===l||4===l&&!0===n?m+'=""':m+"="+('"'+M(n)+'"')):n=qa(m)?m+"="+('"'+M(n)+'"'):""}n&&(B+=" "+n)}}g||D&&(B+=' data-reactroot=""');var y=B;h="";Da.hasOwnProperty(b)?y+="/>":(y+=">",h="</"+a.type+">");a:{g=e.dangerouslySetInnerHTML;if(null!=g){if(null!=g.__html){g=g.__html;break a}}else if(g=e.children,"string"===typeof g||"number"===typeof g){g=M(g);break a}g=null}null!=g?(e=[],Ja[b]&&"\n"===g.charAt(0)&&(y+="\n"),y+=g):e=Z(e.children);a=a.type;c=null==c||"http://www.w3.org/1999/xhtml"===
 c?Ca(a):"http://www.w3.org/2000/svg"===c&&"foreignObject"===a?"http://www.w3.org/1999/xhtml":c;this.stack.push({domNamespace:c,type:b,children:e,childIndex:0,context:d,footer:h});this.previousWasTextNode=!1;return y};return a}(),Ta={renderToString:function(a){a=new Sa(a,!1);try{return a.read(Infinity)}finally{a.destroy()}},renderToStaticMarkup:function(a){a=new Sa(a,!0);try{return a.read(Infinity)}finally{a.destroy()}},renderToNodeStream:function(){r("207")},renderToStaticNodeStream:function(){r("208")},
-version:"16.8.3"},Ua={default:Ta},Va=Ua&&Ta||Ua;module.exports=Va.default||Va;
+version:"16.8.6"},Ua={default:Ta},Va=Ua&&Ta||Ua;module.exports=Va.default||Va;
diff --git a/node_modules/react-dom/cjs/react-dom-server.node.development.js b/node_modules/react-dom/cjs/react-dom-server.node.development.js
index d3eeb190..bd682f01 100644
--- a/node_modules/react-dom/cjs/react-dom-server.node.development.js
+++ b/node_modules/react-dom/cjs/react-dom-server.node.development.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-server.node.development.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -22,7 +22,7 @@ var stream = require('stream');
 
 // TODO: this is special because it gets imported during build.
 
-var ReactVersion = '16.8.3';
+var ReactVersion = '16.8.6';
 
 /**
  * Use invariant() to assert state which your program assumes to be true.
@@ -361,12 +361,12 @@ var enableSuspenseServerRenderer = false; // TODO: true? Here it might just be f
 // Control this behavior with a flag to support 16.6 minor releases in the meanwhile.
 
 var ReactDebugCurrentFrame$1 = void 0;
+var didWarnAboutInvalidateContextType = void 0;
 {
   ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;
+  didWarnAboutInvalidateContextType = new Set();
 }
 
-var didWarnAboutInvalidateContextType = {};
-
 var emptyObject = {};
 {
   Object.freeze(emptyObject);
@@ -406,16 +406,33 @@ function validateContextBounds(context, threadID) {
 
 function processContext(type, context, threadID) {
   var contextType = type.contextType;
-  if (typeof contextType === 'object' && contextType !== null) {
-    {
-      if (contextType.$$typeof !== REACT_CONTEXT_TYPE) {
-        var name = getComponentName(type) || 'Component';
-        if (!didWarnAboutInvalidateContextType[name]) {
-          didWarnAboutInvalidateContextType[name] = true;
-          warningWithoutStack$1(false, '%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext(). ' + 'Did you accidentally pass the Context.Provider instead?', name);
+  {
+    if ('contextType' in type) {
+      var isValid =
+      // Allow null for conditional declaration
+      contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a <Context.Consumer>
+
+      if (!isValid && !didWarnAboutInvalidateContextType.has(type)) {
+        didWarnAboutInvalidateContextType.add(type);
+
+        var addendum = '';
+        if (contextType === undefined) {
+          addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.';
+        } else if (typeof contextType !== 'object') {
+          addendum = ' However, it is set to a ' + typeof contextType + '.';
+        } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {
+          addendum = ' Did you accidentally pass the Context.Provider instead?';
+        } else if (contextType._context !== undefined) {
+          // <Context.Consumer>
+          addendum = ' Did you accidentally pass the Context.Consumer instead?';
+        } else {
+          addendum = ' However, it is set to an object with keys {' + Object.keys(contextType).join(', ') + '}.';
         }
+        warningWithoutStack$1(false, '%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext().%s', getComponentName(type) || 'Component', addendum);
       }
     }
+  }
+  if (typeof contextType === 'object' && contextType !== null) {
     validateContextBounds(contextType, threadID);
     return contextType[threadID];
   } else {
@@ -933,7 +950,7 @@ var isInHookUserCodeInDev = false;
 var currentHookNameInDev = void 0;
 
 function resolveCurrentlyRenderingComponent() {
-  !(currentlyRenderingComponent !== null) ? invariant(false, 'Hooks can only be called inside the body of a function component. (https://fb.me/react-invalid-hook-call)') : void 0;
+  !(currentlyRenderingComponent !== null) ? invariant(false, 'Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.') : void 0;
   {
     !!isInHookUserCodeInDev ? warning$1(false, 'Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. ' + 'You can only call Hooks at the top level of your React function. ' + 'For more information, see ' + 'https://fb.me/rules-of-hooks') : void 0;
   }
@@ -1196,7 +1213,7 @@ function useLayoutEffect(create, inputs) {
   {
     currentHookNameInDev = 'useLayoutEffect';
   }
-  warning$1(false, 'useLayoutEffect does nothing on the server, because its effect cannot ' + "be encoded into the server renderer's output format. This will lead " + 'to a mismatch between the initial, non-hydrated UI and the intended ' + 'UI. To avoid this, useLayoutEffect should only be used in ' + 'components that render exclusively on the client.');
+  warning$1(false, 'useLayoutEffect does nothing on the server, because its effect cannot ' + "be encoded into the server renderer's output format. This will lead " + 'to a mismatch between the initial, non-hydrated UI and the intended ' + 'UI. To avoid this, useLayoutEffect should only be used in ' + 'components that render exclusively on the client. ' + 'See https://fb.me/react-uselayouteffect-ssr for common fixes.');
 }
 
 function dispatchAction(componentIdentity, queue, action) {
diff --git a/node_modules/react-dom/cjs/react-dom-server.node.production.min.js b/node_modules/react-dom/cjs/react-dom-server.node.production.min.js
index 8389750b..6465dfb6 100644
--- a/node_modules/react-dom/cjs/react-dom-server.node.production.min.js
+++ b/node_modules/react-dom/cjs/react-dom-server.node.production.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-server.node.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -21,7 +21,7 @@ function ta(a,b,d,c){if(null===b||"undefined"===typeof b||sa(a,b,d,c))return!0;i
 ["capture","download"].forEach(function(a){J[a]=new I(a,4,!1,a,null)});["cols","rows","size","span"].forEach(function(a){J[a]=new I(a,6,!1,a,null)});["rowSpan","start"].forEach(function(a){J[a]=new I(a,5,!1,a.toLowerCase(),null)});var K=/[\-:]([a-z])/g;function L(a){return a[1].toUpperCase()}
 "accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect ve
 rt-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(a){var b=a.replace(K,
 L);J[b]=new I(b,1,!1,a,null)});"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(a){var b=a.replace(K,L);J[b]=new I(b,1,!1,a,"http://www.w3.org/1999/xlink")});["xml:base","xml:lang","xml:space"].forEach(function(a){var b=a.replace(K,L);J[b]=new I(b,1,!1,a,"http://www.w3.org/XML/1998/namespace")});["tabIndex","crossOrigin"].forEach(function(a){J[a]=new I(a,1,!1,a.toLowerCase(),null)});var ua=/["'&<>]/;
-function M(a){if("boolean"===typeof a||"number"===typeof a)return""+a;a=""+a;var b=ua.exec(a);if(b){var d="",c,f=0;for(c=b.index;c<a.length;c++){switch(a.charCodeAt(c)){case 34:b=""";break;case 38:b="&";break;case 39:b="&#x27;";break;case 60:b="<";break;case 62:b=">";break;default:continue}f!==c&&(d+=a.substring(f,c));f=c+1;d+=b}a=f!==c?d+a.substring(f,c):d}return a}var N=null,O=null,P=null,Q=!1,S=!1,T=null,U=0;function V(){null===N?r("307"):void 0;return N}
+function M(a){if("boolean"===typeof a||"number"===typeof a)return""+a;a=""+a;var b=ua.exec(a);if(b){var d="",c,f=0;for(c=b.index;c<a.length;c++){switch(a.charCodeAt(c)){case 34:b=""";break;case 38:b="&";break;case 39:b="&#x27;";break;case 60:b="<";break;case 62:b=">";break;default:continue}f!==c&&(d+=a.substring(f,c));f=c+1;d+=b}a=f!==c?d+a.substring(f,c):d}return a}var N=null,O=null,P=null,Q=!1,S=!1,T=null,U=0;function V(){null===N?r("321"):void 0;return N}
 function va(){0<U&&r("312");return{memoizedState:null,queue:null,next:null}}function W(){null===P?null===O?(Q=!1,O=P=va()):(Q=!0,P=O):null===P.next?(Q=!1,P=P.next=va()):(Q=!0,P=P.next);return P}function wa(a,b,d,c){for(;S;)S=!1,U+=1,P=null,d=a(b,c);O=N=null;U=0;P=T=null;return d}function xa(a,b){return"function"===typeof b?b(a):b}
 function ya(a,b,d){N=V();P=W();if(Q){var c=P.queue;b=c.dispatch;if(null!==T&&(d=T.get(c),void 0!==d)){T.delete(c);c=P.memoizedState;do c=a(c,d.action),d=d.next;while(null!==d);P.memoizedState=c;return[c,b]}return[P.memoizedState,b]}a=a===xa?"function"===typeof b?b():b:void 0!==d?d(b):b;P.memoizedState=a;a=P.queue={last:null,dispatch:null};a=a.dispatch=za.bind(null,N,a);return[P.memoizedState,a]}
 function za(a,b,d){25>U?void 0:r("301");if(a===N)if(S=!0,a={action:d,next:null},null===T&&(T=new Map),d=T.get(b),void 0===d)T.set(b,a);else{for(b=d;null!==b.next;)b=b.next;b.next=a}}function Aa(){}
@@ -50,4 +50,4 @@ l?(m=l.attributeName,l=l.type,n=3===l||4===l&&!0===n?m+'=""':m+"="+('"'+M(n)+'"'
 c?Da(a):"http://www.w3.org/2000/svg"===c&&"foreignObject"===a?"http://www.w3.org/1999/xhtml":c;this.stack.push({domNamespace:c,type:b,children:e,childIndex:0,context:d,footer:h});this.previousWasTextNode=!1;return y};return a}();
 function Ua(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}
 var Va=function(a){function b(d,c){if(!(this instanceof b))throw new TypeError("Cannot call a class as a function");var f=a.call(this,{});if(!this)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");f=!f||"object"!==typeof f&&"function"!==typeof f?this:f;f.partialRenderer=new Ta(d,c);return f}Ua(b,a);b.prototype._destroy=function(a,b){this.partialRenderer.destroy();b(a)};b.prototype._read=function(a){try{this.push(this.partialRenderer.read(a))}catch(c){this.destroy(c)}};
-return b}(aa.Readable),Wa={renderToString:function(a){a=new Ta(a,!1);try{return a.read(Infinity)}finally{a.destroy()}},renderToStaticMarkup:function(a){a=new Ta(a,!0);try{return a.read(Infinity)}finally{a.destroy()}},renderToNodeStream:function(a){return new Va(a,!1)},renderToStaticNodeStream:function(a){return new Va(a,!0)},version:"16.8.3"},Xa={default:Wa},Ya=Xa&&Wa||Xa;module.exports=Ya.default||Ya;
+return b}(aa.Readable),Wa={renderToString:function(a){a=new Ta(a,!1);try{return a.read(Infinity)}finally{a.destroy()}},renderToStaticMarkup:function(a){a=new Ta(a,!0);try{return a.read(Infinity)}finally{a.destroy()}},renderToNodeStream:function(a){return new Va(a,!1)},renderToStaticNodeStream:function(a){return new Va(a,!0)},version:"16.8.6"},Xa={default:Wa},Ya=Xa&&Wa||Xa;module.exports=Ya.default||Ya;
diff --git a/node_modules/react-dom/cjs/react-dom-test-utils.development.js b/node_modules/react-dom/cjs/react-dom-test-utils.development.js
index 4b8fc835..fc2a5b52 100644
--- a/node_modules/react-dom/cjs/react-dom-test-utils.development.js
+++ b/node_modules/react-dom/cjs/react-dom-test-utils.development.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-test-utils.development.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/react-dom/cjs/react-dom-test-utils.production.min.js b/node_modules/react-dom/cjs/react-dom-test-utils.production.min.js
index 0a6ad6bd..2988cfe5 100644
--- a/node_modules/react-dom/cjs/react-dom-test-utils.production.min.js
+++ b/node_modules/react-dom/cjs/react-dom-test-utils.production.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-test-utils.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/react-dom/cjs/react-dom-unstable-fire.development.js b/node_modules/react-dom/cjs/react-dom-unstable-fire.development.js
index 0fdf62c6..76e37081 100644
--- a/node_modules/react-dom/cjs/react-dom-unstable-fire.development.js
+++ b/node_modules/react-dom/cjs/react-dom-unstable-fire.development.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-unstable-fire.development.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -5332,15 +5332,29 @@ function isInDocument(node) {
   return node && node.ownerDocument && containsNode(node.ownerDocument.documentElement, node);
 }
 
+function isSameOriginFrame(iframe) {
+  try {
+    // Accessing the contentDocument of a HTMLIframeElement can cause the browser
+    // to throw, e.g. if it has a cross-origin src attribute.
+    // Safari will show an error in the console when the access results in "Blocked a frame with origin". e.g:
+    // iframe.contentDocument.defaultView;
+    // A safety way is to access one of the cross origin properties: Window or Location
+    // Which might result in "SecurityError" DOM Exception and it is compatible to Safari.
+    // https://html.spec.whatwg.org/multipage/browsers.html#integration-with-idl
+
+    return typeof iframe.contentWindow.location.href === 'string';
+  } catch (err) {
+    return false;
+  }
+}
+
 function getActiveElementDeep() {
   var win = window;
   var element = getActiveElement();
   while (element instanceof win.HTMLIFrameElement) {
-    // Accessing the contentDocument of a HTMLIframeElement can cause the browser
-    // to throw, e.g. if it has a cross-origin src attribute
-    try {
-      win = element.contentDocument.defaultView;
-    } catch (e) {
+    if (isSameOriginFrame(element)) {
+      win = element.contentWindow;
+    } else {
       return element;
     }
     element = getActiveElement(win.document);
@@ -7630,14 +7644,25 @@ function createElement(type, props, rootContainerElement, parentNamespace) {
       // See discussion in https://github.com/facebook/react/pull/6896
       // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240
       domElement = ownerDocument.createElement(type);
-      // Normally attributes are assigned in `setInitialDOMProperties`, however the `multiple`
-      // attribute on `select`s needs to be added before `option`s are inserted. This prevents
-      // a bug where the `select` does not scroll to the correct option because singular
-      // `select` elements automatically pick the first item.
+      // Normally attributes are assigned in `setInitialDOMProperties`, however the `multiple` and `size`
+      // attributes on `select`s needs to be added before `option`s are inserted.
+      // This prevents:
+      // - a bug where the `select` does not scroll to the correct option because singular
+      //  `select` elements automatically pick the first item #13222
+      // - a bug where the `select` set the first item as selected despite the `size` attribute #14239
       // See https://github.com/facebook/react/issues/13222
-      if (type === 'select' && props.multiple) {
+      // and https://github.com/facebook/react/issues/14239
+      if (type === 'select') {
         var node = domElement;
-        node.multiple = true;
+        if (props.multiple) {
+          node.multiple = true;
+        } else if (props.size) {
+          // Setting a size greater than 1 causes a select to behave like `multiple=true`, where
+          // it is possible that no option is selected.
+          //
+          // This is only necessary when a select in "single selection mode".
+          node.size = props.size;
+        }
       }
     }
   } else {
@@ -10005,6 +10030,7 @@ function FiberNode(tag, pendingProps, key, mode) {
     this._debugSource = null;
     this._debugOwner = null;
     this._debugIsCurrentlyTiming = false;
+    this._debugHookTypes = null;
     if (!hasBadMapPolyfill && typeof Object.preventExtensions === 'function') {
       Object.preventExtensions(this);
     }
@@ -10072,6 +10098,7 @@ function createWorkInProgress(current, pendingProps, expirationTime) {
       workInProgress._debugID = current._debugID;
       workInProgress._debugSource = current._debugSource;
       workInProgress._debugOwner = current._debugOwner;
+      workInProgress._debugHookTypes = current._debugHookTypes;
     }
 
     workInProgress.alternate = current;
@@ -10339,6 +10366,7 @@ function assignFiberPropertiesInDEV(target, source) {
   target._debugSource = source._debugSource;
   target._debugOwner = source._debugOwner;
   target._debugIsCurrentlyTiming = source._debugIsCurrentlyTiming;
+  target._debugHookTypes = source._debugHookTypes;
   return target;
 }
 
@@ -11290,14 +11318,35 @@ function constructClassInstance(workInProgress, ctor, props, renderExpirationTim
   var unmaskedContext = emptyContextObject;
   var context = null;
   var contextType = ctor.contextType;
-  if (typeof contextType === 'object' && contextType !== null) {
-    {
-      if (contextType.$$typeof !== REACT_CONTEXT_TYPE && !didWarnAboutInvalidateContextType.has(ctor)) {
+
+  {
+    if ('contextType' in ctor) {
+      var isValid =
+      // Allow null for conditional declaration
+      contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a <Context.Consumer>
+
+      if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) {
         didWarnAboutInvalidateContextType.add(ctor);
-        warningWithoutStack$1(false, '%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext(). ' + 'Did you accidentally pass the Context.Provider instead?', getComponentName(ctor) || 'Component');
+
+        var addendum = '';
+        if (contextType === undefined) {
+          addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.';
+        } else if (typeof contextType !== 'object') {
+          addendum = ' However, it is set to a ' + typeof contextType + '.';
+        } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {
+          addendum = ' Did you accidentally pass the Context.Provider instead?';
+        } else if (contextType._context !== undefined) {
+          // <Context.Consumer>
+          addendum = ' Did you accidentally pass the Context.Consumer instead?';
+        } else {
+          addendum = ' However, it is set to an object with keys {' + Object.keys(contextType).join(', ') + '}.';
+        }
+        warningWithoutStack$1(false, '%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext().%s', getComponentName(ctor) || 'Component', addendum);
       }
     }
+  }
 
+  if (typeof contextType === 'object' && contextType !== null) {
     context = readContext(contextType);
   } else {
     unmaskedContext = getUnmaskedContext(workInProgress, ctor, true);
@@ -12724,7 +12773,6 @@ var currentlyRenderingFiber$1 = null;
 // current hook list is the list that belongs to the current fiber. The
 // work-in-progress hook list is a new list that will be added to the
 // work-in-progress fiber.
-var firstCurrentHook = null;
 var currentHook = null;
 var nextCurrentHook = null;
 var firstWorkInProgressHook = null;
@@ -12754,45 +12802,73 @@ var RE_RENDER_LIMIT = 25;
 // In DEV, this is the name of the currently executing primitive hook
 var currentHookNameInDev = null;
 
-function warnOnHookMismatchInDev() {
+// In DEV, this list ensures that hooks are called in the same order between renders.
+// The list stores the order of hooks used during the initial render (mount).
+// Subsequent renders (updates) reference this list.
+var hookTypesDev = null;
+var hookTypesUpdateIndexDev = -1;
+
+function mountHookTypesDev() {
+  {
+    var hookName = currentHookNameInDev;
+
+    if (hookTypesDev === null) {
+      hookTypesDev = [hookName];
+    } else {
+      hookTypesDev.push(hookName);
+    }
+  }
+}
+
+function updateHookTypesDev() {
+  {
+    var hookName = currentHookNameInDev;
+
+    if (hookTypesDev !== null) {
+      hookTypesUpdateIndexDev++;
+      if (hookTypesDev[hookTypesUpdateIndexDev] !== hookName) {
+        warnOnHookMismatchInDev(hookName);
+      }
+    }
+  }
+}
+
+function warnOnHookMismatchInDev(currentHookName) {
   {
     var componentName = getComponentName(currentlyRenderingFiber$1.type);
     if (!didWarnAboutMismatchedHooksForComponent.has(componentName)) {
       didWarnAboutMismatchedHooksForComponent.add(componentName);
 
-      var secondColumnStart = 22;
+      if (hookTypesDev !== null) {
+        var table = '';
 
-      var table = '';
-      var prevHook = firstCurrentHook;
-      var nextHook = firstWorkInProgressHook;
-      var n = 1;
-      while (prevHook !== null && nextHook !== null) {
-        var oldHookName = prevHook._debugType;
-        var newHookName = nextHook._debugType;
+        var secondColumnStart = 30;
 
-        var row = n + '. ' + oldHookName;
+        for (var i = 0; i <= hookTypesUpdateIndexDev; i++) {
+          var oldHookName = hookTypesDev[i];
+          var newHookName = i === hookTypesUpdateIndexDev ? currentHookName : oldHookName;
 
-        // Extra space so second column lines up
-        // lol @ IE not supporting String#repeat
-        while (row.length < secondColumnStart) {
-          row += ' ';
-        }
+          var row = i + 1 + '. ' + oldHookName;
+
+          // Extra space so second column lines up
+          // lol @ IE not supporting String#repeat
+          while (row.length < secondColumnStart) {
+            row += ' ';
+          }
 
-        row += newHookName + '\n';
+          row += newHookName + '\n';
 
-        table += row;
-        prevHook = prevHook.next;
-        nextHook = nextHook.next;
-        n++;
-      }
+          table += row;
+        }
 
-      warning$1(false, 'React has detected a change in the order of Hooks called by %s. ' + 'This will lead to bugs and errors if not fixed. ' + 'For more information, read the Rules of Hooks: https://fb.me/rules-of-hooks\n\n' + '   Previous render    Next render\n' + '   -------------------------------\n' + '%s' + '   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n', componentName, table);
+        warning$1(false, 'React has detected a change in the order of Hooks called by %s. ' + 'This will lead to bugs and errors if not fixed. ' + 'For more information, read the Rules of Hooks: https://fb.me/rules-of-hooks\n\n' + '   Previous render            Next render\n' + '   ------------------------------------------------------\n' + '%s' + '   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n', componentName, table);
+      }
     }
   }
 }
 
 function throwInvalidHookError() {
-  invariant(false, 'Hooks can only be called inside the body of a function component. (https://fb.me/react-invalid-hook-call)');
+  invariant(false, 'Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.');
 }
 
 function areHookInputsEqual(nextDeps, prevDeps) {
@@ -12822,7 +12898,12 @@ function areHookInputsEqual(nextDeps, prevDeps) {
 function renderWithHooks(current, workInProgress, Component, props, refOrContext, nextRenderExpirationTime) {
   renderExpirationTime = nextRenderExpirationTime;
   currentlyRenderingFiber$1 = workInProgress;
-  firstCurrentHook = nextCurrentHook = current !== null ? current.memoizedState : null;
+  nextCurrentHook = current !== null ? current.memoizedState : null;
+
+  {
+    hookTypesDev = current !== null ? current._debugHookTypes : null;
+    hookTypesUpdateIndexDev = -1;
+  }
 
   // The following should have already been reset
   // currentHook = null;
@@ -12836,8 +12917,26 @@ function renderWithHooks(current, workInProgress, Component, props, refOrContext
   // numberOfReRenders = 0;
   // sideEffectTag = 0;
 
+  // TODO Warn if no hooks are used at all during mount, then some are used during update.
+  // Currently we will identify the update render as a mount because nextCurrentHook === null.
+  // This is tricky because it's valid for certain types of components (e.g. React.lazy)
+
+  // Using nextCurrentHook to differentiate between mount/update only works if at least one stateful hook is used.
+  // Non-stateful hooks (e.g. context) don't get added to memoizedState,
+  // so nextCurrentHook would be null during updates and mounts.
   {
-    ReactCurrentDispatcher$1.current = nextCurrentHook === null ? HooksDispatcherOnMountInDEV : HooksDispatcherOnUpdateInDEV;
+    if (nextCurrentHook !== null) {
+      ReactCurrentDispatcher$1.current = HooksDispatcherOnUpdateInDEV;
+    } else if (hookTypesDev !== null) {
+      // This dispatcher handles an edge case where a component is updating,
+      // but no stateful hooks have been used.
+      // We want to match the production code behavior (which will use HooksDispatcherOnMount),
+      // but with the extra DEV validation to ensure hooks ordering hasn't changed.
+      // This dispatcher does that.
+      ReactCurrentDispatcher$1.current = HooksDispatcherOnMountWithHookTypesInDEV;
+    } else {
+      ReactCurrentDispatcher$1.current = HooksDispatcherOnMountInDEV;
+    }
   }
 
   var children = Component(props, refOrContext);
@@ -12848,13 +12947,18 @@ function renderWithHooks(current, workInProgress, Component, props, refOrContext
       numberOfReRenders += 1;
 
       // Start over from the beginning of the list
-      firstCurrentHook = nextCurrentHook = current !== null ? current.memoizedState : null;
+      nextCurrentHook = current !== null ? current.memoizedState : null;
       nextWorkInProgressHook = firstWorkInProgressHook;
 
       currentHook = null;
       workInProgressHook = null;
       componentUpdateQueue = null;
 
+      {
+        // Also validate hook order for cascading updates.
+        hookTypesUpdateIndexDev = -1;
+      }
+
       ReactCurrentDispatcher$1.current = HooksDispatcherOnUpdateInDEV;
 
       children = Component(props, refOrContext);
@@ -12864,10 +12968,6 @@ function renderWithHooks(current, workInProgress, Component, props, refOrContext
     numberOfReRenders = 0;
   }
 
-  {
-    currentHookNameInDev = null;
-  }
-
   // We can assume the previous dispatcher is always this one, since we set it
   // at the beginning of the render phase and there's no re-entrancy.
   ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;
@@ -12879,18 +12979,29 @@ function renderWithHooks(current, workInProgress, Component, props, refOrContext
   renderedWork.updateQueue = componentUpdateQueue;
   renderedWork.effectTag |= sideEffectTag;
 
+  {
+    renderedWork._debugHookTypes = hookTypesDev;
+  }
+
+  // This check uses currentHook so that it works the same in DEV and prod bundles.
+  // hookTypesDev could catch more cases (e.g. context) but only in DEV bundles.
   var didRenderTooFewHooks = currentHook !== null && currentHook.next !== null;
 
   renderExpirationTime = NoWork;
   currentlyRenderingFiber$1 = null;
 
-  firstCurrentHook = null;
   currentHook = null;
   nextCurrentHook = null;
   firstWorkInProgressHook = null;
   workInProgressHook = null;
   nextWorkInProgressHook = null;
 
+  {
+    currentHookNameInDev = null;
+    hookTypesDev = null;
+    hookTypesUpdateIndexDev = -1;
+  }
+
   remainingExpirationTime = NoWork;
   componentUpdateQueue = null;
   sideEffectTag = 0;
@@ -12924,21 +13035,23 @@ function resetHooks() {
   renderExpirationTime = NoWork;
   currentlyRenderingFiber$1 = null;
 
-  firstCurrentHook = null;
   currentHook = null;
   nextCurrentHook = null;
   firstWorkInProgressHook = null;
   workInProgressHook = null;
   nextWorkInProgressHook = null;
 
-  remainingExpirationTime = NoWork;
-  componentUpdateQueue = null;
-  sideEffectTag = 0;
-
   {
+    hookTypesDev = null;
+    hookTypesUpdateIndexDev = -1;
+
     currentHookNameInDev = null;
   }
 
+  remainingExpirationTime = NoWork;
+  componentUpdateQueue = null;
+  sideEffectTag = 0;
+
   didScheduleRenderPhaseUpdate = false;
   renderPhaseUpdates = null;
   numberOfReRenders = 0;
@@ -12955,9 +13068,6 @@ function mountWorkInProgressHook() {
     next: null
   };
 
-  {
-    hook._debugType = currentHookNameInDev;
-  }
   if (workInProgressHook === null) {
     // This is the first hook in the list
     firstWorkInProgressHook = workInProgressHook = hook;
@@ -13004,13 +13114,6 @@ function updateWorkInProgressHook() {
       workInProgressHook = workInProgressHook.next = newHook;
     }
     nextCurrentHook = currentHook.next;
-
-    {
-      newHook._debugType = currentHookNameInDev;
-      if (currentHookNameInDev !== currentHook._debugType) {
-        warnOnHookMismatchInDev();
-      }
-    }
   }
   return workInProgressHook;
 }
@@ -13025,20 +13128,6 @@ function basicStateReducer(state, action) {
   return typeof action === 'function' ? action(state) : action;
 }
 
-function mountContext(context, observedBits) {
-  {
-    mountWorkInProgressHook();
-  }
-  return readContext(context, observedBits);
-}
-
-function updateContext(context, observedBits) {
-  {
-    updateWorkInProgressHook();
-  }
-  return readContext(context, observedBits);
-}
-
 function mountReducer(reducer, initialArg, init) {
   var hook = mountWorkInProgressHook();
   var initialState = void 0;
@@ -13051,8 +13140,8 @@ function mountReducer(reducer, initialArg, init) {
   var queue = hook.queue = {
     last: null,
     dispatch: null,
-    eagerReducer: reducer,
-    eagerState: initialState
+    lastRenderedReducer: reducer,
+    lastRenderedState: initialState
   };
   var dispatch = queue.dispatch = dispatchAction.bind(null,
   // Flow doesn't know this is non-null, but we do.
@@ -13065,6 +13154,8 @@ function updateReducer(reducer, initialArg, init) {
   var queue = hook.queue;
   !(queue !== null) ? invariant(false, 'Should have a queue. This is likely a bug in React. Please file an issue.') : void 0;
 
+  queue.lastRenderedReducer = reducer;
+
   if (numberOfReRenders > 0) {
     // This is a re-render. Apply the new render phase updates to the previous
     var _dispatch = queue.dispatch;
@@ -13099,8 +13190,7 @@ function updateReducer(reducer, initialArg, init) {
           hook.baseState = newState;
         }
 
-        queue.eagerReducer = reducer;
-        queue.eagerState = newState;
+        queue.lastRenderedState = newState;
 
         return [newState, _dispatch];
       }
@@ -13179,8 +13269,7 @@ function updateReducer(reducer, initialArg, init) {
     hook.baseUpdate = newBaseUpdate;
     hook.baseState = newBaseState;
 
-    queue.eagerReducer = reducer;
-    queue.eagerState = _newState;
+    queue.lastRenderedState = _newState;
   }
 
   var dispatch = queue.dispatch;
@@ -13196,8 +13285,8 @@ function mountState(initialState) {
   var queue = hook.queue = {
     last: null,
     dispatch: null,
-    eagerReducer: basicStateReducer,
-    eagerState: initialState
+    lastRenderedReducer: basicStateReducer,
+    lastRenderedState: initialState
   };
   var dispatch = queue.dispatch = dispatchAction.bind(null,
   // Flow doesn't know this is non-null, but we do.
@@ -13474,21 +13563,21 @@ function dispatchAction(fiber, queue, action) {
       // The queue is currently empty, which means we can eagerly compute the
       // next state before entering the render phase. If the new state is the
       // same as the current state, we may be able to bail out entirely.
-      var _eagerReducer = queue.eagerReducer;
-      if (_eagerReducer !== null) {
+      var _lastRenderedReducer = queue.lastRenderedReducer;
+      if (_lastRenderedReducer !== null) {
         var prevDispatcher = void 0;
         {
           prevDispatcher = ReactCurrentDispatcher$1.current;
           ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
         }
         try {
-          var currentState = queue.eagerState;
-          var _eagerState = _eagerReducer(currentState, action);
+          var currentState = queue.lastRenderedState;
+          var _eagerState = _lastRenderedReducer(currentState, action);
           // Stash the eagerly computed state, and the reducer used to compute
           // it, on the update object. If the reducer hasn't changed by the
           // time we enter the render phase, then the eager state can be used
           // without calling the reducer again.
-          _update2.eagerReducer = _eagerReducer;
+          _update2.eagerReducer = _lastRenderedReducer;
           _update2.eagerState = _eagerState;
           if (is(_eagerState, currentState)) {
             // Fast path. We can bail out without scheduling React to re-render.
@@ -13531,6 +13620,7 @@ var ContextOnlyDispatcher = {
 };
 
 var HooksDispatcherOnMountInDEV = null;
+var HooksDispatcherOnMountWithHookTypesInDEV = null;
 var HooksDispatcherOnUpdateInDEV = null;
 var InvalidNestedHooksDispatcherOnMountInDEV = null;
 var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
@@ -13550,26 +13640,32 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useCallback: function (callback, deps) {
       currentHookNameInDev = 'useCallback';
+      mountHookTypesDev();
       return mountCallback(callback, deps);
     },
     useContext: function (context, observedBits) {
       currentHookNameInDev = 'useContext';
-      return mountContext(context, observedBits);
+      mountHookTypesDev();
+      return readContext(context, observedBits);
     },
     useEffect: function (create, deps) {
       currentHookNameInDev = 'useEffect';
+      mountHookTypesDev();
       return mountEffect(create, deps);
     },
     useImperativeHandle: function (ref, create, deps) {
       currentHookNameInDev = 'useImperativeHandle';
+      mountHookTypesDev();
       return mountImperativeHandle(ref, create, deps);
     },
     useLayoutEffect: function (create, deps) {
       currentHookNameInDev = 'useLayoutEffect';
+      mountHookTypesDev();
       return mountLayoutEffect(create, deps);
     },
     useMemo: function (create, deps) {
       currentHookNameInDev = 'useMemo';
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13580,6 +13676,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useReducer: function (reducer, initialArg, init) {
       currentHookNameInDev = 'useReducer';
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13590,10 +13687,12 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useRef: function (initialValue) {
       currentHookNameInDev = 'useRef';
+      mountHookTypesDev();
       return mountRef(initialValue);
     },
     useState: function (initialState) {
       currentHookNameInDev = 'useState';
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13604,6 +13703,81 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useDebugValue: function (value, formatterFn) {
       currentHookNameInDev = 'useDebugValue';
+      mountHookTypesDev();
+      return mountDebugValue(value, formatterFn);
+    }
+  };
+
+  HooksDispatcherOnMountWithHookTypesInDEV = {
+    readContext: function (context, observedBits) {
+      return readContext(context, observedBits);
+    },
+    useCallback: function (callback, deps) {
+      currentHookNameInDev = 'useCallback';
+      updateHookTypesDev();
+      return mountCallback(callback, deps);
+    },
+    useContext: function (context, observedBits) {
+      currentHookNameInDev = 'useContext';
+      updateHookTypesDev();
+      return readContext(context, observedBits);
+    },
+    useEffect: function (create, deps) {
+      currentHookNameInDev = 'useEffect';
+      updateHookTypesDev();
+      return mountEffect(create, deps);
+    },
+    useImperativeHandle: function (ref, create, deps) {
+      currentHookNameInDev = 'useImperativeHandle';
+      updateHookTypesDev();
+      return mountImperativeHandle(ref, create, deps);
+    },
+    useLayoutEffect: function (create, deps) {
+      currentHookNameInDev = 'useLayoutEffect';
+      updateHookTypesDev();
+      return mountLayoutEffect(create, deps);
+    },
+    useMemo: function (create, deps) {
+      currentHookNameInDev = 'useMemo';
+      updateHookTypesDev();
+      var prevDispatcher = ReactCurrentDispatcher$1.current;
+      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
+      try {
+        return mountMemo(create, deps);
+      } finally {
+        ReactCurrentDispatcher$1.current = prevDispatcher;
+      }
+    },
+    useReducer: function (reducer, initialArg, init) {
+      currentHookNameInDev = 'useReducer';
+      updateHookTypesDev();
+      var prevDispatcher = ReactCurrentDispatcher$1.current;
+      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
+      try {
+        return mountReducer(reducer, initialArg, init);
+      } finally {
+        ReactCurrentDispatcher$1.current = prevDispatcher;
+      }
+    },
+    useRef: function (initialValue) {
+      currentHookNameInDev = 'useRef';
+      updateHookTypesDev();
+      return mountRef(initialValue);
+    },
+    useState: function (initialState) {
+      currentHookNameInDev = 'useState';
+      updateHookTypesDev();
+      var prevDispatcher = ReactCurrentDispatcher$1.current;
+      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
+      try {
+        return mountState(initialState);
+      } finally {
+        ReactCurrentDispatcher$1.current = prevDispatcher;
+      }
+    },
+    useDebugValue: function (value, formatterFn) {
+      currentHookNameInDev = 'useDebugValue';
+      updateHookTypesDev();
       return mountDebugValue(value, formatterFn);
     }
   };
@@ -13614,26 +13788,32 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useCallback: function (callback, deps) {
       currentHookNameInDev = 'useCallback';
+      updateHookTypesDev();
       return updateCallback(callback, deps);
     },
     useContext: function (context, observedBits) {
       currentHookNameInDev = 'useContext';
-      return updateContext(context, observedBits);
+      updateHookTypesDev();
+      return readContext(context, observedBits);
     },
     useEffect: function (create, deps) {
       currentHookNameInDev = 'useEffect';
+      updateHookTypesDev();
       return updateEffect(create, deps);
     },
     useImperativeHandle: function (ref, create, deps) {
       currentHookNameInDev = 'useImperativeHandle';
+      updateHookTypesDev();
       return updateImperativeHandle(ref, create, deps);
     },
     useLayoutEffect: function (create, deps) {
       currentHookNameInDev = 'useLayoutEffect';
+      updateHookTypesDev();
       return updateLayoutEffect(create, deps);
     },
     useMemo: function (create, deps) {
       currentHookNameInDev = 'useMemo';
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13644,6 +13824,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useReducer: function (reducer, initialArg, init) {
       currentHookNameInDev = 'useReducer';
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13654,10 +13835,12 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useRef: function (initialValue) {
       currentHookNameInDev = 'useRef';
+      updateHookTypesDev();
       return updateRef(initialValue);
     },
     useState: function (initialState) {
       currentHookNameInDev = 'useState';
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13668,6 +13851,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useDebugValue: function (value, formatterFn) {
       currentHookNameInDev = 'useDebugValue';
+      updateHookTypesDev();
       return updateDebugValue(value, formatterFn);
     }
   };
@@ -13680,31 +13864,37 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useCallback: function (callback, deps) {
       currentHookNameInDev = 'useCallback';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountCallback(callback, deps);
     },
     useContext: function (context, observedBits) {
       currentHookNameInDev = 'useContext';
       warnInvalidHookAccess();
-      return mountContext(context, observedBits);
+      mountHookTypesDev();
+      return readContext(context, observedBits);
     },
     useEffect: function (create, deps) {
       currentHookNameInDev = 'useEffect';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountEffect(create, deps);
     },
     useImperativeHandle: function (ref, create, deps) {
       currentHookNameInDev = 'useImperativeHandle';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountImperativeHandle(ref, create, deps);
     },
     useLayoutEffect: function (create, deps) {
       currentHookNameInDev = 'useLayoutEffect';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountLayoutEffect(create, deps);
     },
     useMemo: function (create, deps) {
       currentHookNameInDev = 'useMemo';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13716,6 +13906,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useReducer: function (reducer, initialArg, init) {
       currentHookNameInDev = 'useReducer';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13727,11 +13918,13 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useRef: function (initialValue) {
       currentHookNameInDev = 'useRef';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountRef(initialValue);
     },
     useState: function (initialState) {
       currentHookNameInDev = 'useState';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13743,6 +13936,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useDebugValue: function (value, formatterFn) {
       currentHookNameInDev = 'useDebugValue';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountDebugValue(value, formatterFn);
     }
   };
@@ -13755,31 +13949,37 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useCallback: function (callback, deps) {
       currentHookNameInDev = 'useCallback';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateCallback(callback, deps);
     },
     useContext: function (context, observedBits) {
       currentHookNameInDev = 'useContext';
       warnInvalidHookAccess();
-      return updateContext(context, observedBits);
+      updateHookTypesDev();
+      return readContext(context, observedBits);
     },
     useEffect: function (create, deps) {
       currentHookNameInDev = 'useEffect';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateEffect(create, deps);
     },
     useImperativeHandle: function (ref, create, deps) {
       currentHookNameInDev = 'useImperativeHandle';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateImperativeHandle(ref, create, deps);
     },
     useLayoutEffect: function (create, deps) {
       currentHookNameInDev = 'useLayoutEffect';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateLayoutEffect(create, deps);
     },
     useMemo: function (create, deps) {
       currentHookNameInDev = 'useMemo';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13791,6 +13991,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useReducer: function (reducer, initialArg, init) {
       currentHookNameInDev = 'useReducer';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13802,11 +14003,13 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useRef: function (initialValue) {
       currentHookNameInDev = 'useRef';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateRef(initialValue);
     },
     useState: function (initialState) {
       currentHookNameInDev = 'useState';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13818,6 +14021,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useDebugValue: function (value, formatterFn) {
       currentHookNameInDev = 'useDebugValue';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateDebugValue(value, formatterFn);
     }
   };
@@ -17089,11 +17293,11 @@ function commitHookEffectList(unmountTag, mountTag, finishedWork) {
             if (_destroy === null) {
               addendum = ' You returned null. If your effect does not require clean ' + 'up, return undefined (or nothing).';
             } else if (typeof _destroy.then === 'function') {
-              addendum = '\n\nIt looks like you wrote useEffect(async () => ...) or returned a Promise. ' + 'Instead, you may write an async function separately ' + 'and then call it from inside the effect:\n\n' + 'async function fetchComment(commentId) {\n' + '  // You can await here\n' + '}\n\n' + 'useEffect(() => {\n' + '  fetchComment(commentId);\n' + '}, [commentId]);\n\n' + 'In the future, React will provide a more idiomatic solution for data fetching ' + "that doesn't involve writing effects manually.";
+              addendum = '\n\nIt looks like you wrote useEffect(async () => ...) or returned a Promise. ' + 'Instead, write the async function inside your effect ' + 'and call it immediately:\n\n' + 'useEffect(() => {\n' + '  async function fetchData() {\n' + '    // You can await here\n' + '    const response = await MyAPI.getData(someId);\n' + '    // ...\n' + '  }\n' + '  fetchData();\n' + '}, [someId]); // Or [] if effect doesn\'t need props or state\n\n' + 'Learn more about data fetching with Hooks: https://fb.me/react-hooks-data-fetching';
             } else {
               addendum = ' You returned: ' + _destroy;
             }
-            warningWithoutStack$1(false, 'An Effect function must not return anything besides a function, ' + 'which is used for clean-up.%s%s', addendum, getStackByFiberInDevAndProd(finishedWork));
+            warningWithoutStack$1(false, 'An effect function must not return anything besides a function, ' + 'which is used for clean-up.%s%s', addendum, getStackByFiberInDevAndProd(finishedWork));
           }
         }
       }
@@ -20552,7 +20756,7 @@ implementation) {
 
 // TODO: this is special because it gets imported during build.
 
-var ReactVersion = '16.8.3';
+var ReactVersion = '16.8.6';
 
 // This file is copy paste from ReactDOM with adjusted paths
 // and a different host config import (react-reconciler/inline.fire).
diff --git a/node_modules/react-dom/cjs/react-dom-unstable-fire.production.min.js b/node_modules/react-dom/cjs/react-dom-unstable-fire.production.min.js
index aff186d7..0a0185cc 100644
--- a/node_modules/react-dom/cjs/react-dom-unstable-fire.production.min.js
+++ b/node_modules/react-dom/cjs/react-dom-unstable-fire.production.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-unstable-fire.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -86,7 +86,7 @@ function E(a,b){if(!b)return null;var c=(yd(a)?Cd:Dd).bind(null,a);b.addEventLis
 function Dd(a,b){if(Bd){var c=Nb(b);c=Ha(c);null===c||"number"!==typeof c.tag||2===ed(c)||(c=null);if(zd.length){var d=zd.pop();d.topLevelType=a;d.nativeEvent=b;d.targetInst=c;a=d}else a={topLevelType:a,nativeEvent:b,targetInst:c,ancestors:[]};try{Kb(Ad,a)}finally{a.topLevelType=null,a.nativeEvent=null,a.targetInst=null,a.ancestors.length=0,10>zd.length&&zd.push(a)}}}var Fd={},Gd=0,Hd="_reactListenersID"+(""+Math.random()).slice(2);
 function Id(a){Object.prototype.hasOwnProperty.call(a,Hd)||(a[Hd]=Gd++,Fd[a[Hd]]={});return Fd[a[Hd]]}function Jd(a){a=a||("undefined"!==typeof document?document:void 0);if("undefined"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Kd(a){for(;a&&a.firstChild;)a=a.firstChild;return a}
 function Ld(a,b){var c=Kd(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Kd(c)}}function Md(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Md(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}
-function Nd(){for(var a=window,b=Jd();b instanceof a.HTMLIFrameElement;){try{a=b.contentDocument.defaultView}catch(c){break}b=Jd(a.document)}return b}function Od(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)}
+function Nd(){for(var a=window,b=Jd();b instanceof a.HTMLIFrameElement;){try{var c="string"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Jd(a.document)}return b}function Od(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)}
 function Pd(){var a=Nd();if(Od(a)){if("selectionStart"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(A){b=null;break a}var f=0,g=-1,h=-1,l=0,k=0,m=a,p=null;b:for(;;){for(var t;;){m!==b||0!==d&&3!==m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=f+c);3===m.nodeType&&(f+=m.nodeValue.length);
 if(null===(t=m.firstChild))break;p=m;m=t}for(;;){if(m===a)break b;p===b&&++l===d&&(g=f);p===e&&++k===c&&(h=f);if(null!==(t=m.nextSibling))break;m=p;p=m.parentNode}m=t}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}
 function Qd(a){var b=Nd(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Md(c.ownerDocument.documentElement,c)){if(null!==d&&Od(c))if(b=d.start,a=d.end,void 0===a&&(a=b),"selectionStart"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ld(c,f);var g=Ld(c,
@@ -146,19 +146,19 @@ w.key),g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);a&&q.forEach(function(a){return
 k.sibling}f.type===Xb?(d=Ze(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ye(f.type,f.key,f.props,null,a.mode,h),h.ref=Af(a,d,f),h.return=a,a=h)}return g(a);case Wb:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=bf(f,a.mode,h);d.return=a;a=d}return g(a)}if("string"===typeof f||"number"===typeof f)return f=
 ""+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=af(f,a.mode,h),d.return=a,a=d),g(a);if(zf(f))return v(a,d,f,h);if(hc(f))return R(a,d,f,h);l&&Bf(a,f);if("undefined"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type,x("152",h.displayName||h.name||"Component")}return c(a,d)}}var Df=Cf(!0),Ef=Cf(!1),Ff={},N={current:Ff},Gf={current:Ff},Hf={current:Ff};function If(a){a===Ff?x("174"):void 0;return a}
 function Jf(a,b){G(Hf,b,a);G(Gf,a,a);G(N,Ff,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:he(null,"");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=he(b,c)}F(N,a);G(N,b,a)}function Kf(a){F(N,a);F(Gf,a);F(Hf,a)}function Lf(a){If(Hf.current);var b=If(N.current);var c=he(b,a.type);b!==c&&(G(Gf,a,a),G(N,c,a))}function Mf(a){Gf.current===a&&(F(N,a),F(Gf,a))}
-var Nf=0,Of=2,Pf=4,Qf=8,Rf=16,Sf=32,Tf=64,Uf=128,Vf=Tb.ReactCurrentDispatcher,Wf=0,Xf=null,O=null,P=null,Yf=null,Q=null,Zf=null,$f=0,ag=null,bg=0,cg=!1,dg=null,eg=0;function fg(){x("307")}function gg(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!bd(a[c],b[c]))return!1;return!0}
+var Nf=0,Of=2,Pf=4,Qf=8,Rf=16,Sf=32,Tf=64,Uf=128,Vf=Tb.ReactCurrentDispatcher,Wf=0,Xf=null,O=null,P=null,Yf=null,Q=null,Zf=null,$f=0,ag=null,bg=0,cg=!1,dg=null,eg=0;function fg(){x("321")}function gg(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!bd(a[c],b[c]))return!1;return!0}
 function hg(a,b,c,d,e,f){Wf=f;Xf=b;P=null!==a?a.memoizedState:null;Vf.current=null===P?ig:jg;b=c(d,e);if(cg){do cg=!1,eg+=1,P=null!==a?a.memoizedState:null,Zf=Yf,ag=Q=O=null,Vf.current=jg,b=c(d,e);while(cg);dg=null;eg=0}Vf.current=kg;a=Xf;a.memoizedState=Yf;a.expirationTime=$f;a.updateQueue=ag;a.effectTag|=bg;a=null!==O&&null!==O.next;Wf=0;Zf=Q=Yf=P=O=Xf=null;$f=0;ag=null;bg=0;a?x("300"):void 0;return b}function lg(){Vf.current=kg;Wf=0;Zf=Q=Yf=P=O=Xf=null;$f=0;ag=null;bg=0;cg=!1;dg=null;eg=0}
 function mg(){var a={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};null===Q?Yf=Q=a:Q=Q.next=a;return Q}function ng(){if(null!==Zf)Q=Zf,Zf=Q.next,O=P,P=null!==O?O.next:null;else{null===P?x("310"):void 0;O=P;var a={memoizedState:O.memoizedState,baseState:O.baseState,queue:O.queue,baseUpdate:O.baseUpdate,next:null};Q=null===Q?Yf=a:Q.next=a;P=O.next}return Q}function og(a,b){return"function"===typeof b?b(a):b}
-function pg(a){var b=ng(),c=b.queue;null===c?x("311"):void 0;if(0<eg){var d=c.dispatch;if(null!==dg){var e=dg.get(c);if(void 0!==e){dg.delete(c);var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=f);c.eagerReducer=a;c.eagerState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==d){var h=e=null,
-l=d,k=!1;do{var m=l.expirationTime;m<Wf?(k||(k=!0,h=g,e=f),m>$f&&($f=m)):f=l.eagerReducer===a?l.eagerState:a(f,l.action);g=l;l=l.next}while(null!==l&&l!==d);k||(h=g,e=f);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.eagerReducer=a;c.eagerState=f}return[b.memoizedState,c.dispatch]}
+function pg(a){var b=ng(),c=b.queue;null===c?x("311"):void 0;c.lastRenderedReducer=a;if(0<eg){var d=c.dispatch;if(null!==dg){var e=dg.get(c);if(void 0!==e){dg.delete(c);var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=f);c.lastRenderedState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==
+d){var h=e=null,l=d,k=!1;do{var m=l.expirationTime;m<Wf?(k||(k=!0,h=g,e=f),m>$f&&($f=m)):f=l.eagerReducer===a?l.eagerState:a(f,l.action);g=l;l=l.next}while(null!==l&&l!==d);k||(h=g,e=f);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}
 function rg(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===ag?(ag={lastEffect:null},ag.lastEffect=a.next=a):(b=ag.lastEffect,null===b?ag.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,ag.lastEffect=a));return a}function sg(a,b,c,d){var e=mg();bg|=a;e.memoizedState=rg(b,c,void 0,void 0===d?null:d)}
 function tg(a,b,c,d){var e=ng();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&gg(d,g.deps)){rg(Nf,c,f,d);return}}bg|=a;e.memoizedState=rg(b,c,f,d)}function ug(a,b){if("function"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function vg(){}
 function wg(a,b,c){25>eg?void 0:x("301");var d=a.alternate;if(a===Xf||null!==d&&d===Xf)if(cg=!0,a={expirationTime:Wf,action:c,eagerReducer:null,eagerState:null,next:null},null===dg&&(dg=new Map),c=dg.get(b),void 0===c)dg.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{of();var e=lf();e=mf(e,a);var f={expirationTime:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===
-d||0===d.expirationTime)&&(d=b.eagerReducer,null!==d))try{var l=b.eagerState,k=d(l,c);f.eagerReducer=d;f.eagerState=k;if(bd(k,l))return}catch(m){}finally{}qf(a,e)}}
+d||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var l=b.lastRenderedState,k=d(l,c);f.eagerReducer=d;f.eagerState=k;if(bd(k,l))return}catch(m){}finally{}qf(a,e)}}
 var kg={readContext:M,useCallback:fg,useContext:fg,useEffect:fg,useImperativeHandle:fg,useLayoutEffect:fg,useMemo:fg,useReducer:fg,useRef:fg,useState:fg,useDebugValue:fg},ig={readContext:M,useCallback:function(a,b){mg().memoizedState=[a,void 0===b?null:b];return a},useContext:M,useEffect:function(a,b){return sg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return sg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,b){return sg(4,Pf|Sf,a,b)},
-useMemo:function(a,b){var c=mg();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=mg();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,eagerReducer:a,eagerState:b};a=a.dispatch=wg.bind(null,Xf,a);return[d.memoizedState,a]},useRef:function(a){var b=mg();a={current:a};return b.memoizedState=a},useState:function(a){var b=mg();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,eagerReducer:og,
-eagerState:a};a=a.dispatch=wg.bind(null,Xf,a);return[b.memoizedState,a]},useDebugValue:vg},jg={readContext:M,useCallback:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:M,useEffect:function(a,b){return tg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return tg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,b){return tg(4,Pf|Sf,a,b)},
-useMemo:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:pg,useRef:function(){return ng().memoizedState},useState:function(a){return pg(og,a)},useDebugValue:vg},xg=null,yg=null,zg=!1;
+useMemo:function(a,b){var c=mg();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=mg();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=wg.bind(null,Xf,a);return[d.memoizedState,a]},useRef:function(a){var b=mg();a={current:a};return b.memoizedState=a},useState:function(a){var b=mg();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,
+lastRenderedReducer:og,lastRenderedState:a};a=a.dispatch=wg.bind(null,Xf,a);return[b.memoizedState,a]},useDebugValue:vg},jg={readContext:M,useCallback:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:M,useEffect:function(a,b){return tg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return tg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,
+b){return tg(4,Pf|Sf,a,b)},useMemo:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:pg,useRef:function(){return ng().memoizedState},useState:function(a){return pg(og,a)},useDebugValue:vg},xg=null,yg=null,zg=!1;
 function Ag(a,b){var c=K(5,null,null,0);c.elementType="DELETED";c.type="DELETED";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function Bg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}
 function Cg(a){if(zg){var b=yg;if(b){var c=b;if(!Bg(a,b)){b=De(c);if(!b||!Bg(a,b)){a.effectTag|=2;zg=!1;xg=a;return}Ag(xg,c)}xg=a;yg=Ee(b)}else a.effectTag|=2,zg=!1,xg=a}}function Dg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;xg=a}function Eg(a){if(a!==xg)return!1;if(!zg)return Dg(a),zg=!0,!1;var b=a.type;if(5!==a.tag||"head"!==b&&"body"!==b&&!xe(b,a.memoizedProps))for(b=yg;b;)Ag(a,b),b=De(b);Dg(a);yg=xg?De(a.stateNode):null;return!0}function Fg(){yg=xg=null;zg=!1}
 var Gg=Tb.ReactCurrentOwner,qg=!1;function S(a,b,c,d){b.child=null===a?Ef(b,null,c,d):Df(b,a.child,c,d)}function Hg(a,b,c,d,e){c=c.render;var f=b.ref;Ig(b,e);d=hg(a,b,c,d,f,e);if(null!==a&&!qg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Jg(a,b,e);b.effectTag|=1;S(a,b,d,e);return b.child}
@@ -222,7 +222,7 @@ b>c?b:c;0===b&&(Fh=null);$h(a,b)}
 function ai(a){for(;;){var b=a.alternate,c=a.return,d=a.sibling;if(0===(a.effectTag&1024)){T=a;a:{var e=b;b=a;var f=U;var g=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:J(b.type)&&Ke(b);break;case 3:Kf(b);Le(b);g=b.stateNode;g.pendingContext&&(g.context=g.pendingContext,g.pendingContext=null);if(null===e||null===e.child)Eg(b),b.effectTag&=-3;mh(b);break;case 5:Mf(b);var h=If(Hf.current);f=b.type;if(null!==e&&null!=b.stateNode)nh(e,b,f,g,h),e.ref!==b.ref&&(b.effectTag|=
 128);else if(g){var l=If(N.current);if(Eg(b)){g=b;e=g.stateNode;var k=g.type,m=g.memoizedProps,p=h;e[Fa]=g;e[Ga]=m;f=void 0;h=k;switch(h){case "iframe":case "object":E("load",e);break;case "video":case "audio":for(k=0;k<ab.length;k++)E(ab[k],e);break;case "source":E("error",e);break;case "img":case "image":case "link":E("error",e);E("load",e);break;case "form":E("reset",e);E("submit",e);break;case "details":E("toggle",e);break;case "input":wc(e,m);E("invalid",e);se(p,"onChange");break;case "select":e._wrapperState=
 {wasMultiple:!!m.multiple};E("invalid",e);se(p,"onChange");break;case "textarea":ce(e,m),E("invalid",e),se(p,"onChange")}qe(h,m);k=null;for(f in m)m.hasOwnProperty(f)&&(l=m[f],"children"===f?"string"===typeof l?e.textContent!==l&&(k=["children",l]):"number"===typeof l&&e.textContent!==""+l&&(k=["children",""+l]):ra.hasOwnProperty(f)&&null!=l&&se(p,f));switch(h){case "input":Rb(e);Ac(e,m,!0);break;case "textarea":Rb(e);ee(e,m);break;case "select":case "option":break;default:"function"===typeof m.onClick&&
-(e.onclick=te)}f=k;g.updateQueue=f;g=null!==f?!0:!1;g&&kh(b)}else{m=b;e=f;p=g;k=9===h.nodeType?h:h.ownerDocument;l===fe.html&&(l=ge(e));l===fe.html?"script"===e?(e=k.createElement("div"),e.innerHTML="<script>\x3c/script>",k=e.removeChild(e.firstChild)):"string"===typeof p.is?k=k.createElement(e,{is:p.is}):(k=k.createElement(e),"select"===e&&p.multiple&&(k.multiple=!0)):k=k.createElementNS(l,e);e=k;e[Fa]=m;e[Ga]=g;lh(e,b,!1,!1);p=e;k=f;m=g;var t=h,A=re(k,m);switch(k){case "iframe":case "object":E("load",
+(e.onclick=te)}f=k;g.updateQueue=f;g=null!==f?!0:!1;g&&kh(b)}else{m=b;p=f;e=g;k=9===h.nodeType?h:h.ownerDocument;l===fe.html&&(l=ge(p));l===fe.html?"script"===p?(e=k.createElement("div"),e.innerHTML="<script>\x3c/script>",k=e.removeChild(e.firstChild)):"string"===typeof e.is?k=k.createElement(p,{is:e.is}):(k=k.createElement(p),"select"===p&&(p=k,e.multiple?p.multiple=!0:e.size&&(p.size=e.size))):k=k.createElementNS(l,p);e=k;e[Fa]=m;e[Ga]=g;lh(e,b,!1,!1);p=e;k=f;m=g;var t=h,A=re(k,m);switch(k){case "iframe":case "object":E("load",
 p);h=m;break;case "video":case "audio":for(h=0;h<ab.length;h++)E(ab[h],p);h=m;break;case "source":E("error",p);h=m;break;case "img":case "image":case "link":E("error",p);E("load",p);h=m;break;case "form":E("reset",p);E("submit",p);h=m;break;case "details":E("toggle",p);h=m;break;case "input":wc(p,m);h=vc(p,m);E("invalid",p);se(t,"onChange");break;case "option":h=$d(p,m);break;case "select":p._wrapperState={wasMultiple:!!m.multiple};h=n({},m,{value:void 0});E("invalid",p);se(t,"onChange");break;case "textarea":ce(p,
 m);h=be(p,m);E("invalid",p);se(t,"onChange");break;default:h=m}qe(k,h);l=void 0;var v=k,R=p,u=h;for(l in u)if(u.hasOwnProperty(l)){var q=u[l];"style"===l?oe(R,q):"dangerouslySetInnerHTML"===l?(q=q?q.__html:void 0,null!=q&&je(R,q)):"children"===l?"string"===typeof q?("textarea"!==v||""!==q)&&ke(R,q):"number"===typeof q&&ke(R,""+q):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(ra.hasOwnProperty(l)?null!=q&&se(t,l):null!=q&&tc(R,l,q,A))}switch(k){case "input":Rb(p);
 Ac(p,m,!1);break;case "textarea":Rb(p);ee(p,m);break;case "option":null!=m.value&&p.setAttribute("value",""+uc(m.value));break;case "select":h=p;h.multiple=!!m.multiple;p=m.value;null!=p?ae(h,!!m.multiple,p,!1):null!=m.defaultValue&&ae(h,!!m.multiple,m.defaultValue,!0);break;default:"function"===typeof h.onClick&&(p.onclick=te)}(g=we(f,g))&&kh(b);b.stateNode=e}null!==b.ref&&(b.effectTag|=128)}else null===b.stateNode?x("166"):void 0;break;case 6:e&&null!=b.stateNode?oh(e,b,e.memoizedProps,g):("string"!==
@@ -266,4 +266,4 @@ function Ti(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:nu
 var Vi={createPortal:Ti,findDOMNode:function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;void 0===b&&("function"===typeof a.render?x("188"):x("268",Object.keys(a)));a=hd(b);a=null===a?null:a.stateNode;return a},hydrate:function(a,b,c){Qi(b)?void 0:x("200");return Si(null,a,b,!0,c)},render:function(a,b,c){Qi(b)?void 0:x("200");return Si(null,a,b,!1,c)},unstable_renderSubtreeIntoContainer:function(a,b,c,d){Qi(c)?void 0:x("200");null==a||void 0===a._reactInternalFiber?
 x("38"):void 0;return Si(a,b,c,!1,d)},unmountComponentAtNode:function(a){Qi(a)?void 0:x("40");return a._reactRootContainer?(Hi(function(){Si(null,null,a,!1,function(){a._reactRootContainer=null})}),!0):!1},unstable_createPortal:function(){return Ti.apply(void 0,arguments)},unstable_batchedUpdates:Gi,unstable_interactiveUpdates:Ii,flushSync:function(a,b){W?x("187"):void 0;var c=X;X=!0;try{return ki(a,b)}finally{X=c,Yh(1073741823,!1)}},unstable_createRoot:Ui,unstable_flushControlled:function(a){var b=
 X;X=!0;try{ki(a)}finally{(X=b)||W||Yh(1073741823,!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[Ia,Ja,Ka,Ba.injectEventPluginsByName,pa,Qa,function(a){ya(a,Pa)},Eb,Fb,Dd,Da]}};function Ui(a,b){Qi(a)?void 0:x("299","unstable_createRoot");return new Pi(a,!0,null!=b&&!0===b.hydrate)}
-(function(a){var b=a.findFiberByHostInstance;return Te(n({},a,{overrideProps:null,currentDispatcherRef:Tb.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hd(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:Ha,bundleType:0,version:"16.8.3",rendererPackageName:"react-dom"});var Wi={default:Vi},Xi=Wi&&Vi||Wi;module.exports=Xi.default||Xi;
+(function(a){var b=a.findFiberByHostInstance;return Te(n({},a,{overrideProps:null,currentDispatcherRef:Tb.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hd(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:Ha,bundleType:0,version:"16.8.6",rendererPackageName:"react-dom"});var Wi={default:Vi},Xi=Wi&&Vi||Wi;module.exports=Xi.default||Xi;
diff --git a/node_modules/react-dom/cjs/react-dom-unstable-fire.profiling.min.js b/node_modules/react-dom/cjs/react-dom-unstable-fire.profiling.min.js
index d74ef607..4fff5623 100644
--- a/node_modules/react-dom/cjs/react-dom-unstable-fire.profiling.min.js
+++ b/node_modules/react-dom/cjs/react-dom-unstable-fire.profiling.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-unstable-fire.profiling.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -86,7 +86,7 @@ function D(a,b){if(!b)return null;var c=(Bd(a)?Fd:Gd).bind(null,a);b.addEventLis
 function Gd(a,b){if(Ed){var c=Qb(b);c=Ha(c);null===c||"number"!==typeof c.tag||2===hd(c)||(c=null);if(Cd.length){var d=Cd.pop();d.topLevelType=a;d.nativeEvent=b;d.targetInst=c;a=d}else a={topLevelType:a,nativeEvent:b,targetInst:c,ancestors:[]};try{Mb(Dd,a)}finally{a.topLevelType=null,a.nativeEvent=null,a.targetInst=null,a.ancestors.length=0,10>Cd.length&&Cd.push(a)}}}var Id={},Jd=0,Kd="_reactListenersID"+(""+Math.random()).slice(2);
 function Ld(a){Object.prototype.hasOwnProperty.call(a,Kd)||(a[Kd]=Jd++,Id[a[Kd]]={});return Id[a[Kd]]}function Md(a){a=a||("undefined"!==typeof document?document:void 0);if("undefined"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Nd(a){for(;a&&a.firstChild;)a=a.firstChild;return a}
 function Od(a,b){var c=Nd(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Nd(c)}}function Pd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Pd(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}
-function Qd(){for(var a=window,b=Md();b instanceof a.HTMLIFrameElement;){try{a=b.contentDocument.defaultView}catch(c){break}b=Md(a.document)}return b}function Rd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)}
+function Qd(){for(var a=window,b=Md();b instanceof a.HTMLIFrameElement;){try{var c="string"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Md(a.document)}return b}function Rd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)}
 function Sd(){var a=Qd();if(Rd(a)){if("selectionStart"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(U){b=null;break a}var f=0,g=-1,h=-1,k=0,l=0,m=a,p=null;b:for(;;){for(var w;;){m!==b||0!==d&&3!==m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=f+c);3===m.nodeType&&(f+=m.nodeValue.length);
 if(null===(w=m.firstChild))break;p=m;m=w}for(;;){if(m===a)break b;p===b&&++k===d&&(g=f);p===e&&++l===c&&(h=f);if(null!==(w=m.nextSibling))break;m=p;p=m.parentNode}m=w}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}
 function Td(a){var b=Qd(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Pd(c.ownerDocument.documentElement,c)){if(null!==d&&Rd(c))if(b=d.start,a=d.end,void 0===a&&(a=b),"selectionStart"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Od(c,f);var g=Od(c,
@@ -147,20 +147,20 @@ t.key?u:t.key),g=f(t,g,u),null===m?l=t:m.sibling=t,m=t);a&&q.forEach(function(a)
 k);k=k.sibling}f.type===$b?(d=cf(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=bf(f.type,f.key,f.props,null,a.mode,h),h.ref=Ff(a,d,f),h.return=a,a=h)}return g(a);case Zb:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=ff(f,a.mode,h);d.return=a;a=d}return g(a)}if("string"===typeof f||"number"===
 typeof f)return f=""+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=ef(f,a.mode,h),d.return=a,a=d),g(a);if(Ef(f))return Nb(a,d,f,h);if(kc(f))return La(a,d,f,h);l&&Gf(a,f);if("undefined"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type,x("152",h.displayName||h.name||"Component")}return c(a,d)}}var If=Hf(!0),Jf=Hf(!1),Kf={},M={current:Kf},Lf={current:Kf},Mf={current:Kf};function Nf(a){a===Kf?x("174"):void 0;return a}
 function Of(a,b){F(Mf,b,a);F(Lf,a,a);F(M,Kf,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:ke(null,"");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=ke(b,c)}E(M,a);F(M,b,a)}function Pf(a){E(M,a);E(Lf,a);E(Mf,a)}function Qf(a){Nf(Mf.current);var b=Nf(M.current);var c=ke(b,a.type);b!==c&&(F(Lf,a,a),F(M,c,a))}function Rf(a){Lf.current===a&&(E(M,a),E(Lf,a))}
-var Sf=0,Tf=2,Uf=4,Vf=8,Wf=16,Xf=32,Yf=64,Zf=128,$f=Wb.ReactCurrentDispatcher,ag=0,bg=null,N=null,O=null,cg=null,P=null,dg=null,eg=0,fg=null,gg=0,hg=!1,ig=null,jg=0;function kg(){x("307")}function lg(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!ed(a[c],b[c]))return!1;return!0}
+var Sf=0,Tf=2,Uf=4,Vf=8,Wf=16,Xf=32,Yf=64,Zf=128,$f=Wb.ReactCurrentDispatcher,ag=0,bg=null,N=null,O=null,cg=null,P=null,dg=null,eg=0,fg=null,gg=0,hg=!1,ig=null,jg=0;function kg(){x("321")}function lg(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!ed(a[c],b[c]))return!1;return!0}
 function mg(a,b,c,d,e,f){ag=f;bg=b;O=null!==a?a.memoizedState:null;$f.current=null===O?ng:og;b=c(d,e);if(hg){do hg=!1,jg+=1,O=null!==a?a.memoizedState:null,dg=cg,fg=P=N=null,$f.current=og,b=c(d,e);while(hg);ig=null;jg=0}$f.current=pg;a=bg;a.memoizedState=cg;a.expirationTime=eg;a.updateQueue=fg;a.effectTag|=gg;a=null!==N&&null!==N.next;ag=0;dg=P=cg=O=N=bg=null;eg=0;fg=null;gg=0;a?x("300"):void 0;return b}function qg(){$f.current=pg;ag=0;dg=P=cg=O=N=bg=null;eg=0;fg=null;gg=0;hg=!1;ig=null;jg=0}
 function rg(){var a={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};null===P?cg=P=a:P=P.next=a;return P}function sg(){if(null!==dg)P=dg,dg=P.next,N=O,O=null!==N?N.next:null;else{null===O?x("310"):void 0;N=O;var a={memoizedState:N.memoizedState,baseState:N.baseState,queue:N.queue,baseUpdate:N.baseUpdate,next:null};P=null===P?cg=a:P.next=a;O=N.next}return P}function tg(a,b){return"function"===typeof b?b(a):b}
-function ug(a){var b=sg(),c=b.queue;null===c?x("311"):void 0;if(0<jg){var d=c.dispatch;if(null!==ig){var e=ig.get(c);if(void 0!==e){ig.delete(c);var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);ed(f,b.memoizedState)||(vg=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=f);c.eagerReducer=a;c.eagerState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==d){var h=e=null,
-k=d,l=!1;do{var m=k.expirationTime;m<ag?(l||(l=!0,h=g,e=f),m>eg&&(eg=m)):f=k.eagerReducer===a?k.eagerState:a(f,k.action);g=k;k=k.next}while(null!==k&&k!==d);l||(h=g,e=f);ed(f,b.memoizedState)||(vg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.eagerReducer=a;c.eagerState=f}return[b.memoizedState,c.dispatch]}
+function ug(a){var b=sg(),c=b.queue;null===c?x("311"):void 0;c.lastRenderedReducer=a;if(0<jg){var d=c.dispatch;if(null!==ig){var e=ig.get(c);if(void 0!==e){ig.delete(c);var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);ed(f,b.memoizedState)||(vg=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=f);c.lastRenderedState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==
+d){var h=e=null,k=d,l=!1;do{var m=k.expirationTime;m<ag?(l||(l=!0,h=g,e=f),m>eg&&(eg=m)):f=k.eagerReducer===a?k.eagerState:a(f,k.action);g=k;k=k.next}while(null!==k&&k!==d);l||(h=g,e=f);ed(f,b.memoizedState)||(vg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}
 function wg(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===fg?(fg={lastEffect:null},fg.lastEffect=a.next=a):(b=fg.lastEffect,null===b?fg.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,fg.lastEffect=a));return a}function xg(a,b,c,d){var e=rg();gg|=a;e.memoizedState=wg(b,c,void 0,void 0===d?null:d)}
 function yg(a,b,c,d){var e=sg();d=void 0===d?null:d;var f=void 0;if(null!==N){var g=N.memoizedState;f=g.destroy;if(null!==d&&lg(d,g.deps)){wg(Sf,c,f,d);return}}gg|=a;e.memoizedState=wg(b,c,f,d)}function zg(a,b){if("function"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ag(){}
 function Bg(a,b,c){25>jg?void 0:x("301");var d=a.alternate;if(a===bg||null!==d&&d===bg)if(hg=!0,a={expirationTime:ag,action:c,eagerReducer:null,eagerState:null,next:null},null===ig&&(ig=new Map),c=ig.get(b),void 0===c)ig.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{tf();var e=qf();e=rf(e,a);var f={expirationTime:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===
-d||0===d.expirationTime)&&(d=b.eagerReducer,null!==d))try{var k=b.eagerState,l=d(k,c);f.eagerReducer=d;f.eagerState=l;if(ed(l,k))return}catch(m){}finally{}vf(a,e)}}
+d||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var k=b.lastRenderedState,l=d(k,c);f.eagerReducer=d;f.eagerState=l;if(ed(l,k))return}catch(m){}finally{}vf(a,e)}}
 var pg={readContext:L,useCallback:kg,useContext:kg,useEffect:kg,useImperativeHandle:kg,useLayoutEffect:kg,useMemo:kg,useReducer:kg,useRef:kg,useState:kg,useDebugValue:kg},ng={readContext:L,useCallback:function(a,b){rg().memoizedState=[a,void 0===b?null:b];return a},useContext:L,useEffect:function(a,b){return xg(516,Zf|Yf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return xg(4,Uf|Xf,zg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return xg(4,Uf|Xf,a,b)},
-useMemo:function(a,b){var c=rg();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=rg();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,eagerReducer:a,eagerState:b};a=a.dispatch=Bg.bind(null,bg,a);return[d.memoizedState,a]},useRef:function(a){var b=rg();a={current:a};return b.memoizedState=a},useState:function(a){var b=rg();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,eagerReducer:tg,
-eagerState:a};a=a.dispatch=Bg.bind(null,bg,a);return[b.memoizedState,a]},useDebugValue:Ag},og={readContext:L,useCallback:function(a,b){var c=sg();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&lg(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:L,useEffect:function(a,b){return yg(516,Zf|Yf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return yg(4,Uf|Xf,zg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return yg(4,Uf|Xf,a,b)},
-useMemo:function(a,b){var c=sg();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&lg(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:ug,useRef:function(){return sg().memoizedState},useState:function(a){return ug(tg,a)},useDebugValue:Ag},Cg=0,Dg=-1;function Eg(a){Dg=r.unstable_now();0>a.actualStartTime&&(a.actualStartTime=r.unstable_now())}function Fg(a,b){if(0<=Dg){var c=r.unstable_now()-Dg;a.actualDuration+=c;b&&(a.selfBaseDuration=c);Dg=-1}}
-var Gg=null,Hg=null,Ig=!1;function Jg(a,b){var c=J(5,null,null,0);c.elementType="DELETED";c.type="DELETED";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}
+useMemo:function(a,b){var c=rg();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=rg();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Bg.bind(null,bg,a);return[d.memoizedState,a]},useRef:function(a){var b=rg();a={current:a};return b.memoizedState=a},useState:function(a){var b=rg();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,
+lastRenderedReducer:tg,lastRenderedState:a};a=a.dispatch=Bg.bind(null,bg,a);return[b.memoizedState,a]},useDebugValue:Ag},og={readContext:L,useCallback:function(a,b){var c=sg();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&lg(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:L,useEffect:function(a,b){return yg(516,Zf|Yf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return yg(4,Uf|Xf,zg.bind(null,b,a),c)},useLayoutEffect:function(a,
+b){return yg(4,Uf|Xf,a,b)},useMemo:function(a,b){var c=sg();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&lg(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:ug,useRef:function(){return sg().memoizedState},useState:function(a){return ug(tg,a)},useDebugValue:Ag},Cg=0,Dg=-1;function Eg(a){Dg=r.unstable_now();0>a.actualStartTime&&(a.actualStartTime=r.unstable_now())}
+function Fg(a,b){if(0<=Dg){var c=r.unstable_now()-Dg;a.actualDuration+=c;b&&(a.selfBaseDuration=c);Dg=-1}}var Gg=null,Hg=null,Ig=!1;function Jg(a,b){var c=J(5,null,null,0);c.elementType="DELETED";c.type="DELETED";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}
 function Kg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}function Lg(a){if(Ig){var b=Hg;if(b){var c=b;if(!Kg(a,b)){b=Ge(c);if(!b||!Kg(a,b)){a.effectTag|=2;Ig=!1;Gg=a;return}Jg(Gg,c)}Gg=a;Hg=He(b)}else a.effectTag|=2,Ig=!1,Gg=a}}
 function Mg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;Gg=a}function Ng(a){if(a!==Gg)return!1;if(!Ig)return Mg(a),Ig=!0,!1;var b=a.type;if(5!==a.tag||"head"!==b&&"body"!==b&&!Ae(b,a.memoizedProps))for(b=Hg;b;)Jg(a,b),b=Ge(b);Mg(a);Hg=Gg?Ge(a.stateNode):null;return!0}function Og(){Hg=Gg=null;Ig=!1}var Pg=Wb.ReactCurrentOwner,vg=!1;function Q(a,b,c,d){b.child=null===a?Jf(b,null,c,d):If(b,a.child,c,d)}
 function Qg(a,b,c,d,e){c=c.render;var f=b.ref;Rg(b,e);d=mg(a,b,c,d,f,e);if(null!==a&&!vg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Sg(a,b,e);b.effectTag|=1;Q(a,b,d,e);return b.child}
@@ -232,14 +232,15 @@ a.__count)try{l.onInteractionScheduledWorkCompleted(a)}catch(Nb){X||(X=!0,li=Nb)
 function mi(a){for(;;){var b=a.alternate,c=a.return,d=a.sibling;if(0===(a.effectTag&1024)){R=a;a.mode&4&&Eg(a);a:{var e=b;b=a;var f=S;var g=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:I(b.type)&&Ne(b);break;case 3:Pf(b);Oe(b);g=b.stateNode;g.pendingContext&&(g.context=g.pendingContext,g.pendingContext=null);if(null===e||null===e.child)Ng(b),b.effectTag&=-3;vh(b);break;case 5:Rf(b);var h=Nf(Mf.current);f=b.type;if(null!==e&&null!=b.stateNode)wh(e,b,f,g,h),e.ref!==
 b.ref&&(b.effectTag|=128);else if(g){var k=Nf(M.current);if(Ng(b)){g=b;e=g.stateNode;var l=g.type,m=g.memoizedProps,p=h;e[Fa]=g;e[Ga]=m;f=void 0;h=l;switch(h){case "iframe":case "object":D("load",e);break;case "video":case "audio":for(l=0;l<bb.length;l++)D(bb[l],e);break;case "source":D("error",e);break;case "img":case "image":case "link":D("error",e);D("load",e);break;case "form":D("reset",e);D("submit",e);break;case "details":D("toggle",e);break;case "input":zc(e,m);D("invalid",e);ve(p,"onChange");
 break;case "select":e._wrapperState={wasMultiple:!!m.multiple};D("invalid",e);ve(p,"onChange");break;case "textarea":fe(e,m),D("invalid",e),ve(p,"onChange")}te(h,m);l=null;for(f in m)m.hasOwnProperty(f)&&(k=m[f],"children"===f?"string"===typeof k?e.textContent!==k&&(l=["children",k]):"number"===typeof k&&e.textContent!==""+k&&(l=["children",""+k]):ra.hasOwnProperty(f)&&null!=k&&ve(p,f));switch(h){case "input":Ub(e);Dc(e,m,!0);break;case "textarea":Ub(e);he(e,m);break;case "select":case "option":break;
-default:"function"===typeof m.onClick&&(e.onclick=we)}f=l;g.updateQueue=f;g=null!==f?!0:!1;g&&th(b)}else{m=b;e=f;p=g;l=9===h.nodeType?h:h.ownerDocument;k===ie.html&&(k=je(e));k===ie.html?"script"===e?(e=l.createElement("div"),e.innerHTML="<script>\x3c/script>",l=e.removeChild(e.firstChild)):"string"===typeof p.is?l=l.createElement(e,{is:p.is}):(l=l.createElement(e),"select"===e&&p.multiple&&(l.multiple=!0)):l=l.createElementNS(k,e);e=l;e[Fa]=m;e[Ga]=g;uh(e,b,!1,!1);p=e;l=f;m=g;var w=h,U=ue(l,m);switch(l){case "iframe":case "object":D("load",
-p);h=m;break;case "video":case "audio":for(h=0;h<bb.length;h++)D(bb[h],p);h=m;break;case "source":D("error",p);h=m;break;case "img":case "image":case "link":D("error",p);D("load",p);h=m;break;case "form":D("reset",p);D("submit",p);h=m;break;case "details":D("toggle",p);h=m;break;case "input":zc(p,m);h=yc(p,m);D("invalid",p);ve(w,"onChange");break;case "option":h=ce(p,m);break;case "select":p._wrapperState={wasMultiple:!!m.multiple};h=n({},m,{value:void 0});D("invalid",p);ve(w,"onChange");break;case "textarea":fe(p,
-m);h=ee(p,m);D("invalid",p);ve(w,"onChange");break;default:h=m}te(l,h);k=void 0;var Nb=l,La=p,u=h;for(k in u)if(u.hasOwnProperty(k)){var q=u[k];"style"===k?re(La,q):"dangerouslySetInnerHTML"===k?(q=q?q.__html:void 0,null!=q&&me(La,q)):"children"===k?"string"===typeof q?("textarea"!==Nb||""!==q)&&ne(La,q):"number"===typeof q&&ne(La,""+q):"suppressContentEditableWarning"!==k&&"suppressHydrationWarning"!==k&&"autoFocus"!==k&&(ra.hasOwnProperty(k)?null!=q&&ve(w,k):null!=q&&wc(La,k,q,U))}switch(l){case "input":Ub(p);
-Dc(p,m,!1);break;case "textarea":Ub(p);he(p,m);break;case "option":null!=m.value&&p.setAttribute("value",""+xc(m.value));break;case "select":h=p;h.multiple=!!m.multiple;p=m.value;null!=p?de(h,!!m.multiple,p,!1):null!=m.defaultValue&&de(h,!!m.multiple,m.defaultValue,!0);break;default:"function"===typeof h.onClick&&(p.onclick=we)}(g=ze(f,g))&&th(b);b.stateNode=e}null!==b.ref&&(b.effectTag|=128)}else null===b.stateNode?x("166"):void 0;break;case 6:e&&null!=b.stateNode?xh(e,b,e.memoizedProps,g):("string"!==
-typeof g&&(null===b.stateNode?x("166"):void 0),e=Nf(Mf.current),Nf(M.current),Ng(b)?(g=b,f=g.stateNode,e=g.memoizedProps,f[Fa]=g,(g=f.nodeValue!==e)&&th(b)):(f=b,g=(9===e.nodeType?e:e.ownerDocument).createTextNode(g),g[Fa]=b,f.stateNode=g));break;case 11:break;case 13:g=b.memoizedState;if(0!==(b.effectTag&64)){b.expirationTime=f;R=b;break a}g=null!==g;f=null!==e&&null!==e.memoizedState;null!==e&&!g&&f&&(e=e.child.sibling,null!==e&&(h=b.firstEffect,null!==h?(b.firstEffect=e,e.nextEffect=h):(b.firstEffect=
-b.lastEffect=e,e.nextEffect=null),e.effectTag=8));if(g||f)b.effectTag|=4;break;case 7:break;case 8:break;case 12:break;case 4:Pf(b);vh(b);break;case 10:hh(b);break;case 9:break;case 14:break;case 17:I(b.type)&&Ne(b);break;case 18:break;default:x("156")}R=null}a.mode&4&&Fg(a,!1);b=a;if(1===S||1!==b.childExpirationTime){g=0;if(b.mode&4){f=b.actualDuration;e=b.selfBaseDuration;h=null===b.alternate||b.child!==b.alternate.child;for(m=b.child;null!==m;)p=m.expirationTime,l=m.childExpirationTime,p>g&&(g=
-p),l>g&&(g=l),h&&(f+=m.actualDuration),e+=m.treeBaseDuration,m=m.sibling;b.actualDuration=f;b.treeBaseDuration=e}else for(f=b.child;null!==f;)e=f.expirationTime,h=f.childExpirationTime,e>g&&(g=e),h>g&&(g=h),f=f.sibling;b.childExpirationTime=g}if(null!==R)return R;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1<a.effectTag&&(null!==c.lastEffect?c.lastEffect.nextEffect=
-a:c.firstEffect=a,c.lastEffect=a))}else{if(a.mode&4){Fg(a,!1);b=a.actualDuration;for(g=a.child;null!==g;)b+=g.actualDuration,g=g.sibling;a.actualDuration=b}a=Th(a,S);if(null!==a)return a.effectTag&=1023,a;null!==c&&(c.firstEffect=c.lastEffect=null,c.effectTag|=1024)}if(null!==d)return d;if(null!==c)a=c;else break}return null}function ni(a){var b=a.alternate;a.mode&4&&Eg(a);b=bh(b,a,S);a.memoizedProps=a.pendingProps;a.mode&4&&Fg(a,!0);null===b&&(b=mi(a));Vh.current=null;return b}
+default:"function"===typeof m.onClick&&(e.onclick=we)}f=l;g.updateQueue=f;g=null!==f?!0:!1;g&&th(b)}else{m=b;p=f;e=g;l=9===h.nodeType?h:h.ownerDocument;k===ie.html&&(k=je(p));k===ie.html?"script"===p?(e=l.createElement("div"),e.innerHTML="<script>\x3c/script>",l=e.removeChild(e.firstChild)):"string"===typeof e.is?l=l.createElement(p,{is:e.is}):(l=l.createElement(p),"select"===p&&(p=l,e.multiple?p.multiple=!0:e.size&&(p.size=e.size))):l=l.createElementNS(k,p);e=l;e[Fa]=m;e[Ga]=g;uh(e,b,!1,!1);p=e;
+l=f;m=g;var w=h,U=ue(l,m);switch(l){case "iframe":case "object":D("load",p);h=m;break;case "video":case "audio":for(h=0;h<bb.length;h++)D(bb[h],p);h=m;break;case "source":D("error",p);h=m;break;case "img":case "image":case "link":D("error",p);D("load",p);h=m;break;case "form":D("reset",p);D("submit",p);h=m;break;case "details":D("toggle",p);h=m;break;case "input":zc(p,m);h=yc(p,m);D("invalid",p);ve(w,"onChange");break;case "option":h=ce(p,m);break;case "select":p._wrapperState={wasMultiple:!!m.multiple};
+h=n({},m,{value:void 0});D("invalid",p);ve(w,"onChange");break;case "textarea":fe(p,m);h=ee(p,m);D("invalid",p);ve(w,"onChange");break;default:h=m}te(l,h);k=void 0;var Nb=l,La=p,u=h;for(k in u)if(u.hasOwnProperty(k)){var q=u[k];"style"===k?re(La,q):"dangerouslySetInnerHTML"===k?(q=q?q.__html:void 0,null!=q&&me(La,q)):"children"===k?"string"===typeof q?("textarea"!==Nb||""!==q)&&ne(La,q):"number"===typeof q&&ne(La,""+q):"suppressContentEditableWarning"!==k&&"suppressHydrationWarning"!==k&&"autoFocus"!==
+k&&(ra.hasOwnProperty(k)?null!=q&&ve(w,k):null!=q&&wc(La,k,q,U))}switch(l){case "input":Ub(p);Dc(p,m,!1);break;case "textarea":Ub(p);he(p,m);break;case "option":null!=m.value&&p.setAttribute("value",""+xc(m.value));break;case "select":h=p;h.multiple=!!m.multiple;p=m.value;null!=p?de(h,!!m.multiple,p,!1):null!=m.defaultValue&&de(h,!!m.multiple,m.defaultValue,!0);break;default:"function"===typeof h.onClick&&(p.onclick=we)}(g=ze(f,g))&&th(b);b.stateNode=e}null!==b.ref&&(b.effectTag|=128)}else null===
+b.stateNode?x("166"):void 0;break;case 6:e&&null!=b.stateNode?xh(e,b,e.memoizedProps,g):("string"!==typeof g&&(null===b.stateNode?x("166"):void 0),e=Nf(Mf.current),Nf(M.current),Ng(b)?(g=b,f=g.stateNode,e=g.memoizedProps,f[Fa]=g,(g=f.nodeValue!==e)&&th(b)):(f=b,g=(9===e.nodeType?e:e.ownerDocument).createTextNode(g),g[Fa]=b,f.stateNode=g));break;case 11:break;case 13:g=b.memoizedState;if(0!==(b.effectTag&64)){b.expirationTime=f;R=b;break a}g=null!==g;f=null!==e&&null!==e.memoizedState;null!==e&&!g&&
+f&&(e=e.child.sibling,null!==e&&(h=b.firstEffect,null!==h?(b.firstEffect=e,e.nextEffect=h):(b.firstEffect=b.lastEffect=e,e.nextEffect=null),e.effectTag=8));if(g||f)b.effectTag|=4;break;case 7:break;case 8:break;case 12:break;case 4:Pf(b);vh(b);break;case 10:hh(b);break;case 9:break;case 14:break;case 17:I(b.type)&&Ne(b);break;case 18:break;default:x("156")}R=null}a.mode&4&&Fg(a,!1);b=a;if(1===S||1!==b.childExpirationTime){g=0;if(b.mode&4){f=b.actualDuration;e=b.selfBaseDuration;h=null===b.alternate||
+b.child!==b.alternate.child;for(m=b.child;null!==m;)p=m.expirationTime,l=m.childExpirationTime,p>g&&(g=p),l>g&&(g=l),h&&(f+=m.actualDuration),e+=m.treeBaseDuration,m=m.sibling;b.actualDuration=f;b.treeBaseDuration=e}else for(f=b.child;null!==f;)e=f.expirationTime,h=f.childExpirationTime,e>g&&(g=e),h>g&&(g=h),f=f.sibling;b.childExpirationTime=g}if(null!==R)return R;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=
+a.firstEffect),c.lastEffect=a.lastEffect),1<a.effectTag&&(null!==c.lastEffect?c.lastEffect.nextEffect=a:c.firstEffect=a,c.lastEffect=a))}else{if(a.mode&4){Fg(a,!1);b=a.actualDuration;for(g=a.child;null!==g;)b+=g.actualDuration,g=g.sibling;a.actualDuration=b}a=Th(a,S);if(null!==a)return a.effectTag&=1023,a;null!==c&&(c.firstEffect=c.lastEffect=null,c.effectTag|=1024)}if(null!==d)return d;if(null!==c)a=c;else break}return null}
+function ni(a){var b=a.alternate;a.mode&4&&Eg(a);b=bh(b,a,S);a.memoizedProps=a.pendingProps;a.mode&4&&Fg(a,!0);null===b&&(b=mi(a));Vh.current=null;return b}
 function oi(a,b){Xh?x("243"):void 0;tf();Xh=!0;var c=Uh.current;Uh.current=pg;var d=a.nextExpirationTimeToWorkOn;if(d!==S||a!==Yh||null===R){ci();Yh=a;S=d;R=af(Yh.current,null,S);a.pendingCommitExpirationTime=0;var e=new Set;a.pendingInteractionMap.forEach(function(a,b){b>=d&&a.forEach(function(a){return e.add(a)})});a.memoizedInteractions=e;if(0<e.size){var f=v.__subscriberRef.current;if(null!==f){var g=1E3*d+a.interactionThreadID;try{f.onWorkStarted(e,g)}catch(l){X||(X=!0,li=l)}}}}f=null;f=v.__interactionsRef.current;
 v.__interactionsRef.current=a.memoizedInteractions;g=!1;do{try{if(b)for(;null!==R&&!pi();)R=ni(R);else for(;null!==R;)R=ni(R)}catch(l){if(gh=fh=eh=null,qg(),null===R)g=!0,Mh(l);else{R.mode&4&&Fg(R,!0);null===R?x("271"):void 0;var h=R,k=h.return;if(null===k)g=!0,Mh(l);else{Ph(a,k,h,l,S);R=mi(h);continue}}}break}while(1);v.__interactionsRef.current=f;Xh=!1;Uh.current=c;gh=fh=eh=null;qg();if(g)Yh=null,a.finishedWork=null;else if(null!==R)a.finishedWork=null;else{c=a.current.alternate;null===c?x("281"):
 void 0;Yh=null;if(Sh){if(kf(a,d)){lf(a,d);qi(a,c,d,a.expirationTime,-1);return}if(!a.didError&&b){a.didError=!0;b=a.nextExpirationTimeToWorkOn=d;f=a.expirationTime=1073741823;qi(a,c,b,f,-1);return}}b&&-1!==Rh?(lf(a,d),b=10*(1073741822-mf(a,d)),b<Rh&&(Rh=b),b=10*(1073741822-qf()),b=Rh-b,qi(a,c,d,a.expirationTime,0>b?0:b)):ri(a,c,d)}}
@@ -274,4 +275,4 @@ function cj(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:nu
 var ej={createPortal:cj,findDOMNode:function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;void 0===b&&("function"===typeof a.render?x("188"):x("268",Object.keys(a)));a=kd(b);a=null===a?null:a.stateNode;return a},hydrate:function(a,b,c){$i(b)?void 0:x("200");return bj(null,a,b,!0,c)},render:function(a,b,c){$i(b)?void 0:x("200");return bj(null,a,b,!1,c)},unstable_renderSubtreeIntoContainer:function(a,b,c,d){$i(c)?void 0:x("200");null==a||void 0===a._reactInternalFiber?
 x("38"):void 0;return bj(a,b,c,!1,d)},unmountComponentAtNode:function(a){$i(a)?void 0:x("40");return a._reactRootContainer?(Ri(function(){bj(null,null,a,!1,function(){a._reactRootContainer=null})}),!0):!1},unstable_createPortal:function(){return cj.apply(void 0,arguments)},unstable_batchedUpdates:Qi,unstable_interactiveUpdates:Si,flushSync:function(a,b){V?x("187"):void 0;var c=W;W=!0;try{return wi(a,b)}finally{W=c,ii(1073741823,!1)}},unstable_createRoot:dj,unstable_flushControlled:function(a){var b=
 W;W=!0;try{wi(a)}finally{(W=b)||V||ii(1073741823,!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[Ia,Ja,Ka,Ba.injectEventPluginsByName,pa,Ra,function(a){ya(a,Qa)},Gb,Hb,Gd,Da]}};function dj(a,b){$i(a)?void 0:x("299","unstable_createRoot");return new Zi(a,!0,null!=b&&!0===b.hydrate)}
-(function(a){var b=a.findFiberByHostInstance;return Xe(n({},a,{overrideProps:null,currentDispatcherRef:Wb.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=kd(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:Ha,bundleType:0,version:"16.8.3",rendererPackageName:"react-dom"});var fj={default:ej},gj=fj&&ej||fj;module.exports=gj.default||gj;
+(function(a){var b=a.findFiberByHostInstance;return Xe(n({},a,{overrideProps:null,currentDispatcherRef:Wb.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=kd(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:Ha,bundleType:0,version:"16.8.6",rendererPackageName:"react-dom"});var fj={default:ej},gj=fj&&ej||fj;module.exports=gj.default||gj;
diff --git a/node_modules/react-dom/cjs/react-dom-unstable-fizz.browser.development.js b/node_modules/react-dom/cjs/react-dom-unstable-fizz.browser.development.js
index 6874c6b3..409b01cd 100644
--- a/node_modules/react-dom/cjs/react-dom-unstable-fizz.browser.development.js
+++ b/node_modules/react-dom/cjs/react-dom-unstable-fizz.browser.development.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-unstable-fizz.browser.development.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/react-dom/cjs/react-dom-unstable-fizz.browser.production.min.js b/node_modules/react-dom/cjs/react-dom-unstable-fizz.browser.production.min.js
index 54c3ca3d..aae58d7c 100644
--- a/node_modules/react-dom/cjs/react-dom-unstable-fizz.browser.production.min.js
+++ b/node_modules/react-dom/cjs/react-dom-unstable-fizz.browser.production.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-unstable-fizz.browser.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/react-dom/cjs/react-dom-unstable-fizz.node.development.js b/node_modules/react-dom/cjs/react-dom-unstable-fizz.node.development.js
index bb5ad7f6..e7a9cc40 100644
--- a/node_modules/react-dom/cjs/react-dom-unstable-fizz.node.development.js
+++ b/node_modules/react-dom/cjs/react-dom-unstable-fizz.node.development.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-unstable-fizz.node.development.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/react-dom/cjs/react-dom-unstable-fizz.node.production.min.js b/node_modules/react-dom/cjs/react-dom-unstable-fizz.node.production.min.js
index a30edf67..09b26b25 100644
--- a/node_modules/react-dom/cjs/react-dom-unstable-fizz.node.production.min.js
+++ b/node_modules/react-dom/cjs/react-dom-unstable-fizz.node.production.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-unstable-fizz.node.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/react-dom/cjs/react-dom-unstable-native-dependencies.development.js b/node_modules/react-dom/cjs/react-dom-unstable-native-dependencies.development.js
index 28a3b540..0fc3886d 100644
--- a/node_modules/react-dom/cjs/react-dom-unstable-native-dependencies.development.js
+++ b/node_modules/react-dom/cjs/react-dom-unstable-native-dependencies.development.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-unstable-native-dependencies.development.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/react-dom/cjs/react-dom-unstable-native-dependencies.production.min.js b/node_modules/react-dom/cjs/react-dom-unstable-native-dependencies.production.min.js
index 8853b3a1..86914e07 100644
--- a/node_modules/react-dom/cjs/react-dom-unstable-native-dependencies.production.min.js
+++ b/node_modules/react-dom/cjs/react-dom-unstable-native-dependencies.production.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-unstable-native-dependencies.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/react-dom/cjs/react-dom.development.js b/node_modules/react-dom/cjs/react-dom.development.js
index 13bea1e8..6ea9a5c9 100644
--- a/node_modules/react-dom/cjs/react-dom.development.js
+++ b/node_modules/react-dom/cjs/react-dom.development.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom.development.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -5332,15 +5332,29 @@ function isInDocument(node) {
   return node && node.ownerDocument && containsNode(node.ownerDocument.documentElement, node);
 }
 
+function isSameOriginFrame(iframe) {
+  try {
+    // Accessing the contentDocument of a HTMLIframeElement can cause the browser
+    // to throw, e.g. if it has a cross-origin src attribute.
+    // Safari will show an error in the console when the access results in "Blocked a frame with origin". e.g:
+    // iframe.contentDocument.defaultView;
+    // A safety way is to access one of the cross origin properties: Window or Location
+    // Which might result in "SecurityError" DOM Exception and it is compatible to Safari.
+    // https://html.spec.whatwg.org/multipage/browsers.html#integration-with-idl
+
+    return typeof iframe.contentWindow.location.href === 'string';
+  } catch (err) {
+    return false;
+  }
+}
+
 function getActiveElementDeep() {
   var win = window;
   var element = getActiveElement();
   while (element instanceof win.HTMLIFrameElement) {
-    // Accessing the contentDocument of a HTMLIframeElement can cause the browser
-    // to throw, e.g. if it has a cross-origin src attribute
-    try {
-      win = element.contentDocument.defaultView;
-    } catch (e) {
+    if (isSameOriginFrame(element)) {
+      win = element.contentWindow;
+    } else {
       return element;
     }
     element = getActiveElement(win.document);
@@ -7630,14 +7644,25 @@ function createElement(type, props, rootContainerElement, parentNamespace) {
       // See discussion in https://github.com/facebook/react/pull/6896
       // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240
       domElement = ownerDocument.createElement(type);
-      // Normally attributes are assigned in `setInitialDOMProperties`, however the `multiple`
-      // attribute on `select`s needs to be added before `option`s are inserted. This prevents
-      // a bug where the `select` does not scroll to the correct option because singular
-      // `select` elements automatically pick the first item.
+      // Normally attributes are assigned in `setInitialDOMProperties`, however the `multiple` and `size`
+      // attributes on `select`s needs to be added before `option`s are inserted.
+      // This prevents:
+      // - a bug where the `select` does not scroll to the correct option because singular
+      //  `select` elements automatically pick the first item #13222
+      // - a bug where the `select` set the first item as selected despite the `size` attribute #14239
       // See https://github.com/facebook/react/issues/13222
-      if (type === 'select' && props.multiple) {
+      // and https://github.com/facebook/react/issues/14239
+      if (type === 'select') {
         var node = domElement;
-        node.multiple = true;
+        if (props.multiple) {
+          node.multiple = true;
+        } else if (props.size) {
+          // Setting a size greater than 1 causes a select to behave like `multiple=true`, where
+          // it is possible that no option is selected.
+          //
+          // This is only necessary when a select in "single selection mode".
+          node.size = props.size;
+        }
       }
     }
   } else {
@@ -10001,6 +10026,7 @@ function FiberNode(tag, pendingProps, key, mode) {
     this._debugSource = null;
     this._debugOwner = null;
     this._debugIsCurrentlyTiming = false;
+    this._debugHookTypes = null;
     if (!hasBadMapPolyfill && typeof Object.preventExtensions === 'function') {
       Object.preventExtensions(this);
     }
@@ -10068,6 +10094,7 @@ function createWorkInProgress(current, pendingProps, expirationTime) {
       workInProgress._debugID = current._debugID;
       workInProgress._debugSource = current._debugSource;
       workInProgress._debugOwner = current._debugOwner;
+      workInProgress._debugHookTypes = current._debugHookTypes;
     }
 
     workInProgress.alternate = current;
@@ -10335,6 +10362,7 @@ function assignFiberPropertiesInDEV(target, source) {
   target._debugSource = source._debugSource;
   target._debugOwner = source._debugOwner;
   target._debugIsCurrentlyTiming = source._debugIsCurrentlyTiming;
+  target._debugHookTypes = source._debugHookTypes;
   return target;
 }
 
@@ -11286,14 +11314,35 @@ function constructClassInstance(workInProgress, ctor, props, renderExpirationTim
   var unmaskedContext = emptyContextObject;
   var context = null;
   var contextType = ctor.contextType;
-  if (typeof contextType === 'object' && contextType !== null) {
-    {
-      if (contextType.$$typeof !== REACT_CONTEXT_TYPE && !didWarnAboutInvalidateContextType.has(ctor)) {
+
+  {
+    if ('contextType' in ctor) {
+      var isValid =
+      // Allow null for conditional declaration
+      contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a <Context.Consumer>
+
+      if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) {
         didWarnAboutInvalidateContextType.add(ctor);
-        warningWithoutStack$1(false, '%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext(). ' + 'Did you accidentally pass the Context.Provider instead?', getComponentName(ctor) || 'Component');
+
+        var addendum = '';
+        if (contextType === undefined) {
+          addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.';
+        } else if (typeof contextType !== 'object') {
+          addendum = ' However, it is set to a ' + typeof contextType + '.';
+        } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {
+          addendum = ' Did you accidentally pass the Context.Provider instead?';
+        } else if (contextType._context !== undefined) {
+          // <Context.Consumer>
+          addendum = ' Did you accidentally pass the Context.Consumer instead?';
+        } else {
+          addendum = ' However, it is set to an object with keys {' + Object.keys(contextType).join(', ') + '}.';
+        }
+        warningWithoutStack$1(false, '%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext().%s', getComponentName(ctor) || 'Component', addendum);
       }
     }
+  }
 
+  if (typeof contextType === 'object' && contextType !== null) {
     context = readContext(contextType);
   } else {
     unmaskedContext = getUnmaskedContext(workInProgress, ctor, true);
@@ -12720,7 +12769,6 @@ var currentlyRenderingFiber$1 = null;
 // current hook list is the list that belongs to the current fiber. The
 // work-in-progress hook list is a new list that will be added to the
 // work-in-progress fiber.
-var firstCurrentHook = null;
 var currentHook = null;
 var nextCurrentHook = null;
 var firstWorkInProgressHook = null;
@@ -12750,45 +12798,73 @@ var RE_RENDER_LIMIT = 25;
 // In DEV, this is the name of the currently executing primitive hook
 var currentHookNameInDev = null;
 
-function warnOnHookMismatchInDev() {
+// In DEV, this list ensures that hooks are called in the same order between renders.
+// The list stores the order of hooks used during the initial render (mount).
+// Subsequent renders (updates) reference this list.
+var hookTypesDev = null;
+var hookTypesUpdateIndexDev = -1;
+
+function mountHookTypesDev() {
+  {
+    var hookName = currentHookNameInDev;
+
+    if (hookTypesDev === null) {
+      hookTypesDev = [hookName];
+    } else {
+      hookTypesDev.push(hookName);
+    }
+  }
+}
+
+function updateHookTypesDev() {
+  {
+    var hookName = currentHookNameInDev;
+
+    if (hookTypesDev !== null) {
+      hookTypesUpdateIndexDev++;
+      if (hookTypesDev[hookTypesUpdateIndexDev] !== hookName) {
+        warnOnHookMismatchInDev(hookName);
+      }
+    }
+  }
+}
+
+function warnOnHookMismatchInDev(currentHookName) {
   {
     var componentName = getComponentName(currentlyRenderingFiber$1.type);
     if (!didWarnAboutMismatchedHooksForComponent.has(componentName)) {
       didWarnAboutMismatchedHooksForComponent.add(componentName);
 
-      var secondColumnStart = 22;
+      if (hookTypesDev !== null) {
+        var table = '';
 
-      var table = '';
-      var prevHook = firstCurrentHook;
-      var nextHook = firstWorkInProgressHook;
-      var n = 1;
-      while (prevHook !== null && nextHook !== null) {
-        var oldHookName = prevHook._debugType;
-        var newHookName = nextHook._debugType;
+        var secondColumnStart = 30;
 
-        var row = n + '. ' + oldHookName;
+        for (var i = 0; i <= hookTypesUpdateIndexDev; i++) {
+          var oldHookName = hookTypesDev[i];
+          var newHookName = i === hookTypesUpdateIndexDev ? currentHookName : oldHookName;
 
-        // Extra space so second column lines up
-        // lol @ IE not supporting String#repeat
-        while (row.length < secondColumnStart) {
-          row += ' ';
-        }
+          var row = i + 1 + '. ' + oldHookName;
+
+          // Extra space so second column lines up
+          // lol @ IE not supporting String#repeat
+          while (row.length < secondColumnStart) {
+            row += ' ';
+          }
 
-        row += newHookName + '\n';
+          row += newHookName + '\n';
 
-        table += row;
-        prevHook = prevHook.next;
-        nextHook = nextHook.next;
-        n++;
-      }
+          table += row;
+        }
 
-      warning$1(false, 'React has detected a change in the order of Hooks called by %s. ' + 'This will lead to bugs and errors if not fixed. ' + 'For more information, read the Rules of Hooks: https://fb.me/rules-of-hooks\n\n' + '   Previous render    Next render\n' + '   -------------------------------\n' + '%s' + '   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n', componentName, table);
+        warning$1(false, 'React has detected a change in the order of Hooks called by %s. ' + 'This will lead to bugs and errors if not fixed. ' + 'For more information, read the Rules of Hooks: https://fb.me/rules-of-hooks\n\n' + '   Previous render            Next render\n' + '   ------------------------------------------------------\n' + '%s' + '   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n', componentName, table);
+      }
     }
   }
 }
 
 function throwInvalidHookError() {
-  invariant(false, 'Hooks can only be called inside the body of a function component. (https://fb.me/react-invalid-hook-call)');
+  invariant(false, 'Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.');
 }
 
 function areHookInputsEqual(nextDeps, prevDeps) {
@@ -12818,7 +12894,12 @@ function areHookInputsEqual(nextDeps, prevDeps) {
 function renderWithHooks(current, workInProgress, Component, props, refOrContext, nextRenderExpirationTime) {
   renderExpirationTime = nextRenderExpirationTime;
   currentlyRenderingFiber$1 = workInProgress;
-  firstCurrentHook = nextCurrentHook = current !== null ? current.memoizedState : null;
+  nextCurrentHook = current !== null ? current.memoizedState : null;
+
+  {
+    hookTypesDev = current !== null ? current._debugHookTypes : null;
+    hookTypesUpdateIndexDev = -1;
+  }
 
   // The following should have already been reset
   // currentHook = null;
@@ -12832,8 +12913,26 @@ function renderWithHooks(current, workInProgress, Component, props, refOrContext
   // numberOfReRenders = 0;
   // sideEffectTag = 0;
 
+  // TODO Warn if no hooks are used at all during mount, then some are used during update.
+  // Currently we will identify the update render as a mount because nextCurrentHook === null.
+  // This is tricky because it's valid for certain types of components (e.g. React.lazy)
+
+  // Using nextCurrentHook to differentiate between mount/update only works if at least one stateful hook is used.
+  // Non-stateful hooks (e.g. context) don't get added to memoizedState,
+  // so nextCurrentHook would be null during updates and mounts.
   {
-    ReactCurrentDispatcher$1.current = nextCurrentHook === null ? HooksDispatcherOnMountInDEV : HooksDispatcherOnUpdateInDEV;
+    if (nextCurrentHook !== null) {
+      ReactCurrentDispatcher$1.current = HooksDispatcherOnUpdateInDEV;
+    } else if (hookTypesDev !== null) {
+      // This dispatcher handles an edge case where a component is updating,
+      // but no stateful hooks have been used.
+      // We want to match the production code behavior (which will use HooksDispatcherOnMount),
+      // but with the extra DEV validation to ensure hooks ordering hasn't changed.
+      // This dispatcher does that.
+      ReactCurrentDispatcher$1.current = HooksDispatcherOnMountWithHookTypesInDEV;
+    } else {
+      ReactCurrentDispatcher$1.current = HooksDispatcherOnMountInDEV;
+    }
   }
 
   var children = Component(props, refOrContext);
@@ -12844,13 +12943,18 @@ function renderWithHooks(current, workInProgress, Component, props, refOrContext
       numberOfReRenders += 1;
 
       // Start over from the beginning of the list
-      firstCurrentHook = nextCurrentHook = current !== null ? current.memoizedState : null;
+      nextCurrentHook = current !== null ? current.memoizedState : null;
       nextWorkInProgressHook = firstWorkInProgressHook;
 
       currentHook = null;
       workInProgressHook = null;
       componentUpdateQueue = null;
 
+      {
+        // Also validate hook order for cascading updates.
+        hookTypesUpdateIndexDev = -1;
+      }
+
       ReactCurrentDispatcher$1.current = HooksDispatcherOnUpdateInDEV;
 
       children = Component(props, refOrContext);
@@ -12860,10 +12964,6 @@ function renderWithHooks(current, workInProgress, Component, props, refOrContext
     numberOfReRenders = 0;
   }
 
-  {
-    currentHookNameInDev = null;
-  }
-
   // We can assume the previous dispatcher is always this one, since we set it
   // at the beginning of the render phase and there's no re-entrancy.
   ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;
@@ -12875,18 +12975,29 @@ function renderWithHooks(current, workInProgress, Component, props, refOrContext
   renderedWork.updateQueue = componentUpdateQueue;
   renderedWork.effectTag |= sideEffectTag;
 
+  {
+    renderedWork._debugHookTypes = hookTypesDev;
+  }
+
+  // This check uses currentHook so that it works the same in DEV and prod bundles.
+  // hookTypesDev could catch more cases (e.g. context) but only in DEV bundles.
   var didRenderTooFewHooks = currentHook !== null && currentHook.next !== null;
 
   renderExpirationTime = NoWork;
   currentlyRenderingFiber$1 = null;
 
-  firstCurrentHook = null;
   currentHook = null;
   nextCurrentHook = null;
   firstWorkInProgressHook = null;
   workInProgressHook = null;
   nextWorkInProgressHook = null;
 
+  {
+    currentHookNameInDev = null;
+    hookTypesDev = null;
+    hookTypesUpdateIndexDev = -1;
+  }
+
   remainingExpirationTime = NoWork;
   componentUpdateQueue = null;
   sideEffectTag = 0;
@@ -12920,21 +13031,23 @@ function resetHooks() {
   renderExpirationTime = NoWork;
   currentlyRenderingFiber$1 = null;
 
-  firstCurrentHook = null;
   currentHook = null;
   nextCurrentHook = null;
   firstWorkInProgressHook = null;
   workInProgressHook = null;
   nextWorkInProgressHook = null;
 
-  remainingExpirationTime = NoWork;
-  componentUpdateQueue = null;
-  sideEffectTag = 0;
-
   {
+    hookTypesDev = null;
+    hookTypesUpdateIndexDev = -1;
+
     currentHookNameInDev = null;
   }
 
+  remainingExpirationTime = NoWork;
+  componentUpdateQueue = null;
+  sideEffectTag = 0;
+
   didScheduleRenderPhaseUpdate = false;
   renderPhaseUpdates = null;
   numberOfReRenders = 0;
@@ -12951,9 +13064,6 @@ function mountWorkInProgressHook() {
     next: null
   };
 
-  {
-    hook._debugType = currentHookNameInDev;
-  }
   if (workInProgressHook === null) {
     // This is the first hook in the list
     firstWorkInProgressHook = workInProgressHook = hook;
@@ -13000,13 +13110,6 @@ function updateWorkInProgressHook() {
       workInProgressHook = workInProgressHook.next = newHook;
     }
     nextCurrentHook = currentHook.next;
-
-    {
-      newHook._debugType = currentHookNameInDev;
-      if (currentHookNameInDev !== currentHook._debugType) {
-        warnOnHookMismatchInDev();
-      }
-    }
   }
   return workInProgressHook;
 }
@@ -13021,20 +13124,6 @@ function basicStateReducer(state, action) {
   return typeof action === 'function' ? action(state) : action;
 }
 
-function mountContext(context, observedBits) {
-  {
-    mountWorkInProgressHook();
-  }
-  return readContext(context, observedBits);
-}
-
-function updateContext(context, observedBits) {
-  {
-    updateWorkInProgressHook();
-  }
-  return readContext(context, observedBits);
-}
-
 function mountReducer(reducer, initialArg, init) {
   var hook = mountWorkInProgressHook();
   var initialState = void 0;
@@ -13047,8 +13136,8 @@ function mountReducer(reducer, initialArg, init) {
   var queue = hook.queue = {
     last: null,
     dispatch: null,
-    eagerReducer: reducer,
-    eagerState: initialState
+    lastRenderedReducer: reducer,
+    lastRenderedState: initialState
   };
   var dispatch = queue.dispatch = dispatchAction.bind(null,
   // Flow doesn't know this is non-null, but we do.
@@ -13061,6 +13150,8 @@ function updateReducer(reducer, initialArg, init) {
   var queue = hook.queue;
   !(queue !== null) ? invariant(false, 'Should have a queue. This is likely a bug in React. Please file an issue.') : void 0;
 
+  queue.lastRenderedReducer = reducer;
+
   if (numberOfReRenders > 0) {
     // This is a re-render. Apply the new render phase updates to the previous
     var _dispatch = queue.dispatch;
@@ -13095,8 +13186,7 @@ function updateReducer(reducer, initialArg, init) {
           hook.baseState = newState;
         }
 
-        queue.eagerReducer = reducer;
-        queue.eagerState = newState;
+        queue.lastRenderedState = newState;
 
         return [newState, _dispatch];
       }
@@ -13175,8 +13265,7 @@ function updateReducer(reducer, initialArg, init) {
     hook.baseUpdate = newBaseUpdate;
     hook.baseState = newBaseState;
 
-    queue.eagerReducer = reducer;
-    queue.eagerState = _newState;
+    queue.lastRenderedState = _newState;
   }
 
   var dispatch = queue.dispatch;
@@ -13192,8 +13281,8 @@ function mountState(initialState) {
   var queue = hook.queue = {
     last: null,
     dispatch: null,
-    eagerReducer: basicStateReducer,
-    eagerState: initialState
+    lastRenderedReducer: basicStateReducer,
+    lastRenderedState: initialState
   };
   var dispatch = queue.dispatch = dispatchAction.bind(null,
   // Flow doesn't know this is non-null, but we do.
@@ -13470,21 +13559,21 @@ function dispatchAction(fiber, queue, action) {
       // The queue is currently empty, which means we can eagerly compute the
       // next state before entering the render phase. If the new state is the
       // same as the current state, we may be able to bail out entirely.
-      var _eagerReducer = queue.eagerReducer;
-      if (_eagerReducer !== null) {
+      var _lastRenderedReducer = queue.lastRenderedReducer;
+      if (_lastRenderedReducer !== null) {
         var prevDispatcher = void 0;
         {
           prevDispatcher = ReactCurrentDispatcher$1.current;
           ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
         }
         try {
-          var currentState = queue.eagerState;
-          var _eagerState = _eagerReducer(currentState, action);
+          var currentState = queue.lastRenderedState;
+          var _eagerState = _lastRenderedReducer(currentState, action);
           // Stash the eagerly computed state, and the reducer used to compute
           // it, on the update object. If the reducer hasn't changed by the
           // time we enter the render phase, then the eager state can be used
           // without calling the reducer again.
-          _update2.eagerReducer = _eagerReducer;
+          _update2.eagerReducer = _lastRenderedReducer;
           _update2.eagerState = _eagerState;
           if (is(_eagerState, currentState)) {
             // Fast path. We can bail out without scheduling React to re-render.
@@ -13527,6 +13616,7 @@ var ContextOnlyDispatcher = {
 };
 
 var HooksDispatcherOnMountInDEV = null;
+var HooksDispatcherOnMountWithHookTypesInDEV = null;
 var HooksDispatcherOnUpdateInDEV = null;
 var InvalidNestedHooksDispatcherOnMountInDEV = null;
 var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
@@ -13546,26 +13636,32 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useCallback: function (callback, deps) {
       currentHookNameInDev = 'useCallback';
+      mountHookTypesDev();
       return mountCallback(callback, deps);
     },
     useContext: function (context, observedBits) {
       currentHookNameInDev = 'useContext';
-      return mountContext(context, observedBits);
+      mountHookTypesDev();
+      return readContext(context, observedBits);
     },
     useEffect: function (create, deps) {
       currentHookNameInDev = 'useEffect';
+      mountHookTypesDev();
       return mountEffect(create, deps);
     },
     useImperativeHandle: function (ref, create, deps) {
       currentHookNameInDev = 'useImperativeHandle';
+      mountHookTypesDev();
       return mountImperativeHandle(ref, create, deps);
     },
     useLayoutEffect: function (create, deps) {
       currentHookNameInDev = 'useLayoutEffect';
+      mountHookTypesDev();
       return mountLayoutEffect(create, deps);
     },
     useMemo: function (create, deps) {
       currentHookNameInDev = 'useMemo';
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13576,6 +13672,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useReducer: function (reducer, initialArg, init) {
       currentHookNameInDev = 'useReducer';
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13586,10 +13683,12 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useRef: function (initialValue) {
       currentHookNameInDev = 'useRef';
+      mountHookTypesDev();
       return mountRef(initialValue);
     },
     useState: function (initialState) {
       currentHookNameInDev = 'useState';
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13600,6 +13699,81 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useDebugValue: function (value, formatterFn) {
       currentHookNameInDev = 'useDebugValue';
+      mountHookTypesDev();
+      return mountDebugValue(value, formatterFn);
+    }
+  };
+
+  HooksDispatcherOnMountWithHookTypesInDEV = {
+    readContext: function (context, observedBits) {
+      return readContext(context, observedBits);
+    },
+    useCallback: function (callback, deps) {
+      currentHookNameInDev = 'useCallback';
+      updateHookTypesDev();
+      return mountCallback(callback, deps);
+    },
+    useContext: function (context, observedBits) {
+      currentHookNameInDev = 'useContext';
+      updateHookTypesDev();
+      return readContext(context, observedBits);
+    },
+    useEffect: function (create, deps) {
+      currentHookNameInDev = 'useEffect';
+      updateHookTypesDev();
+      return mountEffect(create, deps);
+    },
+    useImperativeHandle: function (ref, create, deps) {
+      currentHookNameInDev = 'useImperativeHandle';
+      updateHookTypesDev();
+      return mountImperativeHandle(ref, create, deps);
+    },
+    useLayoutEffect: function (create, deps) {
+      currentHookNameInDev = 'useLayoutEffect';
+      updateHookTypesDev();
+      return mountLayoutEffect(create, deps);
+    },
+    useMemo: function (create, deps) {
+      currentHookNameInDev = 'useMemo';
+      updateHookTypesDev();
+      var prevDispatcher = ReactCurrentDispatcher$1.current;
+      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
+      try {
+        return mountMemo(create, deps);
+      } finally {
+        ReactCurrentDispatcher$1.current = prevDispatcher;
+      }
+    },
+    useReducer: function (reducer, initialArg, init) {
+      currentHookNameInDev = 'useReducer';
+      updateHookTypesDev();
+      var prevDispatcher = ReactCurrentDispatcher$1.current;
+      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
+      try {
+        return mountReducer(reducer, initialArg, init);
+      } finally {
+        ReactCurrentDispatcher$1.current = prevDispatcher;
+      }
+    },
+    useRef: function (initialValue) {
+      currentHookNameInDev = 'useRef';
+      updateHookTypesDev();
+      return mountRef(initialValue);
+    },
+    useState: function (initialState) {
+      currentHookNameInDev = 'useState';
+      updateHookTypesDev();
+      var prevDispatcher = ReactCurrentDispatcher$1.current;
+      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
+      try {
+        return mountState(initialState);
+      } finally {
+        ReactCurrentDispatcher$1.current = prevDispatcher;
+      }
+    },
+    useDebugValue: function (value, formatterFn) {
+      currentHookNameInDev = 'useDebugValue';
+      updateHookTypesDev();
       return mountDebugValue(value, formatterFn);
     }
   };
@@ -13610,26 +13784,32 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useCallback: function (callback, deps) {
       currentHookNameInDev = 'useCallback';
+      updateHookTypesDev();
       return updateCallback(callback, deps);
     },
     useContext: function (context, observedBits) {
       currentHookNameInDev = 'useContext';
-      return updateContext(context, observedBits);
+      updateHookTypesDev();
+      return readContext(context, observedBits);
     },
     useEffect: function (create, deps) {
       currentHookNameInDev = 'useEffect';
+      updateHookTypesDev();
       return updateEffect(create, deps);
     },
     useImperativeHandle: function (ref, create, deps) {
       currentHookNameInDev = 'useImperativeHandle';
+      updateHookTypesDev();
       return updateImperativeHandle(ref, create, deps);
     },
     useLayoutEffect: function (create, deps) {
       currentHookNameInDev = 'useLayoutEffect';
+      updateHookTypesDev();
       return updateLayoutEffect(create, deps);
     },
     useMemo: function (create, deps) {
       currentHookNameInDev = 'useMemo';
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13640,6 +13820,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useReducer: function (reducer, initialArg, init) {
       currentHookNameInDev = 'useReducer';
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13650,10 +13831,12 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useRef: function (initialValue) {
       currentHookNameInDev = 'useRef';
+      updateHookTypesDev();
       return updateRef(initialValue);
     },
     useState: function (initialState) {
       currentHookNameInDev = 'useState';
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13664,6 +13847,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useDebugValue: function (value, formatterFn) {
       currentHookNameInDev = 'useDebugValue';
+      updateHookTypesDev();
       return updateDebugValue(value, formatterFn);
     }
   };
@@ -13676,31 +13860,37 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useCallback: function (callback, deps) {
       currentHookNameInDev = 'useCallback';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountCallback(callback, deps);
     },
     useContext: function (context, observedBits) {
       currentHookNameInDev = 'useContext';
       warnInvalidHookAccess();
-      return mountContext(context, observedBits);
+      mountHookTypesDev();
+      return readContext(context, observedBits);
     },
     useEffect: function (create, deps) {
       currentHookNameInDev = 'useEffect';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountEffect(create, deps);
     },
     useImperativeHandle: function (ref, create, deps) {
       currentHookNameInDev = 'useImperativeHandle';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountImperativeHandle(ref, create, deps);
     },
     useLayoutEffect: function (create, deps) {
       currentHookNameInDev = 'useLayoutEffect';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountLayoutEffect(create, deps);
     },
     useMemo: function (create, deps) {
       currentHookNameInDev = 'useMemo';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13712,6 +13902,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useReducer: function (reducer, initialArg, init) {
       currentHookNameInDev = 'useReducer';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13723,11 +13914,13 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useRef: function (initialValue) {
       currentHookNameInDev = 'useRef';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountRef(initialValue);
     },
     useState: function (initialState) {
       currentHookNameInDev = 'useState';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13739,6 +13932,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useDebugValue: function (value, formatterFn) {
       currentHookNameInDev = 'useDebugValue';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountDebugValue(value, formatterFn);
     }
   };
@@ -13751,31 +13945,37 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useCallback: function (callback, deps) {
       currentHookNameInDev = 'useCallback';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateCallback(callback, deps);
     },
     useContext: function (context, observedBits) {
       currentHookNameInDev = 'useContext';
       warnInvalidHookAccess();
-      return updateContext(context, observedBits);
+      updateHookTypesDev();
+      return readContext(context, observedBits);
     },
     useEffect: function (create, deps) {
       currentHookNameInDev = 'useEffect';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateEffect(create, deps);
     },
     useImperativeHandle: function (ref, create, deps) {
       currentHookNameInDev = 'useImperativeHandle';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateImperativeHandle(ref, create, deps);
     },
     useLayoutEffect: function (create, deps) {
       currentHookNameInDev = 'useLayoutEffect';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateLayoutEffect(create, deps);
     },
     useMemo: function (create, deps) {
       currentHookNameInDev = 'useMemo';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13787,6 +13987,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useReducer: function (reducer, initialArg, init) {
       currentHookNameInDev = 'useReducer';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13798,11 +13999,13 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useRef: function (initialValue) {
       currentHookNameInDev = 'useRef';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateRef(initialValue);
     },
     useState: function (initialState) {
       currentHookNameInDev = 'useState';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13814,6 +14017,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useDebugValue: function (value, formatterFn) {
       currentHookNameInDev = 'useDebugValue';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateDebugValue(value, formatterFn);
     }
   };
@@ -17085,11 +17289,11 @@ function commitHookEffectList(unmountTag, mountTag, finishedWork) {
             if (_destroy === null) {
               addendum = ' You returned null. If your effect does not require clean ' + 'up, return undefined (or nothing).';
             } else if (typeof _destroy.then === 'function') {
-              addendum = '\n\nIt looks like you wrote useEffect(async () => ...) or returned a Promise. ' + 'Instead, you may write an async function separately ' + 'and then call it from inside the effect:\n\n' + 'async function fetchComment(commentId) {\n' + '  // You can await here\n' + '}\n\n' + 'useEffect(() => {\n' + '  fetchComment(commentId);\n' + '}, [commentId]);\n\n' + 'In the future, React will provide a more idiomatic solution for data fetching ' + "that doesn't involve writing effects manually.";
+              addendum = '\n\nIt looks like you wrote useEffect(async () => ...) or returned a Promise. ' + 'Instead, write the async function inside your effect ' + 'and call it immediately:\n\n' + 'useEffect(() => {\n' + '  async function fetchData() {\n' + '    // You can await here\n' + '    const response = await MyAPI.getData(someId);\n' + '    // ...\n' + '  }\n' + '  fetchData();\n' + '}, [someId]); // Or [] if effect doesn\'t need props or state\n\n' + 'Learn more about data fetching with Hooks: https://fb.me/react-hooks-data-fetching';
             } else {
               addendum = ' You returned: ' + _destroy;
             }
-            warningWithoutStack$1(false, 'An Effect function must not return anything besides a function, ' + 'which is used for clean-up.%s%s', addendum, getStackByFiberInDevAndProd(finishedWork));
+            warningWithoutStack$1(false, 'An effect function must not return anything besides a function, ' + 'which is used for clean-up.%s%s', addendum, getStackByFiberInDevAndProd(finishedWork));
           }
         }
       }
@@ -20548,7 +20752,7 @@ implementation) {
 
 // TODO: this is special because it gets imported during build.
 
-var ReactVersion = '16.8.3';
+var ReactVersion = '16.8.6';
 
 // TODO: This type is shared between the reconciler and ReactDOM, but will
 // eventually be lifted out to the renderer.
diff --git a/node_modules/react-dom/cjs/react-dom.production.min.js b/node_modules/react-dom/cjs/react-dom.production.min.js
index a9924b00..97a51323 100644
--- a/node_modules/react-dom/cjs/react-dom.production.min.js
+++ b/node_modules/react-dom/cjs/react-dom.production.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -86,7 +86,7 @@ function E(a,b){if(!b)return null;var c=(yd(a)?Cd:Dd).bind(null,a);b.addEventLis
 function Dd(a,b){if(Bd){var c=Nb(b);c=Ha(c);null===c||"number"!==typeof c.tag||2===ed(c)||(c=null);if(zd.length){var d=zd.pop();d.topLevelType=a;d.nativeEvent=b;d.targetInst=c;a=d}else a={topLevelType:a,nativeEvent:b,targetInst:c,ancestors:[]};try{Kb(Ad,a)}finally{a.topLevelType=null,a.nativeEvent=null,a.targetInst=null,a.ancestors.length=0,10>zd.length&&zd.push(a)}}}var Fd={},Gd=0,Hd="_reactListenersID"+(""+Math.random()).slice(2);
 function Id(a){Object.prototype.hasOwnProperty.call(a,Hd)||(a[Hd]=Gd++,Fd[a[Hd]]={});return Fd[a[Hd]]}function Jd(a){a=a||("undefined"!==typeof document?document:void 0);if("undefined"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Kd(a){for(;a&&a.firstChild;)a=a.firstChild;return a}
 function Ld(a,b){var c=Kd(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Kd(c)}}function Md(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Md(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}
-function Nd(){for(var a=window,b=Jd();b instanceof a.HTMLIFrameElement;){try{a=b.contentDocument.defaultView}catch(c){break}b=Jd(a.document)}return b}function Od(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)}
+function Nd(){for(var a=window,b=Jd();b instanceof a.HTMLIFrameElement;){try{var c="string"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Jd(a.document)}return b}function Od(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)}
 function Pd(){var a=Nd();if(Od(a)){if("selectionStart"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(A){b=null;break a}var f=0,g=-1,h=-1,l=0,k=0,m=a,p=null;b:for(;;){for(var t;;){m!==b||0!==d&&3!==m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=f+c);3===m.nodeType&&(f+=m.nodeValue.length);
 if(null===(t=m.firstChild))break;p=m;m=t}for(;;){if(m===a)break b;p===b&&++l===d&&(g=f);p===e&&++k===c&&(h=f);if(null!==(t=m.nextSibling))break;m=p;p=m.parentNode}m=t}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}
 function Qd(a){var b=Nd(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Md(c.ownerDocument.documentElement,c)){if(null!==d&&Od(c))if(b=d.start,a=d.end,void 0===a&&(a=b),"selectionStart"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ld(c,f);var g=Ld(c,
@@ -146,19 +146,19 @@ w.key),g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);a&&q.forEach(function(a){return
 k.sibling}f.type===Xb?(d=Ze(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ye(f.type,f.key,f.props,null,a.mode,h),h.ref=Af(a,d,f),h.return=a,a=h)}return g(a);case Wb:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=bf(f,a.mode,h);d.return=a;a=d}return g(a)}if("string"===typeof f||"number"===typeof f)return f=
 ""+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=af(f,a.mode,h),d.return=a,a=d),g(a);if(zf(f))return v(a,d,f,h);if(hc(f))return R(a,d,f,h);l&&Bf(a,f);if("undefined"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type,x("152",h.displayName||h.name||"Component")}return c(a,d)}}var Df=Cf(!0),Ef=Cf(!1),Ff={},N={current:Ff},Gf={current:Ff},Hf={current:Ff};function If(a){a===Ff?x("174"):void 0;return a}
 function Jf(a,b){G(Hf,b,a);G(Gf,a,a);G(N,Ff,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:he(null,"");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=he(b,c)}F(N,a);G(N,b,a)}function Kf(a){F(N,a);F(Gf,a);F(Hf,a)}function Lf(a){If(Hf.current);var b=If(N.current);var c=he(b,a.type);b!==c&&(G(Gf,a,a),G(N,c,a))}function Mf(a){Gf.current===a&&(F(N,a),F(Gf,a))}
-var Nf=0,Of=2,Pf=4,Qf=8,Rf=16,Sf=32,Tf=64,Uf=128,Vf=Tb.ReactCurrentDispatcher,Wf=0,Xf=null,O=null,P=null,Yf=null,Q=null,Zf=null,$f=0,ag=null,bg=0,cg=!1,dg=null,eg=0;function fg(){x("307")}function gg(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!bd(a[c],b[c]))return!1;return!0}
+var Nf=0,Of=2,Pf=4,Qf=8,Rf=16,Sf=32,Tf=64,Uf=128,Vf=Tb.ReactCurrentDispatcher,Wf=0,Xf=null,O=null,P=null,Yf=null,Q=null,Zf=null,$f=0,ag=null,bg=0,cg=!1,dg=null,eg=0;function fg(){x("321")}function gg(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!bd(a[c],b[c]))return!1;return!0}
 function hg(a,b,c,d,e,f){Wf=f;Xf=b;P=null!==a?a.memoizedState:null;Vf.current=null===P?ig:jg;b=c(d,e);if(cg){do cg=!1,eg+=1,P=null!==a?a.memoizedState:null,Zf=Yf,ag=Q=O=null,Vf.current=jg,b=c(d,e);while(cg);dg=null;eg=0}Vf.current=kg;a=Xf;a.memoizedState=Yf;a.expirationTime=$f;a.updateQueue=ag;a.effectTag|=bg;a=null!==O&&null!==O.next;Wf=0;Zf=Q=Yf=P=O=Xf=null;$f=0;ag=null;bg=0;a?x("300"):void 0;return b}function lg(){Vf.current=kg;Wf=0;Zf=Q=Yf=P=O=Xf=null;$f=0;ag=null;bg=0;cg=!1;dg=null;eg=0}
 function mg(){var a={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};null===Q?Yf=Q=a:Q=Q.next=a;return Q}function ng(){if(null!==Zf)Q=Zf,Zf=Q.next,O=P,P=null!==O?O.next:null;else{null===P?x("310"):void 0;O=P;var a={memoizedState:O.memoizedState,baseState:O.baseState,queue:O.queue,baseUpdate:O.baseUpdate,next:null};Q=null===Q?Yf=a:Q.next=a;P=O.next}return Q}function og(a,b){return"function"===typeof b?b(a):b}
-function pg(a){var b=ng(),c=b.queue;null===c?x("311"):void 0;if(0<eg){var d=c.dispatch;if(null!==dg){var e=dg.get(c);if(void 0!==e){dg.delete(c);var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=f);c.eagerReducer=a;c.eagerState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==d){var h=e=null,
-l=d,k=!1;do{var m=l.expirationTime;m<Wf?(k||(k=!0,h=g,e=f),m>$f&&($f=m)):f=l.eagerReducer===a?l.eagerState:a(f,l.action);g=l;l=l.next}while(null!==l&&l!==d);k||(h=g,e=f);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.eagerReducer=a;c.eagerState=f}return[b.memoizedState,c.dispatch]}
+function pg(a){var b=ng(),c=b.queue;null===c?x("311"):void 0;c.lastRenderedReducer=a;if(0<eg){var d=c.dispatch;if(null!==dg){var e=dg.get(c);if(void 0!==e){dg.delete(c);var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=f);c.lastRenderedState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==
+d){var h=e=null,l=d,k=!1;do{var m=l.expirationTime;m<Wf?(k||(k=!0,h=g,e=f),m>$f&&($f=m)):f=l.eagerReducer===a?l.eagerState:a(f,l.action);g=l;l=l.next}while(null!==l&&l!==d);k||(h=g,e=f);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}
 function rg(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===ag?(ag={lastEffect:null},ag.lastEffect=a.next=a):(b=ag.lastEffect,null===b?ag.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,ag.lastEffect=a));return a}function sg(a,b,c,d){var e=mg();bg|=a;e.memoizedState=rg(b,c,void 0,void 0===d?null:d)}
 function tg(a,b,c,d){var e=ng();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&gg(d,g.deps)){rg(Nf,c,f,d);return}}bg|=a;e.memoizedState=rg(b,c,f,d)}function ug(a,b){if("function"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function vg(){}
 function wg(a,b,c){25>eg?void 0:x("301");var d=a.alternate;if(a===Xf||null!==d&&d===Xf)if(cg=!0,a={expirationTime:Wf,action:c,eagerReducer:null,eagerState:null,next:null},null===dg&&(dg=new Map),c=dg.get(b),void 0===c)dg.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{of();var e=lf();e=mf(e,a);var f={expirationTime:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===
-d||0===d.expirationTime)&&(d=b.eagerReducer,null!==d))try{var l=b.eagerState,k=d(l,c);f.eagerReducer=d;f.eagerState=k;if(bd(k,l))return}catch(m){}finally{}qf(a,e)}}
+d||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var l=b.lastRenderedState,k=d(l,c);f.eagerReducer=d;f.eagerState=k;if(bd(k,l))return}catch(m){}finally{}qf(a,e)}}
 var kg={readContext:M,useCallback:fg,useContext:fg,useEffect:fg,useImperativeHandle:fg,useLayoutEffect:fg,useMemo:fg,useReducer:fg,useRef:fg,useState:fg,useDebugValue:fg},ig={readContext:M,useCallback:function(a,b){mg().memoizedState=[a,void 0===b?null:b];return a},useContext:M,useEffect:function(a,b){return sg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return sg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,b){return sg(4,Pf|Sf,a,b)},
-useMemo:function(a,b){var c=mg();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=mg();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,eagerReducer:a,eagerState:b};a=a.dispatch=wg.bind(null,Xf,a);return[d.memoizedState,a]},useRef:function(a){var b=mg();a={current:a};return b.memoizedState=a},useState:function(a){var b=mg();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,eagerReducer:og,
-eagerState:a};a=a.dispatch=wg.bind(null,Xf,a);return[b.memoizedState,a]},useDebugValue:vg},jg={readContext:M,useCallback:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:M,useEffect:function(a,b){return tg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return tg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,b){return tg(4,Pf|Sf,a,b)},
-useMemo:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:pg,useRef:function(){return ng().memoizedState},useState:function(a){return pg(og,a)},useDebugValue:vg},xg=null,yg=null,zg=!1;
+useMemo:function(a,b){var c=mg();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=mg();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=wg.bind(null,Xf,a);return[d.memoizedState,a]},useRef:function(a){var b=mg();a={current:a};return b.memoizedState=a},useState:function(a){var b=mg();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,
+lastRenderedReducer:og,lastRenderedState:a};a=a.dispatch=wg.bind(null,Xf,a);return[b.memoizedState,a]},useDebugValue:vg},jg={readContext:M,useCallback:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:M,useEffect:function(a,b){return tg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return tg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,
+b){return tg(4,Pf|Sf,a,b)},useMemo:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:pg,useRef:function(){return ng().memoizedState},useState:function(a){return pg(og,a)},useDebugValue:vg},xg=null,yg=null,zg=!1;
 function Ag(a,b){var c=K(5,null,null,0);c.elementType="DELETED";c.type="DELETED";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function Bg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}
 function Cg(a){if(zg){var b=yg;if(b){var c=b;if(!Bg(a,b)){b=De(c);if(!b||!Bg(a,b)){a.effectTag|=2;zg=!1;xg=a;return}Ag(xg,c)}xg=a;yg=Ee(b)}else a.effectTag|=2,zg=!1,xg=a}}function Dg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;xg=a}function Eg(a){if(a!==xg)return!1;if(!zg)return Dg(a),zg=!0,!1;var b=a.type;if(5!==a.tag||"head"!==b&&"body"!==b&&!xe(b,a.memoizedProps))for(b=yg;b;)Ag(a,b),b=De(b);Dg(a);yg=xg?De(a.stateNode):null;return!0}function Fg(){yg=xg=null;zg=!1}
 var Gg=Tb.ReactCurrentOwner,qg=!1;function S(a,b,c,d){b.child=null===a?Ef(b,null,c,d):Df(b,a.child,c,d)}function Hg(a,b,c,d,e){c=c.render;var f=b.ref;Ig(b,e);d=hg(a,b,c,d,f,e);if(null!==a&&!qg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Jg(a,b,e);b.effectTag|=1;S(a,b,d,e);return b.child}
@@ -222,7 +222,7 @@ b>c?b:c;0===b&&(Fh=null);$h(a,b)}
 function ai(a){for(;;){var b=a.alternate,c=a.return,d=a.sibling;if(0===(a.effectTag&1024)){T=a;a:{var e=b;b=a;var f=U;var g=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:J(b.type)&&Ke(b);break;case 3:Kf(b);Le(b);g=b.stateNode;g.pendingContext&&(g.context=g.pendingContext,g.pendingContext=null);if(null===e||null===e.child)Eg(b),b.effectTag&=-3;mh(b);break;case 5:Mf(b);var h=If(Hf.current);f=b.type;if(null!==e&&null!=b.stateNode)nh(e,b,f,g,h),e.ref!==b.ref&&(b.effectTag|=
 128);else if(g){var l=If(N.current);if(Eg(b)){g=b;e=g.stateNode;var k=g.type,m=g.memoizedProps,p=h;e[Fa]=g;e[Ga]=m;f=void 0;h=k;switch(h){case "iframe":case "object":E("load",e);break;case "video":case "audio":for(k=0;k<ab.length;k++)E(ab[k],e);break;case "source":E("error",e);break;case "img":case "image":case "link":E("error",e);E("load",e);break;case "form":E("reset",e);E("submit",e);break;case "details":E("toggle",e);break;case "input":wc(e,m);E("invalid",e);se(p,"onChange");break;case "select":e._wrapperState=
 {wasMultiple:!!m.multiple};E("invalid",e);se(p,"onChange");break;case "textarea":ce(e,m),E("invalid",e),se(p,"onChange")}qe(h,m);k=null;for(f in m)m.hasOwnProperty(f)&&(l=m[f],"children"===f?"string"===typeof l?e.textContent!==l&&(k=["children",l]):"number"===typeof l&&e.textContent!==""+l&&(k=["children",""+l]):ra.hasOwnProperty(f)&&null!=l&&se(p,f));switch(h){case "input":Rb(e);Ac(e,m,!0);break;case "textarea":Rb(e);ee(e,m);break;case "select":case "option":break;default:"function"===typeof m.onClick&&
-(e.onclick=te)}f=k;g.updateQueue=f;g=null!==f?!0:!1;g&&kh(b)}else{m=b;e=f;p=g;k=9===h.nodeType?h:h.ownerDocument;l===fe.html&&(l=ge(e));l===fe.html?"script"===e?(e=k.createElement("div"),e.innerHTML="<script>\x3c/script>",k=e.removeChild(e.firstChild)):"string"===typeof p.is?k=k.createElement(e,{is:p.is}):(k=k.createElement(e),"select"===e&&p.multiple&&(k.multiple=!0)):k=k.createElementNS(l,e);e=k;e[Fa]=m;e[Ga]=g;lh(e,b,!1,!1);p=e;k=f;m=g;var t=h,A=re(k,m);switch(k){case "iframe":case "object":E("load",
+(e.onclick=te)}f=k;g.updateQueue=f;g=null!==f?!0:!1;g&&kh(b)}else{m=b;p=f;e=g;k=9===h.nodeType?h:h.ownerDocument;l===fe.html&&(l=ge(p));l===fe.html?"script"===p?(e=k.createElement("div"),e.innerHTML="<script>\x3c/script>",k=e.removeChild(e.firstChild)):"string"===typeof e.is?k=k.createElement(p,{is:e.is}):(k=k.createElement(p),"select"===p&&(p=k,e.multiple?p.multiple=!0:e.size&&(p.size=e.size))):k=k.createElementNS(l,p);e=k;e[Fa]=m;e[Ga]=g;lh(e,b,!1,!1);p=e;k=f;m=g;var t=h,A=re(k,m);switch(k){case "iframe":case "object":E("load",
 p);h=m;break;case "video":case "audio":for(h=0;h<ab.length;h++)E(ab[h],p);h=m;break;case "source":E("error",p);h=m;break;case "img":case "image":case "link":E("error",p);E("load",p);h=m;break;case "form":E("reset",p);E("submit",p);h=m;break;case "details":E("toggle",p);h=m;break;case "input":wc(p,m);h=vc(p,m);E("invalid",p);se(t,"onChange");break;case "option":h=$d(p,m);break;case "select":p._wrapperState={wasMultiple:!!m.multiple};h=n({},m,{value:void 0});E("invalid",p);se(t,"onChange");break;case "textarea":ce(p,
 m);h=be(p,m);E("invalid",p);se(t,"onChange");break;default:h=m}qe(k,h);l=void 0;var v=k,R=p,u=h;for(l in u)if(u.hasOwnProperty(l)){var q=u[l];"style"===l?oe(R,q):"dangerouslySetInnerHTML"===l?(q=q?q.__html:void 0,null!=q&&je(R,q)):"children"===l?"string"===typeof q?("textarea"!==v||""!==q)&&ke(R,q):"number"===typeof q&&ke(R,""+q):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(ra.hasOwnProperty(l)?null!=q&&se(t,l):null!=q&&tc(R,l,q,A))}switch(k){case "input":Rb(p);
 Ac(p,m,!1);break;case "textarea":Rb(p);ee(p,m);break;case "option":null!=m.value&&p.setAttribute("value",""+uc(m.value));break;case "select":h=p;h.multiple=!!m.multiple;p=m.value;null!=p?ae(h,!!m.multiple,p,!1):null!=m.defaultValue&&ae(h,!!m.multiple,m.defaultValue,!0);break;default:"function"===typeof h.onClick&&(p.onclick=te)}(g=we(f,g))&&kh(b);b.stateNode=e}null!==b.ref&&(b.effectTag|=128)}else null===b.stateNode?x("166"):void 0;break;case 6:e&&null!=b.stateNode?oh(e,b,e.memoizedProps,g):("string"!==
@@ -266,4 +266,4 @@ function Ti(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:nu
 var Vi={createPortal:Ti,findDOMNode:function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;void 0===b&&("function"===typeof a.render?x("188"):x("268",Object.keys(a)));a=hd(b);a=null===a?null:a.stateNode;return a},hydrate:function(a,b,c){Qi(b)?void 0:x("200");return Si(null,a,b,!0,c)},render:function(a,b,c){Qi(b)?void 0:x("200");return Si(null,a,b,!1,c)},unstable_renderSubtreeIntoContainer:function(a,b,c,d){Qi(c)?void 0:x("200");null==a||void 0===a._reactInternalFiber?
 x("38"):void 0;return Si(a,b,c,!1,d)},unmountComponentAtNode:function(a){Qi(a)?void 0:x("40");return a._reactRootContainer?(Hi(function(){Si(null,null,a,!1,function(){a._reactRootContainer=null})}),!0):!1},unstable_createPortal:function(){return Ti.apply(void 0,arguments)},unstable_batchedUpdates:Gi,unstable_interactiveUpdates:Ii,flushSync:function(a,b){W?x("187"):void 0;var c=X;X=!0;try{return ki(a,b)}finally{X=c,Yh(1073741823,!1)}},unstable_createRoot:Ui,unstable_flushControlled:function(a){var b=
 X;X=!0;try{ki(a)}finally{(X=b)||W||Yh(1073741823,!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[Ia,Ja,Ka,Ba.injectEventPluginsByName,pa,Qa,function(a){ya(a,Pa)},Eb,Fb,Dd,Da]}};function Ui(a,b){Qi(a)?void 0:x("299","unstable_createRoot");return new Pi(a,!0,null!=b&&!0===b.hydrate)}
-(function(a){var b=a.findFiberByHostInstance;return Te(n({},a,{overrideProps:null,currentDispatcherRef:Tb.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hd(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:Ha,bundleType:0,version:"16.8.3",rendererPackageName:"react-dom"});var Wi={default:Vi},Xi=Wi&&Vi||Wi;module.exports=Xi.default||Xi;
+(function(a){var b=a.findFiberByHostInstance;return Te(n({},a,{overrideProps:null,currentDispatcherRef:Tb.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=hd(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:Ha,bundleType:0,version:"16.8.6",rendererPackageName:"react-dom"});var Wi={default:Vi},Xi=Wi&&Vi||Wi;module.exports=Xi.default||Xi;
diff --git a/node_modules/react-dom/cjs/react-dom.profiling.min.js b/node_modules/react-dom/cjs/react-dom.profiling.min.js
index 8745bb8b..6b381dbb 100644
--- a/node_modules/react-dom/cjs/react-dom.profiling.min.js
+++ b/node_modules/react-dom/cjs/react-dom.profiling.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom.profiling.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -86,7 +86,7 @@ function D(a,b){if(!b)return null;var c=(Bd(a)?Fd:Gd).bind(null,a);b.addEventLis
 function Gd(a,b){if(Ed){var c=Qb(b);c=Ha(c);null===c||"number"!==typeof c.tag||2===hd(c)||(c=null);if(Cd.length){var d=Cd.pop();d.topLevelType=a;d.nativeEvent=b;d.targetInst=c;a=d}else a={topLevelType:a,nativeEvent:b,targetInst:c,ancestors:[]};try{Mb(Dd,a)}finally{a.topLevelType=null,a.nativeEvent=null,a.targetInst=null,a.ancestors.length=0,10>Cd.length&&Cd.push(a)}}}var Id={},Jd=0,Kd="_reactListenersID"+(""+Math.random()).slice(2);
 function Ld(a){Object.prototype.hasOwnProperty.call(a,Kd)||(a[Kd]=Jd++,Id[a[Kd]]={});return Id[a[Kd]]}function Md(a){a=a||("undefined"!==typeof document?document:void 0);if("undefined"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Nd(a){for(;a&&a.firstChild;)a=a.firstChild;return a}
 function Od(a,b){var c=Nd(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Nd(c)}}function Pd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Pd(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}
-function Qd(){for(var a=window,b=Md();b instanceof a.HTMLIFrameElement;){try{a=b.contentDocument.defaultView}catch(c){break}b=Md(a.document)}return b}function Rd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)}
+function Qd(){for(var a=window,b=Md();b instanceof a.HTMLIFrameElement;){try{var c="string"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Md(a.document)}return b}function Rd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)}
 function Sd(){var a=Qd();if(Rd(a)){if("selectionStart"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(U){b=null;break a}var f=0,g=-1,h=-1,k=0,l=0,m=a,p=null;b:for(;;){for(var w;;){m!==b||0!==d&&3!==m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=f+c);3===m.nodeType&&(f+=m.nodeValue.length);
 if(null===(w=m.firstChild))break;p=m;m=w}for(;;){if(m===a)break b;p===b&&++k===d&&(g=f);p===e&&++l===c&&(h=f);if(null!==(w=m.nextSibling))break;m=p;p=m.parentNode}m=w}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}
 function Td(a){var b=Qd(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Pd(c.ownerDocument.documentElement,c)){if(null!==d&&Rd(c))if(b=d.start,a=d.end,void 0===a&&(a=b),"selectionStart"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Od(c,f);var g=Od(c,
@@ -147,20 +147,20 @@ t.key?u:t.key),g=f(t,g,u),null===m?l=t:m.sibling=t,m=t);a&&q.forEach(function(a)
 k);k=k.sibling}f.type===$b?(d=cf(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=bf(f.type,f.key,f.props,null,a.mode,h),h.ref=Ff(a,d,f),h.return=a,a=h)}return g(a);case Zb:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=ff(f,a.mode,h);d.return=a;a=d}return g(a)}if("string"===typeof f||"number"===
 typeof f)return f=""+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=ef(f,a.mode,h),d.return=a,a=d),g(a);if(Ef(f))return Nb(a,d,f,h);if(kc(f))return La(a,d,f,h);l&&Gf(a,f);if("undefined"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type,x("152",h.displayName||h.name||"Component")}return c(a,d)}}var If=Hf(!0),Jf=Hf(!1),Kf={},M={current:Kf},Lf={current:Kf},Mf={current:Kf};function Nf(a){a===Kf?x("174"):void 0;return a}
 function Of(a,b){F(Mf,b,a);F(Lf,a,a);F(M,Kf,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:ke(null,"");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=ke(b,c)}E(M,a);F(M,b,a)}function Pf(a){E(M,a);E(Lf,a);E(Mf,a)}function Qf(a){Nf(Mf.current);var b=Nf(M.current);var c=ke(b,a.type);b!==c&&(F(Lf,a,a),F(M,c,a))}function Rf(a){Lf.current===a&&(E(M,a),E(Lf,a))}
-var Sf=0,Tf=2,Uf=4,Vf=8,Wf=16,Xf=32,Yf=64,Zf=128,$f=Wb.ReactCurrentDispatcher,ag=0,bg=null,N=null,O=null,cg=null,P=null,dg=null,eg=0,fg=null,gg=0,hg=!1,ig=null,jg=0;function kg(){x("307")}function lg(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!ed(a[c],b[c]))return!1;return!0}
+var Sf=0,Tf=2,Uf=4,Vf=8,Wf=16,Xf=32,Yf=64,Zf=128,$f=Wb.ReactCurrentDispatcher,ag=0,bg=null,N=null,O=null,cg=null,P=null,dg=null,eg=0,fg=null,gg=0,hg=!1,ig=null,jg=0;function kg(){x("321")}function lg(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!ed(a[c],b[c]))return!1;return!0}
 function mg(a,b,c,d,e,f){ag=f;bg=b;O=null!==a?a.memoizedState:null;$f.current=null===O?ng:og;b=c(d,e);if(hg){do hg=!1,jg+=1,O=null!==a?a.memoizedState:null,dg=cg,fg=P=N=null,$f.current=og,b=c(d,e);while(hg);ig=null;jg=0}$f.current=pg;a=bg;a.memoizedState=cg;a.expirationTime=eg;a.updateQueue=fg;a.effectTag|=gg;a=null!==N&&null!==N.next;ag=0;dg=P=cg=O=N=bg=null;eg=0;fg=null;gg=0;a?x("300"):void 0;return b}function qg(){$f.current=pg;ag=0;dg=P=cg=O=N=bg=null;eg=0;fg=null;gg=0;hg=!1;ig=null;jg=0}
 function rg(){var a={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};null===P?cg=P=a:P=P.next=a;return P}function sg(){if(null!==dg)P=dg,dg=P.next,N=O,O=null!==N?N.next:null;else{null===O?x("310"):void 0;N=O;var a={memoizedState:N.memoizedState,baseState:N.baseState,queue:N.queue,baseUpdate:N.baseUpdate,next:null};P=null===P?cg=a:P.next=a;O=N.next}return P}function tg(a,b){return"function"===typeof b?b(a):b}
-function ug(a){var b=sg(),c=b.queue;null===c?x("311"):void 0;if(0<jg){var d=c.dispatch;if(null!==ig){var e=ig.get(c);if(void 0!==e){ig.delete(c);var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);ed(f,b.memoizedState)||(vg=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=f);c.eagerReducer=a;c.eagerState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==d){var h=e=null,
-k=d,l=!1;do{var m=k.expirationTime;m<ag?(l||(l=!0,h=g,e=f),m>eg&&(eg=m)):f=k.eagerReducer===a?k.eagerState:a(f,k.action);g=k;k=k.next}while(null!==k&&k!==d);l||(h=g,e=f);ed(f,b.memoizedState)||(vg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.eagerReducer=a;c.eagerState=f}return[b.memoizedState,c.dispatch]}
+function ug(a){var b=sg(),c=b.queue;null===c?x("311"):void 0;c.lastRenderedReducer=a;if(0<jg){var d=c.dispatch;if(null!==ig){var e=ig.get(c);if(void 0!==e){ig.delete(c);var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);ed(f,b.memoizedState)||(vg=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=f);c.lastRenderedState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==
+d){var h=e=null,k=d,l=!1;do{var m=k.expirationTime;m<ag?(l||(l=!0,h=g,e=f),m>eg&&(eg=m)):f=k.eagerReducer===a?k.eagerState:a(f,k.action);g=k;k=k.next}while(null!==k&&k!==d);l||(h=g,e=f);ed(f,b.memoizedState)||(vg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}
 function wg(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===fg?(fg={lastEffect:null},fg.lastEffect=a.next=a):(b=fg.lastEffect,null===b?fg.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,fg.lastEffect=a));return a}function xg(a,b,c,d){var e=rg();gg|=a;e.memoizedState=wg(b,c,void 0,void 0===d?null:d)}
 function yg(a,b,c,d){var e=sg();d=void 0===d?null:d;var f=void 0;if(null!==N){var g=N.memoizedState;f=g.destroy;if(null!==d&&lg(d,g.deps)){wg(Sf,c,f,d);return}}gg|=a;e.memoizedState=wg(b,c,f,d)}function zg(a,b){if("function"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ag(){}
 function Bg(a,b,c){25>jg?void 0:x("301");var d=a.alternate;if(a===bg||null!==d&&d===bg)if(hg=!0,a={expirationTime:ag,action:c,eagerReducer:null,eagerState:null,next:null},null===ig&&(ig=new Map),c=ig.get(b),void 0===c)ig.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{tf();var e=qf();e=rf(e,a);var f={expirationTime:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===
-d||0===d.expirationTime)&&(d=b.eagerReducer,null!==d))try{var k=b.eagerState,l=d(k,c);f.eagerReducer=d;f.eagerState=l;if(ed(l,k))return}catch(m){}finally{}vf(a,e)}}
+d||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var k=b.lastRenderedState,l=d(k,c);f.eagerReducer=d;f.eagerState=l;if(ed(l,k))return}catch(m){}finally{}vf(a,e)}}
 var pg={readContext:L,useCallback:kg,useContext:kg,useEffect:kg,useImperativeHandle:kg,useLayoutEffect:kg,useMemo:kg,useReducer:kg,useRef:kg,useState:kg,useDebugValue:kg},ng={readContext:L,useCallback:function(a,b){rg().memoizedState=[a,void 0===b?null:b];return a},useContext:L,useEffect:function(a,b){return xg(516,Zf|Yf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return xg(4,Uf|Xf,zg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return xg(4,Uf|Xf,a,b)},
-useMemo:function(a,b){var c=rg();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=rg();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,eagerReducer:a,eagerState:b};a=a.dispatch=Bg.bind(null,bg,a);return[d.memoizedState,a]},useRef:function(a){var b=rg();a={current:a};return b.memoizedState=a},useState:function(a){var b=rg();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,eagerReducer:tg,
-eagerState:a};a=a.dispatch=Bg.bind(null,bg,a);return[b.memoizedState,a]},useDebugValue:Ag},og={readContext:L,useCallback:function(a,b){var c=sg();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&lg(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:L,useEffect:function(a,b){return yg(516,Zf|Yf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return yg(4,Uf|Xf,zg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return yg(4,Uf|Xf,a,b)},
-useMemo:function(a,b){var c=sg();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&lg(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:ug,useRef:function(){return sg().memoizedState},useState:function(a){return ug(tg,a)},useDebugValue:Ag},Cg=0,Dg=-1;function Eg(a){Dg=r.unstable_now();0>a.actualStartTime&&(a.actualStartTime=r.unstable_now())}function Fg(a,b){if(0<=Dg){var c=r.unstable_now()-Dg;a.actualDuration+=c;b&&(a.selfBaseDuration=c);Dg=-1}}
-var Gg=null,Hg=null,Ig=!1;function Jg(a,b){var c=J(5,null,null,0);c.elementType="DELETED";c.type="DELETED";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}
+useMemo:function(a,b){var c=rg();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=rg();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Bg.bind(null,bg,a);return[d.memoizedState,a]},useRef:function(a){var b=rg();a={current:a};return b.memoizedState=a},useState:function(a){var b=rg();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,
+lastRenderedReducer:tg,lastRenderedState:a};a=a.dispatch=Bg.bind(null,bg,a);return[b.memoizedState,a]},useDebugValue:Ag},og={readContext:L,useCallback:function(a,b){var c=sg();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&lg(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:L,useEffect:function(a,b){return yg(516,Zf|Yf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return yg(4,Uf|Xf,zg.bind(null,b,a),c)},useLayoutEffect:function(a,
+b){return yg(4,Uf|Xf,a,b)},useMemo:function(a,b){var c=sg();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&lg(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:ug,useRef:function(){return sg().memoizedState},useState:function(a){return ug(tg,a)},useDebugValue:Ag},Cg=0,Dg=-1;function Eg(a){Dg=r.unstable_now();0>a.actualStartTime&&(a.actualStartTime=r.unstable_now())}
+function Fg(a,b){if(0<=Dg){var c=r.unstable_now()-Dg;a.actualDuration+=c;b&&(a.selfBaseDuration=c);Dg=-1}}var Gg=null,Hg=null,Ig=!1;function Jg(a,b){var c=J(5,null,null,0);c.elementType="DELETED";c.type="DELETED";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}
 function Kg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}function Lg(a){if(Ig){var b=Hg;if(b){var c=b;if(!Kg(a,b)){b=Ge(c);if(!b||!Kg(a,b)){a.effectTag|=2;Ig=!1;Gg=a;return}Jg(Gg,c)}Gg=a;Hg=He(b)}else a.effectTag|=2,Ig=!1,Gg=a}}
 function Mg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;Gg=a}function Ng(a){if(a!==Gg)return!1;if(!Ig)return Mg(a),Ig=!0,!1;var b=a.type;if(5!==a.tag||"head"!==b&&"body"!==b&&!Ae(b,a.memoizedProps))for(b=Hg;b;)Jg(a,b),b=Ge(b);Mg(a);Hg=Gg?Ge(a.stateNode):null;return!0}function Og(){Hg=Gg=null;Ig=!1}var Pg=Wb.ReactCurrentOwner,vg=!1;function Q(a,b,c,d){b.child=null===a?Jf(b,null,c,d):If(b,a.child,c,d)}
 function Qg(a,b,c,d,e){c=c.render;var f=b.ref;Rg(b,e);d=mg(a,b,c,d,f,e);if(null!==a&&!vg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Sg(a,b,e);b.effectTag|=1;Q(a,b,d,e);return b.child}
@@ -232,14 +232,15 @@ a.__count)try{l.onInteractionScheduledWorkCompleted(a)}catch(Nb){X||(X=!0,li=Nb)
 function mi(a){for(;;){var b=a.alternate,c=a.return,d=a.sibling;if(0===(a.effectTag&1024)){R=a;a.mode&4&&Eg(a);a:{var e=b;b=a;var f=S;var g=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:I(b.type)&&Ne(b);break;case 3:Pf(b);Oe(b);g=b.stateNode;g.pendingContext&&(g.context=g.pendingContext,g.pendingContext=null);if(null===e||null===e.child)Ng(b),b.effectTag&=-3;vh(b);break;case 5:Rf(b);var h=Nf(Mf.current);f=b.type;if(null!==e&&null!=b.stateNode)wh(e,b,f,g,h),e.ref!==
 b.ref&&(b.effectTag|=128);else if(g){var k=Nf(M.current);if(Ng(b)){g=b;e=g.stateNode;var l=g.type,m=g.memoizedProps,p=h;e[Fa]=g;e[Ga]=m;f=void 0;h=l;switch(h){case "iframe":case "object":D("load",e);break;case "video":case "audio":for(l=0;l<bb.length;l++)D(bb[l],e);break;case "source":D("error",e);break;case "img":case "image":case "link":D("error",e);D("load",e);break;case "form":D("reset",e);D("submit",e);break;case "details":D("toggle",e);break;case "input":zc(e,m);D("invalid",e);ve(p,"onChange");
 break;case "select":e._wrapperState={wasMultiple:!!m.multiple};D("invalid",e);ve(p,"onChange");break;case "textarea":fe(e,m),D("invalid",e),ve(p,"onChange")}te(h,m);l=null;for(f in m)m.hasOwnProperty(f)&&(k=m[f],"children"===f?"string"===typeof k?e.textContent!==k&&(l=["children",k]):"number"===typeof k&&e.textContent!==""+k&&(l=["children",""+k]):ra.hasOwnProperty(f)&&null!=k&&ve(p,f));switch(h){case "input":Ub(e);Dc(e,m,!0);break;case "textarea":Ub(e);he(e,m);break;case "select":case "option":break;
-default:"function"===typeof m.onClick&&(e.onclick=we)}f=l;g.updateQueue=f;g=null!==f?!0:!1;g&&th(b)}else{m=b;e=f;p=g;l=9===h.nodeType?h:h.ownerDocument;k===ie.html&&(k=je(e));k===ie.html?"script"===e?(e=l.createElement("div"),e.innerHTML="<script>\x3c/script>",l=e.removeChild(e.firstChild)):"string"===typeof p.is?l=l.createElement(e,{is:p.is}):(l=l.createElement(e),"select"===e&&p.multiple&&(l.multiple=!0)):l=l.createElementNS(k,e);e=l;e[Fa]=m;e[Ga]=g;uh(e,b,!1,!1);p=e;l=f;m=g;var w=h,U=ue(l,m);switch(l){case "iframe":case "object":D("load",
-p);h=m;break;case "video":case "audio":for(h=0;h<bb.length;h++)D(bb[h],p);h=m;break;case "source":D("error",p);h=m;break;case "img":case "image":case "link":D("error",p);D("load",p);h=m;break;case "form":D("reset",p);D("submit",p);h=m;break;case "details":D("toggle",p);h=m;break;case "input":zc(p,m);h=yc(p,m);D("invalid",p);ve(w,"onChange");break;case "option":h=ce(p,m);break;case "select":p._wrapperState={wasMultiple:!!m.multiple};h=n({},m,{value:void 0});D("invalid",p);ve(w,"onChange");break;case "textarea":fe(p,
-m);h=ee(p,m);D("invalid",p);ve(w,"onChange");break;default:h=m}te(l,h);k=void 0;var Nb=l,La=p,u=h;for(k in u)if(u.hasOwnProperty(k)){var q=u[k];"style"===k?re(La,q):"dangerouslySetInnerHTML"===k?(q=q?q.__html:void 0,null!=q&&me(La,q)):"children"===k?"string"===typeof q?("textarea"!==Nb||""!==q)&&ne(La,q):"number"===typeof q&&ne(La,""+q):"suppressContentEditableWarning"!==k&&"suppressHydrationWarning"!==k&&"autoFocus"!==k&&(ra.hasOwnProperty(k)?null!=q&&ve(w,k):null!=q&&wc(La,k,q,U))}switch(l){case "input":Ub(p);
-Dc(p,m,!1);break;case "textarea":Ub(p);he(p,m);break;case "option":null!=m.value&&p.setAttribute("value",""+xc(m.value));break;case "select":h=p;h.multiple=!!m.multiple;p=m.value;null!=p?de(h,!!m.multiple,p,!1):null!=m.defaultValue&&de(h,!!m.multiple,m.defaultValue,!0);break;default:"function"===typeof h.onClick&&(p.onclick=we)}(g=ze(f,g))&&th(b);b.stateNode=e}null!==b.ref&&(b.effectTag|=128)}else null===b.stateNode?x("166"):void 0;break;case 6:e&&null!=b.stateNode?xh(e,b,e.memoizedProps,g):("string"!==
-typeof g&&(null===b.stateNode?x("166"):void 0),e=Nf(Mf.current),Nf(M.current),Ng(b)?(g=b,f=g.stateNode,e=g.memoizedProps,f[Fa]=g,(g=f.nodeValue!==e)&&th(b)):(f=b,g=(9===e.nodeType?e:e.ownerDocument).createTextNode(g),g[Fa]=b,f.stateNode=g));break;case 11:break;case 13:g=b.memoizedState;if(0!==(b.effectTag&64)){b.expirationTime=f;R=b;break a}g=null!==g;f=null!==e&&null!==e.memoizedState;null!==e&&!g&&f&&(e=e.child.sibling,null!==e&&(h=b.firstEffect,null!==h?(b.firstEffect=e,e.nextEffect=h):(b.firstEffect=
-b.lastEffect=e,e.nextEffect=null),e.effectTag=8));if(g||f)b.effectTag|=4;break;case 7:break;case 8:break;case 12:break;case 4:Pf(b);vh(b);break;case 10:hh(b);break;case 9:break;case 14:break;case 17:I(b.type)&&Ne(b);break;case 18:break;default:x("156")}R=null}a.mode&4&&Fg(a,!1);b=a;if(1===S||1!==b.childExpirationTime){g=0;if(b.mode&4){f=b.actualDuration;e=b.selfBaseDuration;h=null===b.alternate||b.child!==b.alternate.child;for(m=b.child;null!==m;)p=m.expirationTime,l=m.childExpirationTime,p>g&&(g=
-p),l>g&&(g=l),h&&(f+=m.actualDuration),e+=m.treeBaseDuration,m=m.sibling;b.actualDuration=f;b.treeBaseDuration=e}else for(f=b.child;null!==f;)e=f.expirationTime,h=f.childExpirationTime,e>g&&(g=e),h>g&&(g=h),f=f.sibling;b.childExpirationTime=g}if(null!==R)return R;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1<a.effectTag&&(null!==c.lastEffect?c.lastEffect.nextEffect=
-a:c.firstEffect=a,c.lastEffect=a))}else{if(a.mode&4){Fg(a,!1);b=a.actualDuration;for(g=a.child;null!==g;)b+=g.actualDuration,g=g.sibling;a.actualDuration=b}a=Th(a,S);if(null!==a)return a.effectTag&=1023,a;null!==c&&(c.firstEffect=c.lastEffect=null,c.effectTag|=1024)}if(null!==d)return d;if(null!==c)a=c;else break}return null}function ni(a){var b=a.alternate;a.mode&4&&Eg(a);b=bh(b,a,S);a.memoizedProps=a.pendingProps;a.mode&4&&Fg(a,!0);null===b&&(b=mi(a));Vh.current=null;return b}
+default:"function"===typeof m.onClick&&(e.onclick=we)}f=l;g.updateQueue=f;g=null!==f?!0:!1;g&&th(b)}else{m=b;p=f;e=g;l=9===h.nodeType?h:h.ownerDocument;k===ie.html&&(k=je(p));k===ie.html?"script"===p?(e=l.createElement("div"),e.innerHTML="<script>\x3c/script>",l=e.removeChild(e.firstChild)):"string"===typeof e.is?l=l.createElement(p,{is:e.is}):(l=l.createElement(p),"select"===p&&(p=l,e.multiple?p.multiple=!0:e.size&&(p.size=e.size))):l=l.createElementNS(k,p);e=l;e[Fa]=m;e[Ga]=g;uh(e,b,!1,!1);p=e;
+l=f;m=g;var w=h,U=ue(l,m);switch(l){case "iframe":case "object":D("load",p);h=m;break;case "video":case "audio":for(h=0;h<bb.length;h++)D(bb[h],p);h=m;break;case "source":D("error",p);h=m;break;case "img":case "image":case "link":D("error",p);D("load",p);h=m;break;case "form":D("reset",p);D("submit",p);h=m;break;case "details":D("toggle",p);h=m;break;case "input":zc(p,m);h=yc(p,m);D("invalid",p);ve(w,"onChange");break;case "option":h=ce(p,m);break;case "select":p._wrapperState={wasMultiple:!!m.multiple};
+h=n({},m,{value:void 0});D("invalid",p);ve(w,"onChange");break;case "textarea":fe(p,m);h=ee(p,m);D("invalid",p);ve(w,"onChange");break;default:h=m}te(l,h);k=void 0;var Nb=l,La=p,u=h;for(k in u)if(u.hasOwnProperty(k)){var q=u[k];"style"===k?re(La,q):"dangerouslySetInnerHTML"===k?(q=q?q.__html:void 0,null!=q&&me(La,q)):"children"===k?"string"===typeof q?("textarea"!==Nb||""!==q)&&ne(La,q):"number"===typeof q&&ne(La,""+q):"suppressContentEditableWarning"!==k&&"suppressHydrationWarning"!==k&&"autoFocus"!==
+k&&(ra.hasOwnProperty(k)?null!=q&&ve(w,k):null!=q&&wc(La,k,q,U))}switch(l){case "input":Ub(p);Dc(p,m,!1);break;case "textarea":Ub(p);he(p,m);break;case "option":null!=m.value&&p.setAttribute("value",""+xc(m.value));break;case "select":h=p;h.multiple=!!m.multiple;p=m.value;null!=p?de(h,!!m.multiple,p,!1):null!=m.defaultValue&&de(h,!!m.multiple,m.defaultValue,!0);break;default:"function"===typeof h.onClick&&(p.onclick=we)}(g=ze(f,g))&&th(b);b.stateNode=e}null!==b.ref&&(b.effectTag|=128)}else null===
+b.stateNode?x("166"):void 0;break;case 6:e&&null!=b.stateNode?xh(e,b,e.memoizedProps,g):("string"!==typeof g&&(null===b.stateNode?x("166"):void 0),e=Nf(Mf.current),Nf(M.current),Ng(b)?(g=b,f=g.stateNode,e=g.memoizedProps,f[Fa]=g,(g=f.nodeValue!==e)&&th(b)):(f=b,g=(9===e.nodeType?e:e.ownerDocument).createTextNode(g),g[Fa]=b,f.stateNode=g));break;case 11:break;case 13:g=b.memoizedState;if(0!==(b.effectTag&64)){b.expirationTime=f;R=b;break a}g=null!==g;f=null!==e&&null!==e.memoizedState;null!==e&&!g&&
+f&&(e=e.child.sibling,null!==e&&(h=b.firstEffect,null!==h?(b.firstEffect=e,e.nextEffect=h):(b.firstEffect=b.lastEffect=e,e.nextEffect=null),e.effectTag=8));if(g||f)b.effectTag|=4;break;case 7:break;case 8:break;case 12:break;case 4:Pf(b);vh(b);break;case 10:hh(b);break;case 9:break;case 14:break;case 17:I(b.type)&&Ne(b);break;case 18:break;default:x("156")}R=null}a.mode&4&&Fg(a,!1);b=a;if(1===S||1!==b.childExpirationTime){g=0;if(b.mode&4){f=b.actualDuration;e=b.selfBaseDuration;h=null===b.alternate||
+b.child!==b.alternate.child;for(m=b.child;null!==m;)p=m.expirationTime,l=m.childExpirationTime,p>g&&(g=p),l>g&&(g=l),h&&(f+=m.actualDuration),e+=m.treeBaseDuration,m=m.sibling;b.actualDuration=f;b.treeBaseDuration=e}else for(f=b.child;null!==f;)e=f.expirationTime,h=f.childExpirationTime,e>g&&(g=e),h>g&&(g=h),f=f.sibling;b.childExpirationTime=g}if(null!==R)return R;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=
+a.firstEffect),c.lastEffect=a.lastEffect),1<a.effectTag&&(null!==c.lastEffect?c.lastEffect.nextEffect=a:c.firstEffect=a,c.lastEffect=a))}else{if(a.mode&4){Fg(a,!1);b=a.actualDuration;for(g=a.child;null!==g;)b+=g.actualDuration,g=g.sibling;a.actualDuration=b}a=Th(a,S);if(null!==a)return a.effectTag&=1023,a;null!==c&&(c.firstEffect=c.lastEffect=null,c.effectTag|=1024)}if(null!==d)return d;if(null!==c)a=c;else break}return null}
+function ni(a){var b=a.alternate;a.mode&4&&Eg(a);b=bh(b,a,S);a.memoizedProps=a.pendingProps;a.mode&4&&Fg(a,!0);null===b&&(b=mi(a));Vh.current=null;return b}
 function oi(a,b){Xh?x("243"):void 0;tf();Xh=!0;var c=Uh.current;Uh.current=pg;var d=a.nextExpirationTimeToWorkOn;if(d!==S||a!==Yh||null===R){ci();Yh=a;S=d;R=af(Yh.current,null,S);a.pendingCommitExpirationTime=0;var e=new Set;a.pendingInteractionMap.forEach(function(a,b){b>=d&&a.forEach(function(a){return e.add(a)})});a.memoizedInteractions=e;if(0<e.size){var f=v.__subscriberRef.current;if(null!==f){var g=1E3*d+a.interactionThreadID;try{f.onWorkStarted(e,g)}catch(l){X||(X=!0,li=l)}}}}f=null;f=v.__interactionsRef.current;
 v.__interactionsRef.current=a.memoizedInteractions;g=!1;do{try{if(b)for(;null!==R&&!pi();)R=ni(R);else for(;null!==R;)R=ni(R)}catch(l){if(gh=fh=eh=null,qg(),null===R)g=!0,Mh(l);else{R.mode&4&&Fg(R,!0);null===R?x("271"):void 0;var h=R,k=h.return;if(null===k)g=!0,Mh(l);else{Ph(a,k,h,l,S);R=mi(h);continue}}}break}while(1);v.__interactionsRef.current=f;Xh=!1;Uh.current=c;gh=fh=eh=null;qg();if(g)Yh=null,a.finishedWork=null;else if(null!==R)a.finishedWork=null;else{c=a.current.alternate;null===c?x("281"):
 void 0;Yh=null;if(Sh){if(kf(a,d)){lf(a,d);qi(a,c,d,a.expirationTime,-1);return}if(!a.didError&&b){a.didError=!0;b=a.nextExpirationTimeToWorkOn=d;f=a.expirationTime=1073741823;qi(a,c,b,f,-1);return}}b&&-1!==Rh?(lf(a,d),b=10*(1073741822-mf(a,d)),b<Rh&&(Rh=b),b=10*(1073741822-qf()),b=Rh-b,qi(a,c,d,a.expirationTime,0>b?0:b)):ri(a,c,d)}}
@@ -274,4 +275,4 @@ function cj(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:nu
 var ej={createPortal:cj,findDOMNode:function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;void 0===b&&("function"===typeof a.render?x("188"):x("268",Object.keys(a)));a=kd(b);a=null===a?null:a.stateNode;return a},hydrate:function(a,b,c){$i(b)?void 0:x("200");return bj(null,a,b,!0,c)},render:function(a,b,c){$i(b)?void 0:x("200");return bj(null,a,b,!1,c)},unstable_renderSubtreeIntoContainer:function(a,b,c,d){$i(c)?void 0:x("200");null==a||void 0===a._reactInternalFiber?
 x("38"):void 0;return bj(a,b,c,!1,d)},unmountComponentAtNode:function(a){$i(a)?void 0:x("40");return a._reactRootContainer?(Ri(function(){bj(null,null,a,!1,function(){a._reactRootContainer=null})}),!0):!1},unstable_createPortal:function(){return cj.apply(void 0,arguments)},unstable_batchedUpdates:Qi,unstable_interactiveUpdates:Si,flushSync:function(a,b){V?x("187"):void 0;var c=W;W=!0;try{return wi(a,b)}finally{W=c,ii(1073741823,!1)}},unstable_createRoot:dj,unstable_flushControlled:function(a){var b=
 W;W=!0;try{wi(a)}finally{(W=b)||V||ii(1073741823,!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[Ia,Ja,Ka,Ba.injectEventPluginsByName,pa,Ra,function(a){ya(a,Qa)},Gb,Hb,Gd,Da]}};function dj(a,b){$i(a)?void 0:x("299","unstable_createRoot");return new Zi(a,!0,null!=b&&!0===b.hydrate)}
-(function(a){var b=a.findFiberByHostInstance;return Xe(n({},a,{overrideProps:null,currentDispatcherRef:Wb.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=kd(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:Ha,bundleType:0,version:"16.8.3",rendererPackageName:"react-dom"});var fj={default:ej},gj=fj&&ej||fj;module.exports=gj.default||gj;
+(function(a){var b=a.findFiberByHostInstance;return Xe(n({},a,{overrideProps:null,currentDispatcherRef:Wb.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=kd(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:Ha,bundleType:0,version:"16.8.6",rendererPackageName:"react-dom"});var fj={default:ej},gj=fj&&ej||fj;module.exports=gj.default||gj;
diff --git a/node_modules/react-dom/package.json b/node_modules/react-dom/package.json
index 37509998..5d1ad1d8 100644
--- a/node_modules/react-dom/package.json
+++ b/node_modules/react-dom/package.json
@@ -1,6 +1,6 @@
 {
   "name": "react-dom",
-  "version": "16.8.3",
+  "version": "16.8.6",
   "description": "React package for working with the DOM.",
   "main": "index.js",
   "repository": {
@@ -20,7 +20,7 @@
     "loose-envify": "^1.1.0",
     "object-assign": "^4.1.1",
     "prop-types": "^15.6.2",
-    "scheduler": "^0.13.3"
+    "scheduler": "^0.13.6"
   },
   "peerDependencies": {
     "react": "^16.0.0"
diff --git a/node_modules/react-dom/umd/react-dom-server.browser.development.js b/node_modules/react-dom/umd/react-dom-server.browser.development.js
index cac5161b..3640bf9d 100644
--- a/node_modules/react-dom/umd/react-dom-server.browser.development.js
+++ b/node_modules/react-dom/umd/react-dom-server.browser.development.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-server.browser.development.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -62,7 +62,7 @@ function invariant(condition, format, a, b, c, d, e, f) {
 
 // TODO: this is special because it gets imported during build.
 
-var ReactVersion = '16.8.3';
+var ReactVersion = '16.8.6';
 
 var ReactInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
 
@@ -465,12 +465,12 @@ function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
 var checkPropTypes_1 = checkPropTypes;
 
 var ReactDebugCurrentFrame$1 = void 0;
+var didWarnAboutInvalidateContextType = void 0;
 {
   ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;
+  didWarnAboutInvalidateContextType = new Set();
 }
 
-var didWarnAboutInvalidateContextType = {};
-
 var emptyObject = {};
 {
   Object.freeze(emptyObject);
@@ -510,16 +510,33 @@ function validateContextBounds(context, threadID) {
 
 function processContext(type, context, threadID) {
   var contextType = type.contextType;
-  if (typeof contextType === 'object' && contextType !== null) {
-    {
-      if (contextType.$$typeof !== REACT_CONTEXT_TYPE) {
-        var name = getComponentName(type) || 'Component';
-        if (!didWarnAboutInvalidateContextType[name]) {
-          didWarnAboutInvalidateContextType[name] = true;
-          warningWithoutStack$1(false, '%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext(). ' + 'Did you accidentally pass the Context.Provider instead?', name);
+  {
+    if ('contextType' in type) {
+      var isValid =
+      // Allow null for conditional declaration
+      contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a <Context.Consumer>
+
+      if (!isValid && !didWarnAboutInvalidateContextType.has(type)) {
+        didWarnAboutInvalidateContextType.add(type);
+
+        var addendum = '';
+        if (contextType === undefined) {
+          addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.';
+        } else if (typeof contextType !== 'object') {
+          addendum = ' However, it is set to a ' + typeof contextType + '.';
+        } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {
+          addendum = ' Did you accidentally pass the Context.Provider instead?';
+        } else if (contextType._context !== undefined) {
+          // <Context.Consumer>
+          addendum = ' Did you accidentally pass the Context.Consumer instead?';
+        } else {
+          addendum = ' However, it is set to an object with keys {' + Object.keys(contextType).join(', ') + '}.';
         }
+        warningWithoutStack$1(false, '%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext().%s', getComponentName(type) || 'Component', addendum);
       }
     }
+  }
+  if (typeof contextType === 'object' && contextType !== null) {
     validateContextBounds(contextType, threadID);
     return contextType[threadID];
   } else {
@@ -1037,7 +1054,7 @@ var isInHookUserCodeInDev = false;
 var currentHookNameInDev = void 0;
 
 function resolveCurrentlyRenderingComponent() {
-  !(currentlyRenderingComponent !== null) ? invariant(false, 'Hooks can only be called inside the body of a function component. (https://fb.me/react-invalid-hook-call)') : void 0;
+  !(currentlyRenderingComponent !== null) ? invariant(false, 'Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.') : void 0;
   {
     !!isInHookUserCodeInDev ? warning$1(false, 'Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. ' + 'You can only call Hooks at the top level of your React function. ' + 'For more information, see ' + 'https://fb.me/rules-of-hooks') : void 0;
   }
@@ -1300,7 +1317,7 @@ function useLayoutEffect(create, inputs) {
   {
     currentHookNameInDev = 'useLayoutEffect';
   }
-  warning$1(false, 'useLayoutEffect does nothing on the server, because its effect cannot ' + "be encoded into the server renderer's output format. This will lead " + 'to a mismatch between the initial, non-hydrated UI and the intended ' + 'UI. To avoid this, useLayoutEffect should only be used in ' + 'components that render exclusively on the client.');
+  warning$1(false, 'useLayoutEffect does nothing on the server, because its effect cannot ' + "be encoded into the server renderer's output format. This will lead " + 'to a mismatch between the initial, non-hydrated UI and the intended ' + 'UI. To avoid this, useLayoutEffect should only be used in ' + 'components that render exclusively on the client. ' + 'See https://fb.me/react-uselayouteffect-ssr for common fixes.');
 }
 
 function dispatchAction(componentIdentity, queue, action) {
diff --git a/node_modules/react-dom/umd/react-dom-server.browser.production.min.js b/node_modules/react-dom/umd/react-dom-server.browser.production.min.js
index d1032231..0d679128 100644
--- a/node_modules/react-dom/umd/react-dom-server.browser.production.min.js
+++ b/node_modules/react-dom/umd/react-dom-server.browser.production.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-server.browser.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -11,7 +11,7 @@
 switch(a){case X:return"ConcurrentMode";case N:return"Fragment";case Y:return"Portal";case Z:return"Profiler";case aa:return"StrictMode";case O:return"Suspense"}if("object"===typeof a)switch(a.$$typeof){case ba:return"Context.Consumer";case P:return"Context.Provider";case ca:var b=a.render;b=b.displayName||b.name||"";return a.displayName||(""!==b?"ForwardRef("+b+")":"ForwardRef");case da:return J(a.type);case ea:if(a=1===a._status?a._result:null)return J(a)}return null}function F(a,b){for(var d=a._threadCount|
 0;d<=b;d++)a[d]=a._currentValue2,a._threadCount=d+1}function ua(a,b,d){var c=a.contextType;if("object"===typeof c&&null!==c)return F(c,d),c[d];if(a=a.contextTypes){d={};for(var f in a)d[f]=b[f];b=d}else b=fa;return b}function ha(a){if(ia.call(ja,a))return!0;if(ia.call(ka,a))return!1;if(va.test(a))return ja[a]=!0;ka[a]=!0;return!1}function wa(a,b,d,c){if(null!==d&&0===d.type)return!1;switch(typeof b){case "function":case "symbol":return!0;case "boolean":if(c)return!1;if(null!==d)return!d.acceptsBooleans;
 a=a.toLowerCase().slice(0,5);return"data-"!==a&&"aria-"!==a;default:return!1}}function xa(a,b,d,c){if(null===b||"undefined"===typeof b||wa(a,b,d,c))return!0;if(c)return!1;if(null!==d)switch(d.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function t(a,b,d,c,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=c;this.attributeNamespace=f;this.mustUseProperty=d;this.propertyName=a;this.type=b}function C(a){if("boolean"===typeof a||"number"===
-typeof a)return""+a;a=""+a;var b=ya.exec(a);if(b){var d="",c,f=0;for(c=b.index;c<a.length;c++){switch(a.charCodeAt(c)){case 34:b=""";break;case 38:b="&";break;case 39:b="&#x27;";break;case 60:b="<";break;case 62:b=">";break;default:continue}f!==c&&(d+=a.substring(f,c));f=c+1;d+=b}a=f!==c?d+a.substring(f,c):d}return a}function K(){null===x?u("307"):void 0;return x}function la(){0<L&&u("312");return{memoizedState:null,queue:null,next:null}}function Q(){null===k?null===M?(G=!1,M=k=la()):
+typeof a)return""+a;a=""+a;var b=ya.exec(a);if(b){var d="",c,f=0;for(c=b.index;c<a.length;c++){switch(a.charCodeAt(c)){case 34:b=""";break;case 38:b="&";break;case 39:b="&#x27;";break;case 60:b="<";break;case 62:b=">";break;default:continue}f!==c&&(d+=a.substring(f,c));f=c+1;d+=b}a=f!==c?d+a.substring(f,c):d}return a}function K(){null===x?u("321"):void 0;return x}function la(){0<L&&u("312");return{memoizedState:null,queue:null,next:null}}function Q(){null===k?null===M?(G=!1,M=k=la()):
 (G=!0,k=M):null===k.next?(G=!1,k=k.next=la()):(G=!0,k=k.next);return k}function ma(a,b,d,c){for(;R;)R=!1,L+=1,k=null,d=a(b,c);M=x=null;L=0;k=A=null;return d}function na(a,b){return"function"===typeof b?b(a):b}function oa(a,b,d){x=K();k=Q();if(G){var c=k.queue;b=c.dispatch;if(null!==A&&(d=A.get(c),void 0!==d)){A.delete(c);c=k.memoizedState;do c=a(c,d.action),d=d.next;while(null!==d);k.memoizedState=c;return[c,b]}return[k.memoizedState,b]}a=a===na?"function"===typeof b?b():b:void 0!==d?d(b):b;k.memoizedState=
 a;a=k.queue={last:null,dispatch:null};a=a.dispatch=za.bind(null,x,a);return[k.memoizedState,a]}function za(a,b,d){25>L?void 0:u("301");if(a===x)if(R=!0,a={action:d,next:null},null===A&&(A=new Map),d=A.get(b),void 0===d)A.set(b,a);else{for(b=d;null!==b.next;)b=b.next;b.next=a}}function S(){}function pa(a){switch(a){case "svg":return"http://www.w3.org/2000/svg";case "math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Aa(a){if(void 0===a||null===a)return a;
 var b="";v.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function qa(a,b){void 0===a&&u("152",J(b)||"Component")}function Ba(a,b,d){function c(c,f){var e=ua(f,b,d),g=[],h=!1,m={isMounted:function(a){return!1},enqueueForceUpdate:function(a){if(null===g)return null},enqueueReplaceState:function(a,b){h=!0;g=[b]},enqueueSetState:function(a,b){if(null===g)return null;g.push(b)}},l=void 0;if(f.prototype&&f.prototype.isReactComponent){if(l=new f(c.props,e,m),"function"===typeof f.getDerivedStateFromProps){var k=
@@ -40,5 +40,5 @@ e.defaultChecked});else if("textarea"===b){var h=e.value;if(null==h){h=e.default
 for(y in h)if(Ka.call(h,y)){var m=h[y];if(null!=m){if("style"===y){r=void 0;var l="",q="";for(r in m)if(m.hasOwnProperty(r)){var n=0===r.indexOf("--"),t=m[r];if(null!=t){var v=r;if(W.hasOwnProperty(v))v=W[v];else{var x=v.replace(Ga,"-$1").toLowerCase().replace(Ha,"-ms-");v=W[v]=x}l+=q+v+":";q=r;n=null==t||"boolean"===typeof t||""===t?"":n||"number"!==typeof t||0===t||I.hasOwnProperty(q)&&I[q]?(""+t).trim():t+"px";l+=n;q=";"}}m=l||null}r=null;b:if(n=b,t=h,-1===n.indexOf("-"))n="string"===typeof t.is;
 else switch(n){case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":n=!1;break b;default:n=!0}if(n)La.hasOwnProperty(y)||(r=y,r=ha(r)&&null!=m?r+"="+('"'+C(m)+'"'):"");else{n=y;r=m;m=w.hasOwnProperty(n)?w[n]:null;if(t="style"!==n)t=null!==m?0===m.type:!(2<n.length)||"o"!==n[0]&&"O"!==n[0]||"n"!==n[1]&&"N"!==n[1]?!1:!0;t||xa(n,r,m,!1)?r="":null!==m?(n=m.attributeName,m=m.type,r=3===m||
 4===m&&!0===r?n+'=""':n+"="+('"'+C(r)+'"')):r=ha(n)?n+"="+('"'+C(r)+'"'):""}r&&(p+=" "+r)}}g||k&&(p+=' data-reactroot=""');var y=p;h="";ra.hasOwnProperty(b)?y+="/>":(y+=">",h="</"+a.type+">");a:{g=e.dangerouslySetInnerHTML;if(null!=g){if(null!=g.__html){g=g.__html;break a}}else if(g=e.children,"string"===typeof g||"number"===typeof g){g=C(g);break a}g=null}null!=g?(e=[],Ia[b]&&"\n"===g.charAt(0)&&(y+="\n"),y+=g):e=B(e.children);a=a.type;c=null==c||"http://www.w3.org/1999/xhtml"===c?pa(a):"http://www.w3.org/2000/svg"===
-c&&"foreignObject"===a?"http://www.w3.org/1999/xhtml":c;this.stack.push({domNamespace:c,type:b,children:e,childIndex:0,context:d,footer:h});this.previousWasTextNode=!1;return y};return a}();p={renderToString:function(a){a=new ta(a,!1);try{return a.read(Infinity)}finally{a.destroy()}},renderToStaticMarkup:function(a){a=new ta(a,!0);try{return a.read(Infinity)}finally{a.destroy()}},renderToNodeStream:function(){u("207")},renderToStaticNodeStream:function(){u("208")},version:"16.8.3"};
+c&&"foreignObject"===a?"http://www.w3.org/1999/xhtml":c;this.stack.push({domNamespace:c,type:b,children:e,childIndex:0,context:d,footer:h});this.previousWasTextNode=!1;return y};return a}();p={renderToString:function(a){a=new ta(a,!1);try{return a.read(Infinity)}finally{a.destroy()}},renderToStaticMarkup:function(a){a=new ta(a,!0);try{return a.read(Infinity)}finally{a.destroy()}},renderToNodeStream:function(){u("207")},renderToStaticNodeStream:function(){u("208")},version:"16.8.6"};
 p=(D={default:p},p)||D;return p.default||p});
diff --git a/node_modules/react-dom/umd/react-dom-test-utils.development.js b/node_modules/react-dom/umd/react-dom-test-utils.development.js
index 2c8d2b66..8f54a165 100644
--- a/node_modules/react-dom/umd/react-dom-test-utils.development.js
+++ b/node_modules/react-dom/umd/react-dom-test-utils.development.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-test-utils.development.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/react-dom/umd/react-dom-test-utils.production.min.js b/node_modules/react-dom/umd/react-dom-test-utils.production.min.js
index 82106324..dc1f1374 100644
--- a/node_modules/react-dom/umd/react-dom-test-utils.production.min.js
+++ b/node_modules/react-dom/umd/react-dom-test-utils.production.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-test-utils.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/react-dom/umd/react-dom-unstable-fire.development.js b/node_modules/react-dom/umd/react-dom-unstable-fire.development.js
index 0fa1da6e..5929622a 100644
--- a/node_modules/react-dom/umd/react-dom-unstable-fire.development.js
+++ b/node_modules/react-dom/umd/react-dom-unstable-fire.development.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-unstable-fire.development.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -5435,15 +5435,29 @@ function isInDocument(node) {
   return node && node.ownerDocument && containsNode(node.ownerDocument.documentElement, node);
 }
 
+function isSameOriginFrame(iframe) {
+  try {
+    // Accessing the contentDocument of a HTMLIframeElement can cause the browser
+    // to throw, e.g. if it has a cross-origin src attribute.
+    // Safari will show an error in the console when the access results in "Blocked a frame with origin". e.g:
+    // iframe.contentDocument.defaultView;
+    // A safety way is to access one of the cross origin properties: Window or Location
+    // Which might result in "SecurityError" DOM Exception and it is compatible to Safari.
+    // https://html.spec.whatwg.org/multipage/browsers.html#integration-with-idl
+
+    return typeof iframe.contentWindow.location.href === 'string';
+  } catch (err) {
+    return false;
+  }
+}
+
 function getActiveElementDeep() {
   var win = window;
   var element = getActiveElement();
   while (element instanceof win.HTMLIFrameElement) {
-    // Accessing the contentDocument of a HTMLIframeElement can cause the browser
-    // to throw, e.g. if it has a cross-origin src attribute
-    try {
-      win = element.contentDocument.defaultView;
-    } catch (e) {
+    if (isSameOriginFrame(element)) {
+      win = element.contentWindow;
+    } else {
       return element;
     }
     element = getActiveElement(win.document);
@@ -7733,14 +7747,25 @@ function createElement(type, props, rootContainerElement, parentNamespace) {
       // See discussion in https://github.com/facebook/react/pull/6896
       // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240
       domElement = ownerDocument.createElement(type);
-      // Normally attributes are assigned in `setInitialDOMProperties`, however the `multiple`
-      // attribute on `select`s needs to be added before `option`s are inserted. This prevents
-      // a bug where the `select` does not scroll to the correct option because singular
-      // `select` elements automatically pick the first item.
+      // Normally attributes are assigned in `setInitialDOMProperties`, however the `multiple` and `size`
+      // attributes on `select`s needs to be added before `option`s are inserted.
+      // This prevents:
+      // - a bug where the `select` does not scroll to the correct option because singular
+      //  `select` elements automatically pick the first item #13222
+      // - a bug where the `select` set the first item as selected despite the `size` attribute #14239
       // See https://github.com/facebook/react/issues/13222
-      if (type === 'select' && props.multiple) {
+      // and https://github.com/facebook/react/issues/14239
+      if (type === 'select') {
         var node = domElement;
-        node.multiple = true;
+        if (props.multiple) {
+          node.multiple = true;
+        } else if (props.size) {
+          // Setting a size greater than 1 causes a select to behave like `multiple=true`, where
+          // it is possible that no option is selected.
+          //
+          // This is only necessary when a select in "single selection mode".
+          node.size = props.size;
+        }
       }
     }
   } else {
@@ -10127,6 +10152,7 @@ function FiberNode(tag, pendingProps, key, mode) {
     this._debugSource = null;
     this._debugOwner = null;
     this._debugIsCurrentlyTiming = false;
+    this._debugHookTypes = null;
     if (!hasBadMapPolyfill && typeof Object.preventExtensions === 'function') {
       Object.preventExtensions(this);
     }
@@ -10194,6 +10220,7 @@ function createWorkInProgress(current, pendingProps, expirationTime) {
       workInProgress._debugID = current._debugID;
       workInProgress._debugSource = current._debugSource;
       workInProgress._debugOwner = current._debugOwner;
+      workInProgress._debugHookTypes = current._debugHookTypes;
     }
 
     workInProgress.alternate = current;
@@ -10461,6 +10488,7 @@ function assignFiberPropertiesInDEV(target, source) {
   target._debugSource = source._debugSource;
   target._debugOwner = source._debugOwner;
   target._debugIsCurrentlyTiming = source._debugIsCurrentlyTiming;
+  target._debugHookTypes = source._debugHookTypes;
   return target;
 }
 
@@ -11425,14 +11453,35 @@ function constructClassInstance(workInProgress, ctor, props, renderExpirationTim
   var unmaskedContext = emptyContextObject;
   var context = null;
   var contextType = ctor.contextType;
-  if (typeof contextType === 'object' && contextType !== null) {
-    {
-      if (contextType.$$typeof !== REACT_CONTEXT_TYPE && !didWarnAboutInvalidateContextType.has(ctor)) {
+
+  {
+    if ('contextType' in ctor) {
+      var isValid =
+      // Allow null for conditional declaration
+      contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a <Context.Consumer>
+
+      if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) {
         didWarnAboutInvalidateContextType.add(ctor);
-        warningWithoutStack$1(false, '%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext(). ' + 'Did you accidentally pass the Context.Provider instead?', getComponentName(ctor) || 'Component');
+
+        var addendum = '';
+        if (contextType === undefined) {
+          addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.';
+        } else if (typeof contextType !== 'object') {
+          addendum = ' However, it is set to a ' + typeof contextType + '.';
+        } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {
+          addendum = ' Did you accidentally pass the Context.Provider instead?';
+        } else if (contextType._context !== undefined) {
+          // <Context.Consumer>
+          addendum = ' Did you accidentally pass the Context.Consumer instead?';
+        } else {
+          addendum = ' However, it is set to an object with keys {' + Object.keys(contextType).join(', ') + '}.';
+        }
+        warningWithoutStack$1(false, '%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext().%s', getComponentName(ctor) || 'Component', addendum);
       }
     }
+  }
 
+  if (typeof contextType === 'object' && contextType !== null) {
     context = readContext(contextType);
   } else {
     unmaskedContext = getUnmaskedContext(workInProgress, ctor, true);
@@ -12859,7 +12908,6 @@ var currentlyRenderingFiber$1 = null;
 // current hook list is the list that belongs to the current fiber. The
 // work-in-progress hook list is a new list that will be added to the
 // work-in-progress fiber.
-var firstCurrentHook = null;
 var currentHook = null;
 var nextCurrentHook = null;
 var firstWorkInProgressHook = null;
@@ -12889,45 +12937,73 @@ var RE_RENDER_LIMIT = 25;
 // In DEV, this is the name of the currently executing primitive hook
 var currentHookNameInDev = null;
 
-function warnOnHookMismatchInDev() {
+// In DEV, this list ensures that hooks are called in the same order between renders.
+// The list stores the order of hooks used during the initial render (mount).
+// Subsequent renders (updates) reference this list.
+var hookTypesDev = null;
+var hookTypesUpdateIndexDev = -1;
+
+function mountHookTypesDev() {
+  {
+    var hookName = currentHookNameInDev;
+
+    if (hookTypesDev === null) {
+      hookTypesDev = [hookName];
+    } else {
+      hookTypesDev.push(hookName);
+    }
+  }
+}
+
+function updateHookTypesDev() {
+  {
+    var hookName = currentHookNameInDev;
+
+    if (hookTypesDev !== null) {
+      hookTypesUpdateIndexDev++;
+      if (hookTypesDev[hookTypesUpdateIndexDev] !== hookName) {
+        warnOnHookMismatchInDev(hookName);
+      }
+    }
+  }
+}
+
+function warnOnHookMismatchInDev(currentHookName) {
   {
     var componentName = getComponentName(currentlyRenderingFiber$1.type);
     if (!didWarnAboutMismatchedHooksForComponent.has(componentName)) {
       didWarnAboutMismatchedHooksForComponent.add(componentName);
 
-      var secondColumnStart = 22;
+      if (hookTypesDev !== null) {
+        var table = '';
 
-      var table = '';
-      var prevHook = firstCurrentHook;
-      var nextHook = firstWorkInProgressHook;
-      var n = 1;
-      while (prevHook !== null && nextHook !== null) {
-        var oldHookName = prevHook._debugType;
-        var newHookName = nextHook._debugType;
+        var secondColumnStart = 30;
 
-        var row = n + '. ' + oldHookName;
+        for (var i = 0; i <= hookTypesUpdateIndexDev; i++) {
+          var oldHookName = hookTypesDev[i];
+          var newHookName = i === hookTypesUpdateIndexDev ? currentHookName : oldHookName;
 
-        // Extra space so second column lines up
-        // lol @ IE not supporting String#repeat
-        while (row.length < secondColumnStart) {
-          row += ' ';
-        }
+          var row = i + 1 + '. ' + oldHookName;
+
+          // Extra space so second column lines up
+          // lol @ IE not supporting String#repeat
+          while (row.length < secondColumnStart) {
+            row += ' ';
+          }
 
-        row += newHookName + '\n';
+          row += newHookName + '\n';
 
-        table += row;
-        prevHook = prevHook.next;
-        nextHook = nextHook.next;
-        n++;
-      }
+          table += row;
+        }
 
-      warning$1(false, 'React has detected a change in the order of Hooks called by %s. ' + 'This will lead to bugs and errors if not fixed. ' + 'For more information, read the Rules of Hooks: https://fb.me/rules-of-hooks\n\n' + '   Previous render    Next render\n' + '   -------------------------------\n' + '%s' + '   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n', componentName, table);
+        warning$1(false, 'React has detected a change in the order of Hooks called by %s. ' + 'This will lead to bugs and errors if not fixed. ' + 'For more information, read the Rules of Hooks: https://fb.me/rules-of-hooks\n\n' + '   Previous render            Next render\n' + '   ------------------------------------------------------\n' + '%s' + '   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n', componentName, table);
+      }
     }
   }
 }
 
 function throwInvalidHookError() {
-  invariant(false, 'Hooks can only be called inside the body of a function component. (https://fb.me/react-invalid-hook-call)');
+  invariant(false, 'Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.');
 }
 
 function areHookInputsEqual(nextDeps, prevDeps) {
@@ -12957,7 +13033,12 @@ function areHookInputsEqual(nextDeps, prevDeps) {
 function renderWithHooks(current, workInProgress, Component, props, refOrContext, nextRenderExpirationTime) {
   renderExpirationTime = nextRenderExpirationTime;
   currentlyRenderingFiber$1 = workInProgress;
-  firstCurrentHook = nextCurrentHook = current !== null ? current.memoizedState : null;
+  nextCurrentHook = current !== null ? current.memoizedState : null;
+
+  {
+    hookTypesDev = current !== null ? current._debugHookTypes : null;
+    hookTypesUpdateIndexDev = -1;
+  }
 
   // The following should have already been reset
   // currentHook = null;
@@ -12971,8 +13052,26 @@ function renderWithHooks(current, workInProgress, Component, props, refOrContext
   // numberOfReRenders = 0;
   // sideEffectTag = 0;
 
+  // TODO Warn if no hooks are used at all during mount, then some are used during update.
+  // Currently we will identify the update render as a mount because nextCurrentHook === null.
+  // This is tricky because it's valid for certain types of components (e.g. React.lazy)
+
+  // Using nextCurrentHook to differentiate between mount/update only works if at least one stateful hook is used.
+  // Non-stateful hooks (e.g. context) don't get added to memoizedState,
+  // so nextCurrentHook would be null during updates and mounts.
   {
-    ReactCurrentDispatcher$1.current = nextCurrentHook === null ? HooksDispatcherOnMountInDEV : HooksDispatcherOnUpdateInDEV;
+    if (nextCurrentHook !== null) {
+      ReactCurrentDispatcher$1.current = HooksDispatcherOnUpdateInDEV;
+    } else if (hookTypesDev !== null) {
+      // This dispatcher handles an edge case where a component is updating,
+      // but no stateful hooks have been used.
+      // We want to match the production code behavior (which will use HooksDispatcherOnMount),
+      // but with the extra DEV validation to ensure hooks ordering hasn't changed.
+      // This dispatcher does that.
+      ReactCurrentDispatcher$1.current = HooksDispatcherOnMountWithHookTypesInDEV;
+    } else {
+      ReactCurrentDispatcher$1.current = HooksDispatcherOnMountInDEV;
+    }
   }
 
   var children = Component(props, refOrContext);
@@ -12983,13 +13082,18 @@ function renderWithHooks(current, workInProgress, Component, props, refOrContext
       numberOfReRenders += 1;
 
       // Start over from the beginning of the list
-      firstCurrentHook = nextCurrentHook = current !== null ? current.memoizedState : null;
+      nextCurrentHook = current !== null ? current.memoizedState : null;
       nextWorkInProgressHook = firstWorkInProgressHook;
 
       currentHook = null;
       workInProgressHook = null;
       componentUpdateQueue = null;
 
+      {
+        // Also validate hook order for cascading updates.
+        hookTypesUpdateIndexDev = -1;
+      }
+
       ReactCurrentDispatcher$1.current = HooksDispatcherOnUpdateInDEV;
 
       children = Component(props, refOrContext);
@@ -12999,10 +13103,6 @@ function renderWithHooks(current, workInProgress, Component, props, refOrContext
     numberOfReRenders = 0;
   }
 
-  {
-    currentHookNameInDev = null;
-  }
-
   // We can assume the previous dispatcher is always this one, since we set it
   // at the beginning of the render phase and there's no re-entrancy.
   ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;
@@ -13014,18 +13114,29 @@ function renderWithHooks(current, workInProgress, Component, props, refOrContext
   renderedWork.updateQueue = componentUpdateQueue;
   renderedWork.effectTag |= sideEffectTag;
 
+  {
+    renderedWork._debugHookTypes = hookTypesDev;
+  }
+
+  // This check uses currentHook so that it works the same in DEV and prod bundles.
+  // hookTypesDev could catch more cases (e.g. context) but only in DEV bundles.
   var didRenderTooFewHooks = currentHook !== null && currentHook.next !== null;
 
   renderExpirationTime = NoWork;
   currentlyRenderingFiber$1 = null;
 
-  firstCurrentHook = null;
   currentHook = null;
   nextCurrentHook = null;
   firstWorkInProgressHook = null;
   workInProgressHook = null;
   nextWorkInProgressHook = null;
 
+  {
+    currentHookNameInDev = null;
+    hookTypesDev = null;
+    hookTypesUpdateIndexDev = -1;
+  }
+
   remainingExpirationTime = NoWork;
   componentUpdateQueue = null;
   sideEffectTag = 0;
@@ -13059,21 +13170,23 @@ function resetHooks() {
   renderExpirationTime = NoWork;
   currentlyRenderingFiber$1 = null;
 
-  firstCurrentHook = null;
   currentHook = null;
   nextCurrentHook = null;
   firstWorkInProgressHook = null;
   workInProgressHook = null;
   nextWorkInProgressHook = null;
 
-  remainingExpirationTime = NoWork;
-  componentUpdateQueue = null;
-  sideEffectTag = 0;
-
   {
+    hookTypesDev = null;
+    hookTypesUpdateIndexDev = -1;
+
     currentHookNameInDev = null;
   }
 
+  remainingExpirationTime = NoWork;
+  componentUpdateQueue = null;
+  sideEffectTag = 0;
+
   didScheduleRenderPhaseUpdate = false;
   renderPhaseUpdates = null;
   numberOfReRenders = 0;
@@ -13090,9 +13203,6 @@ function mountWorkInProgressHook() {
     next: null
   };
 
-  {
-    hook._debugType = currentHookNameInDev;
-  }
   if (workInProgressHook === null) {
     // This is the first hook in the list
     firstWorkInProgressHook = workInProgressHook = hook;
@@ -13139,13 +13249,6 @@ function updateWorkInProgressHook() {
       workInProgressHook = workInProgressHook.next = newHook;
     }
     nextCurrentHook = currentHook.next;
-
-    {
-      newHook._debugType = currentHookNameInDev;
-      if (currentHookNameInDev !== currentHook._debugType) {
-        warnOnHookMismatchInDev();
-      }
-    }
   }
   return workInProgressHook;
 }
@@ -13160,20 +13263,6 @@ function basicStateReducer(state, action) {
   return typeof action === 'function' ? action(state) : action;
 }
 
-function mountContext(context, observedBits) {
-  {
-    mountWorkInProgressHook();
-  }
-  return readContext(context, observedBits);
-}
-
-function updateContext(context, observedBits) {
-  {
-    updateWorkInProgressHook();
-  }
-  return readContext(context, observedBits);
-}
-
 function mountReducer(reducer, initialArg, init) {
   var hook = mountWorkInProgressHook();
   var initialState = void 0;
@@ -13186,8 +13275,8 @@ function mountReducer(reducer, initialArg, init) {
   var queue = hook.queue = {
     last: null,
     dispatch: null,
-    eagerReducer: reducer,
-    eagerState: initialState
+    lastRenderedReducer: reducer,
+    lastRenderedState: initialState
   };
   var dispatch = queue.dispatch = dispatchAction.bind(null,
   // Flow doesn't know this is non-null, but we do.
@@ -13200,6 +13289,8 @@ function updateReducer(reducer, initialArg, init) {
   var queue = hook.queue;
   !(queue !== null) ? invariant(false, 'Should have a queue. This is likely a bug in React. Please file an issue.') : void 0;
 
+  queue.lastRenderedReducer = reducer;
+
   if (numberOfReRenders > 0) {
     // This is a re-render. Apply the new render phase updates to the previous
     var _dispatch = queue.dispatch;
@@ -13234,8 +13325,7 @@ function updateReducer(reducer, initialArg, init) {
           hook.baseState = newState;
         }
 
-        queue.eagerReducer = reducer;
-        queue.eagerState = newState;
+        queue.lastRenderedState = newState;
 
         return [newState, _dispatch];
       }
@@ -13314,8 +13404,7 @@ function updateReducer(reducer, initialArg, init) {
     hook.baseUpdate = newBaseUpdate;
     hook.baseState = newBaseState;
 
-    queue.eagerReducer = reducer;
-    queue.eagerState = _newState;
+    queue.lastRenderedState = _newState;
   }
 
   var dispatch = queue.dispatch;
@@ -13331,8 +13420,8 @@ function mountState(initialState) {
   var queue = hook.queue = {
     last: null,
     dispatch: null,
-    eagerReducer: basicStateReducer,
-    eagerState: initialState
+    lastRenderedReducer: basicStateReducer,
+    lastRenderedState: initialState
   };
   var dispatch = queue.dispatch = dispatchAction.bind(null,
   // Flow doesn't know this is non-null, but we do.
@@ -13609,21 +13698,21 @@ function dispatchAction(fiber, queue, action) {
       // The queue is currently empty, which means we can eagerly compute the
       // next state before entering the render phase. If the new state is the
       // same as the current state, we may be able to bail out entirely.
-      var _eagerReducer = queue.eagerReducer;
-      if (_eagerReducer !== null) {
+      var _lastRenderedReducer = queue.lastRenderedReducer;
+      if (_lastRenderedReducer !== null) {
         var prevDispatcher = void 0;
         {
           prevDispatcher = ReactCurrentDispatcher$1.current;
           ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
         }
         try {
-          var currentState = queue.eagerState;
-          var _eagerState = _eagerReducer(currentState, action);
+          var currentState = queue.lastRenderedState;
+          var _eagerState = _lastRenderedReducer(currentState, action);
           // Stash the eagerly computed state, and the reducer used to compute
           // it, on the update object. If the reducer hasn't changed by the
           // time we enter the render phase, then the eager state can be used
           // without calling the reducer again.
-          _update2.eagerReducer = _eagerReducer;
+          _update2.eagerReducer = _lastRenderedReducer;
           _update2.eagerState = _eagerState;
           if (is(_eagerState, currentState)) {
             // Fast path. We can bail out without scheduling React to re-render.
@@ -13666,6 +13755,7 @@ var ContextOnlyDispatcher = {
 };
 
 var HooksDispatcherOnMountInDEV = null;
+var HooksDispatcherOnMountWithHookTypesInDEV = null;
 var HooksDispatcherOnUpdateInDEV = null;
 var InvalidNestedHooksDispatcherOnMountInDEV = null;
 var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
@@ -13685,26 +13775,32 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useCallback: function (callback, deps) {
       currentHookNameInDev = 'useCallback';
+      mountHookTypesDev();
       return mountCallback(callback, deps);
     },
     useContext: function (context, observedBits) {
       currentHookNameInDev = 'useContext';
-      return mountContext(context, observedBits);
+      mountHookTypesDev();
+      return readContext(context, observedBits);
     },
     useEffect: function (create, deps) {
       currentHookNameInDev = 'useEffect';
+      mountHookTypesDev();
       return mountEffect(create, deps);
     },
     useImperativeHandle: function (ref, create, deps) {
       currentHookNameInDev = 'useImperativeHandle';
+      mountHookTypesDev();
       return mountImperativeHandle(ref, create, deps);
     },
     useLayoutEffect: function (create, deps) {
       currentHookNameInDev = 'useLayoutEffect';
+      mountHookTypesDev();
       return mountLayoutEffect(create, deps);
     },
     useMemo: function (create, deps) {
       currentHookNameInDev = 'useMemo';
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13715,6 +13811,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useReducer: function (reducer, initialArg, init) {
       currentHookNameInDev = 'useReducer';
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13725,10 +13822,12 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useRef: function (initialValue) {
       currentHookNameInDev = 'useRef';
+      mountHookTypesDev();
       return mountRef(initialValue);
     },
     useState: function (initialState) {
       currentHookNameInDev = 'useState';
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13739,6 +13838,81 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useDebugValue: function (value, formatterFn) {
       currentHookNameInDev = 'useDebugValue';
+      mountHookTypesDev();
+      return mountDebugValue(value, formatterFn);
+    }
+  };
+
+  HooksDispatcherOnMountWithHookTypesInDEV = {
+    readContext: function (context, observedBits) {
+      return readContext(context, observedBits);
+    },
+    useCallback: function (callback, deps) {
+      currentHookNameInDev = 'useCallback';
+      updateHookTypesDev();
+      return mountCallback(callback, deps);
+    },
+    useContext: function (context, observedBits) {
+      currentHookNameInDev = 'useContext';
+      updateHookTypesDev();
+      return readContext(context, observedBits);
+    },
+    useEffect: function (create, deps) {
+      currentHookNameInDev = 'useEffect';
+      updateHookTypesDev();
+      return mountEffect(create, deps);
+    },
+    useImperativeHandle: function (ref, create, deps) {
+      currentHookNameInDev = 'useImperativeHandle';
+      updateHookTypesDev();
+      return mountImperativeHandle(ref, create, deps);
+    },
+    useLayoutEffect: function (create, deps) {
+      currentHookNameInDev = 'useLayoutEffect';
+      updateHookTypesDev();
+      return mountLayoutEffect(create, deps);
+    },
+    useMemo: function (create, deps) {
+      currentHookNameInDev = 'useMemo';
+      updateHookTypesDev();
+      var prevDispatcher = ReactCurrentDispatcher$1.current;
+      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
+      try {
+        return mountMemo(create, deps);
+      } finally {
+        ReactCurrentDispatcher$1.current = prevDispatcher;
+      }
+    },
+    useReducer: function (reducer, initialArg, init) {
+      currentHookNameInDev = 'useReducer';
+      updateHookTypesDev();
+      var prevDispatcher = ReactCurrentDispatcher$1.current;
+      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
+      try {
+        return mountReducer(reducer, initialArg, init);
+      } finally {
+        ReactCurrentDispatcher$1.current = prevDispatcher;
+      }
+    },
+    useRef: function (initialValue) {
+      currentHookNameInDev = 'useRef';
+      updateHookTypesDev();
+      return mountRef(initialValue);
+    },
+    useState: function (initialState) {
+      currentHookNameInDev = 'useState';
+      updateHookTypesDev();
+      var prevDispatcher = ReactCurrentDispatcher$1.current;
+      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
+      try {
+        return mountState(initialState);
+      } finally {
+        ReactCurrentDispatcher$1.current = prevDispatcher;
+      }
+    },
+    useDebugValue: function (value, formatterFn) {
+      currentHookNameInDev = 'useDebugValue';
+      updateHookTypesDev();
       return mountDebugValue(value, formatterFn);
     }
   };
@@ -13749,26 +13923,32 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useCallback: function (callback, deps) {
       currentHookNameInDev = 'useCallback';
+      updateHookTypesDev();
       return updateCallback(callback, deps);
     },
     useContext: function (context, observedBits) {
       currentHookNameInDev = 'useContext';
-      return updateContext(context, observedBits);
+      updateHookTypesDev();
+      return readContext(context, observedBits);
     },
     useEffect: function (create, deps) {
       currentHookNameInDev = 'useEffect';
+      updateHookTypesDev();
       return updateEffect(create, deps);
     },
     useImperativeHandle: function (ref, create, deps) {
       currentHookNameInDev = 'useImperativeHandle';
+      updateHookTypesDev();
       return updateImperativeHandle(ref, create, deps);
     },
     useLayoutEffect: function (create, deps) {
       currentHookNameInDev = 'useLayoutEffect';
+      updateHookTypesDev();
       return updateLayoutEffect(create, deps);
     },
     useMemo: function (create, deps) {
       currentHookNameInDev = 'useMemo';
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13779,6 +13959,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useReducer: function (reducer, initialArg, init) {
       currentHookNameInDev = 'useReducer';
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13789,10 +13970,12 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useRef: function (initialValue) {
       currentHookNameInDev = 'useRef';
+      updateHookTypesDev();
       return updateRef(initialValue);
     },
     useState: function (initialState) {
       currentHookNameInDev = 'useState';
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13803,6 +13986,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useDebugValue: function (value, formatterFn) {
       currentHookNameInDev = 'useDebugValue';
+      updateHookTypesDev();
       return updateDebugValue(value, formatterFn);
     }
   };
@@ -13815,31 +13999,37 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useCallback: function (callback, deps) {
       currentHookNameInDev = 'useCallback';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountCallback(callback, deps);
     },
     useContext: function (context, observedBits) {
       currentHookNameInDev = 'useContext';
       warnInvalidHookAccess();
-      return mountContext(context, observedBits);
+      mountHookTypesDev();
+      return readContext(context, observedBits);
     },
     useEffect: function (create, deps) {
       currentHookNameInDev = 'useEffect';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountEffect(create, deps);
     },
     useImperativeHandle: function (ref, create, deps) {
       currentHookNameInDev = 'useImperativeHandle';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountImperativeHandle(ref, create, deps);
     },
     useLayoutEffect: function (create, deps) {
       currentHookNameInDev = 'useLayoutEffect';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountLayoutEffect(create, deps);
     },
     useMemo: function (create, deps) {
       currentHookNameInDev = 'useMemo';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13851,6 +14041,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useReducer: function (reducer, initialArg, init) {
       currentHookNameInDev = 'useReducer';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13862,11 +14053,13 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useRef: function (initialValue) {
       currentHookNameInDev = 'useRef';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountRef(initialValue);
     },
     useState: function (initialState) {
       currentHookNameInDev = 'useState';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13878,6 +14071,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useDebugValue: function (value, formatterFn) {
       currentHookNameInDev = 'useDebugValue';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountDebugValue(value, formatterFn);
     }
   };
@@ -13890,31 +14084,37 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useCallback: function (callback, deps) {
       currentHookNameInDev = 'useCallback';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateCallback(callback, deps);
     },
     useContext: function (context, observedBits) {
       currentHookNameInDev = 'useContext';
       warnInvalidHookAccess();
-      return updateContext(context, observedBits);
+      updateHookTypesDev();
+      return readContext(context, observedBits);
     },
     useEffect: function (create, deps) {
       currentHookNameInDev = 'useEffect';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateEffect(create, deps);
     },
     useImperativeHandle: function (ref, create, deps) {
       currentHookNameInDev = 'useImperativeHandle';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateImperativeHandle(ref, create, deps);
     },
     useLayoutEffect: function (create, deps) {
       currentHookNameInDev = 'useLayoutEffect';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateLayoutEffect(create, deps);
     },
     useMemo: function (create, deps) {
       currentHookNameInDev = 'useMemo';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13926,6 +14126,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useReducer: function (reducer, initialArg, init) {
       currentHookNameInDev = 'useReducer';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13937,11 +14138,13 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useRef: function (initialValue) {
       currentHookNameInDev = 'useRef';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateRef(initialValue);
     },
     useState: function (initialState) {
       currentHookNameInDev = 'useState';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13953,6 +14156,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useDebugValue: function (value, formatterFn) {
       currentHookNameInDev = 'useDebugValue';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateDebugValue(value, formatterFn);
     }
   };
@@ -17224,11 +17428,11 @@ function commitHookEffectList(unmountTag, mountTag, finishedWork) {
             if (_destroy === null) {
               addendum = ' You returned null. If your effect does not require clean ' + 'up, return undefined (or nothing).';
             } else if (typeof _destroy.then === 'function') {
-              addendum = '\n\nIt looks like you wrote useEffect(async () => ...) or returned a Promise. ' + 'Instead, you may write an async function separately ' + 'and then call it from inside the effect:\n\n' + 'async function fetchComment(commentId) {\n' + '  // You can await here\n' + '}\n\n' + 'useEffect(() => {\n' + '  fetchComment(commentId);\n' + '}, [commentId]);\n\n' + 'In the future, React will provide a more idiomatic solution for data fetching ' + "that doesn't involve writing effects manually.";
+              addendum = '\n\nIt looks like you wrote useEffect(async () => ...) or returned a Promise. ' + 'Instead, write the async function inside your effect ' + 'and call it immediately:\n\n' + 'useEffect(() => {\n' + '  async function fetchData() {\n' + '    // You can await here\n' + '    const response = await MyAPI.getData(someId);\n' + '    // ...\n' + '  }\n' + '  fetchData();\n' + '}, [someId]); // Or [] if effect doesn\'t need props or state\n\n' + 'Learn more about data fetching with Hooks: https://fb.me/react-hooks-data-fetching';
             } else {
               addendum = ' You returned: ' + _destroy;
             }
-            warningWithoutStack$1(false, 'An Effect function must not return anything besides a function, ' + 'which is used for clean-up.%s%s', addendum, getStackByFiberInDevAndProd(finishedWork));
+            warningWithoutStack$1(false, 'An effect function must not return anything besides a function, ' + 'which is used for clean-up.%s%s', addendum, getStackByFiberInDevAndProd(finishedWork));
           }
         }
       }
@@ -20687,7 +20891,7 @@ implementation) {
 
 // TODO: this is special because it gets imported during build.
 
-var ReactVersion = '16.8.3';
+var ReactVersion = '16.8.6';
 
 // This file is copy paste from ReactDOM with adjusted paths
 // and a different host config import (react-reconciler/inline.fire).
diff --git a/node_modules/react-dom/umd/react-dom-unstable-fire.production.min.js b/node_modules/react-dom/umd/react-dom-unstable-fire.production.min.js
index 35c4917c..3b80e1c6 100644
--- a/node_modules/react-dom/umd/react-dom-unstable-fire.production.min.js
+++ b/node_modules/react-dom/umd/react-dom-unstable-fire.production.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-unstable-fire.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -39,16 +39,16 @@ for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.re
 break}var d;for(d=c;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo;if(!d)break;a.ancestors.push(c);c=dc(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=kd(a.nativeEvent);d=a.topLevelType;for(var f=a.nativeEvent,g=null,h=0;h<cc.length;h++){var l=cc[h];l&&(l=l.extractEvents(d,b,f,e))&&(g=Pa(g,l))}cd(g)}}function r(a,b){if(!b)return null;var c=(wf(a)?xf:oc).bind(null,a);b.addEventListener(a,c,!1)}function pc(a,b){if(!b)return null;var c=(wf(a)?xf:oc).bind(null,a);
 b.addEventListener(a,c,!0)}function xf(a,b){yf(oc,a,b)}function oc(a,b){if(qc){var c=kd(b);c=dc(c);null===c||"number"!==typeof c.tag||2===wb(c)||(c=null);if(rc.length){var d=rc.pop();d.topLevelType=a;d.nativeEvent=b;d.targetInst=c;a=d}else a={topLevelType:a,nativeEvent:b,targetInst:c,ancestors:[]};try{Xe(Uh,a)}finally{a.topLevelType=null,a.nativeEvent=null,a.targetInst=null,a.ancestors.length=0,10>rc.length&&rc.push(a)}}}function zf(a){Object.prototype.hasOwnProperty.call(a,sc)||(a[sc]=Vh++,Af[a[sc]]=
 {});return Af[a[sc]]}function xd(a){a=a||("undefined"!==typeof document?document:void 0);if("undefined"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Bf(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function Cf(a,b){var c=Bf(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Bf(c)}}function Df(a,b){return a&&b?a===
-b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Df(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function Ef(){for(var a=window,b=xd();b instanceof a.HTMLIFrameElement;){try{a=b.contentDocument.defaultView}catch(c){break}b=xd(a.document)}return b}function yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||
-"true"===a.contentEditable)}function Wh(){var a=Ef();if(yd(a)){if("selectionStart"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(cj){b=null;break a}var f=0,g=-1,h=-1,l=0,k=0,m=a,n=null;b:for(;;){for(var p;;){m!==b||0!==d&&3!==m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=
-f+c);3===m.nodeType&&(f+=m.nodeValue.length);if(null===(p=m.firstChild))break;n=m;m=p}for(;;){if(m===a)break b;n===b&&++l===d&&(g=f);n===e&&++k===c&&(h=f);if(null!==(p=m.nextSibling))break;m=n;n=m.parentNode}m=p}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}function Xh(a){var b=Ef(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Df(c.ownerDocument.documentElement,c)){if(null!==d&&yd(c))if(b=d.start,a=d.end,
-void 0===a&&(a=b),"selectionStart"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Cf(c,f);var g=Cf(c,d);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),
-a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});"function"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}function Gf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(zd||null==Wa||Wa!==xd(c))return null;c=Wa;"selectionStart"in c&&yd(c)?c={start:c.selectionStart,
-end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return xb&&vb(xb,c)?null:(xb=c,a=J.getPooled(Hf.select,Ad,a,b),a.type="select",a.target=Wa,Qa(a),a)}function Yh(a){var b="";da.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Bd(a,b){a=B({children:void 0},b);if(b=Yh(b.children))a.children=b;return a}function Xa(a,b,c,d){a=a.options;if(b){b=
-{};for(var e=0;e<c.length;e++)b["$"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty("$"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=""+ua(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}function Cd(a,b){null!=b.dangerouslySetInnerHTML?n("91"):void 0;return B({},b,{value:void 0,defaultValue:void 0,children:""+a._wrapperState.initialValue})}
-function If(a,b){var c=b.value;null==c&&(c=b.defaultValue,b=b.children,null!=b&&(null!=c?n("92"):void 0,Array.isArray(b)&&(1>=b.length?void 0:n("93"),b=b[0]),c=b),null==c&&(c=""));a._wrapperState={initialValue:ua(c)}}function Jf(a,b){var c=ua(b.value),d=ua(b.defaultValue);null!=c&&(c=""+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=""+d)}function Kf(a){switch(a){case "svg":return"http://www.w3.org/2000/svg";case "math":return"http://www.w3.org/1998/Math/MathML";
-default:return"http://www.w3.org/1999/xhtml"}}function Dd(a,b){return null==a||"http://www.w3.org/1999/xhtml"===a?Kf(b):"http://www.w3.org/2000/svg"===a&&"foreignObject"===b?"http://www.w3.org/1999/xhtml":a}function Lf(a,b,c){return null==b||"boolean"===typeof b||""===b?"":c||"number"!==typeof b||0===b||yb.hasOwnProperty(a)&&yb[a]?(""+b).trim():b+"px"}function Mf(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf("--"),e=Lf(c,b[c],d);"float"===c&&(c="cssFloat");d?a.setProperty(c,
-e):a[c]=e}}function Ed(a,b){b&&(Zh[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?n("137",a,""):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?n("60"):void 0,"object"===typeof b.dangerouslySetInnerHTML&&"__html"in b.dangerouslySetInnerHTML?void 0:n("61")),null!=b.style&&"object"!==typeof b.style?n("62",""):void 0)}function Fd(a,b){if(-1===a.indexOf("-"))return"string"===typeof b.is;switch(a){case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":return!1;
+b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Df(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function Ef(){for(var a=window,b=xd();b instanceof a.HTMLIFrameElement;){try{var c="string"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=xd(a.document)}return b}function yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||
+"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)}function Wh(){var a=Ef();if(yd(a)){if("selectionStart"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(cj){b=null;break a}var f=0,g=-1,h=-1,l=0,k=0,m=a,n=null;b:for(;;){for(var p;;){m!==b||0!==d&&3!==
+m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=f+c);3===m.nodeType&&(f+=m.nodeValue.length);if(null===(p=m.firstChild))break;n=m;m=p}for(;;){if(m===a)break b;n===b&&++l===d&&(g=f);n===e&&++k===c&&(h=f);if(null!==(p=m.nextSibling))break;m=n;n=m.parentNode}m=p}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}function Xh(a){var b=Ef(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Df(c.ownerDocument.documentElement,
+c)){if(null!==d&&yd(c))if(b=d.start,a=d.end,void 0===a&&(a=b),"selectionStart"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Cf(c,f);var g=Cf(c,d);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&
+(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});"function"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}function Gf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(zd||null==Wa||Wa!==xd(c))return null;c=
+Wa;"selectionStart"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return xb&&vb(xb,c)?null:(xb=c,a=J.getPooled(Hf.select,Ad,a,b),a.type="select",a.target=Wa,Qa(a),a)}function Yh(a){var b="";da.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Bd(a,b){a=B({children:void 0},b);if(b=Yh(b.children))a.children=
+b;return a}function Xa(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b["$"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty("$"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=""+ua(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}function Cd(a,b){null!=b.dangerouslySetInnerHTML?n("91"):void 0;return B({},b,{value:void 0,defaultValue:void 0,
+children:""+a._wrapperState.initialValue})}function If(a,b){var c=b.value;null==c&&(c=b.defaultValue,b=b.children,null!=b&&(null!=c?n("92"):void 0,Array.isArray(b)&&(1>=b.length?void 0:n("93"),b=b[0]),c=b),null==c&&(c=""));a._wrapperState={initialValue:ua(c)}}function Jf(a,b){var c=ua(b.value),d=ua(b.defaultValue);null!=c&&(c=""+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=""+d)}function Kf(a){switch(a){case "svg":return"http://www.w3.org/2000/svg";
+case "math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Dd(a,b){return null==a||"http://www.w3.org/1999/xhtml"===a?Kf(b):"http://www.w3.org/2000/svg"===a&&"foreignObject"===b?"http://www.w3.org/1999/xhtml":a}function Lf(a,b,c){return null==b||"boolean"===typeof b||""===b?"":c||"number"!==typeof b||0===b||yb.hasOwnProperty(a)&&yb[a]?(""+b).trim():b+"px"}function Mf(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf("--"),
+e=Lf(c,b[c],d);"float"===c&&(c="cssFloat");d?a.setProperty(c,e):a[c]=e}}function Ed(a,b){b&&(Zh[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?n("137",a,""):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?n("60"):void 0,"object"===typeof b.dangerouslySetInnerHTML&&"__html"in b.dangerouslySetInnerHTML?void 0:n("61")),null!=b.style&&"object"!==typeof b.style?n("62",""):void 0)}function Fd(a,b){if(-1===a.indexOf("-"))return"string"===typeof b.is;switch(a){case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":return!1;
 default:return!0}}function ha(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=zf(a);b=$c[b];for(var d=0;d<b.length;d++){var e=b[d];if(!c.hasOwnProperty(e)||!c[e]){switch(e){case "scroll":pc("scroll",a);break;case "focus":case "blur":pc("focus",a);pc("blur",a);c.blur=!0;c.focus=!0;break;case "cancel":case "close":af(e)&&pc(e,a);break;case "invalid":case "submit":case "reset":break;default:-1===zb.indexOf(e)&&r(e,a)}c[e]=!0}}}function tc(){}function Nf(a,b){switch(a){case "button":case "input":case "select":case "textarea":return!!b.autoFocus}return!1}
 function Gd(a,b){return"textarea"===a||"option"===a||"noscript"===a||"string"===typeof b.children||"number"===typeof b.children||"object"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}function $h(a,b,c,d,e,f){a[ec]=e;"input"===c&&"radio"===e.type&&null!=e.name&&mf(a,e);Fd(c,d);d=Fd(c,e);for(f=0;f<b.length;f+=2){var g=b[f],h=b[f+1];"style"===g?Mf(a,h):"dangerouslySetInnerHTML"===g?Of(a,h):"children"===g?Ab(a,h):rd(a,g,h,d)}switch(c){case "input":td(a,
 e);break;case "textarea":Jf(a,e);break;case "select":b=a._wrapperState.wasMultiple,a._wrapperState.wasMultiple=!!e.multiple,c=e.value,null!=c?Xa(a,!!e.multiple,c,!1):b!==!!e.multiple&&(null!=e.defaultValue?Xa(a,!!e.multiple,e.defaultValue,!0):Xa(a,!!e.multiple,e.multiple?[]:"",!1))}}function Hd(a){for(a=a.nextSibling;a&&1!==a.nodeType&&3!==a.nodeType;)a=a.nextSibling;return a}function Pf(a){for(a=a.firstChild;a&&1!==a.nodeType&&3!==a.nodeType;)a=a.nextSibling;return a}function D(a,b){0>Ya||(a.current=
@@ -78,14 +78,14 @@ for(var m=l=null,q=g,v=g=0,Q=null,t=h.next();null!==q&&!t.done;v++,t=h.next()){q
 v:t.key),g=f(t,g,v),null===m?l=t:m.sibling=t,m=t);a&&q.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k="object"===typeof f&&null!==f&&f.type===ta&&null===f.key;k&&(f=f.props.children);var l="object"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Bc:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===ta:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===ta?f.props.children:f.props,h);d.ref=Db(a,k,f);d.return=a;a=d;break a}else{c(a,k);break}else b(a,k);
 k=k.sibling}f.type===ta?(d=wa(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=wc(f.type,f.key,f.props,null,a.mode,h),h.ref=Db(a,d,f),h.return=a,a=h)}return g(a);case Va:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Od(f,a.mode,h);d.return=a;a=d}return g(a)}if("string"===typeof f||"number"===
 typeof f)return f=""+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=Nd(f,a.mode,h),d.return=a,a=d),g(a);if(Cc(f))return u(a,d,f,h);if(sb(f))return x(a,d,f,h);l&&Ac(a,f);if("undefined"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type,n("152",h.displayName||h.name||"Component")}return c(a,d)}}function Ha(a){a===Eb?n("174"):void 0;return a}function Qd(a,b){L(Fb,b,a);L(Gb,a,a);L(U,Eb,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Dd(null,
-"");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=Dd(b,c)}D(U,a);L(U,b,a)}function $a(a){D(U,a);D(Gb,a);D(Fb,a)}function bg(a){Ha(Fb.current);var b=Ha(U.current);var c=Dd(b,a.type);b!==c&&(L(Gb,a,a),L(U,c,a))}function Rd(a){Gb.current===a&&(D(U,a),D(Gb,a))}function V(){n("307")}function Sd(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!Ea(a[c],b[c]))return!1;return!0}function Td(a,b,c,d,e,f){Hb=f;xa=b;W=null!==a?a.memoizedState:null;Dc.current=null===
+"");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=Dd(b,c)}D(U,a);L(U,b,a)}function $a(a){D(U,a);D(Gb,a);D(Fb,a)}function bg(a){Ha(Fb.current);var b=Ha(U.current);var c=Dd(b,a.type);b!==c&&(L(Gb,a,a),L(U,c,a))}function Rd(a){Gb.current===a&&(D(U,a),D(Gb,a))}function V(){n("321")}function Sd(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!Ea(a[c],b[c]))return!1;return!0}function Td(a,b,c,d,e,f){Hb=f;xa=b;W=null!==a?a.memoizedState:null;Dc.current=null===
 W?fi:cg;b=c(d,e);if(Ib){do Ib=!1,Jb+=1,W=null!==a?a.memoizedState:null,ab=bb,X=G=y=null,Dc.current=cg,b=c(d,e);while(Ib);ia=null;Jb=0}Dc.current=Ud;a=xa;a.memoizedState=bb;a.expirationTime=Kb;a.updateQueue=X;a.effectTag|=Lb;a=null!==y&&null!==y.next;Hb=0;ab=G=bb=W=y=xa=null;Kb=0;X=null;Lb=0;a?n("300"):void 0;return b}function Vd(){Dc.current=Ud;Hb=0;ab=G=bb=W=y=xa=null;Kb=0;X=null;Lb=0;Ib=!1;ia=null;Jb=0}function cb(){var a={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};
-null===G?bb=G=a:G=G.next=a;return G}function Mb(){if(null!==ab)G=ab,ab=G.next,y=W,W=null!==y?y.next:null;else{null===W?n("310"):void 0;y=W;var a={memoizedState:y.memoizedState,baseState:y.baseState,queue:y.queue,baseUpdate:y.baseUpdate,next:null};G=null===G?bb=a:G.next=a;W=y.next}return G}function dg(a,b){return"function"===typeof b?b(a):b}function eg(a,b,c){b=Mb();c=b.queue;null===c?n("311"):void 0;if(0<Jb){var d=c.dispatch;if(null!==ia){var e=ia.get(c);if(void 0!==e){ia.delete(c);var f=b.memoizedState;
-do f=a(f,e.action),e=e.next;while(null!==e);Ea(f,b.memoizedState)||(ja=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=f);c.eagerReducer=a;c.eagerState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==d){var h=e=null,l=d,k=!1;do{var m=l.expirationTime;m<Hb?(k||(k=!0,h=g,e=f),m>Kb&&(Kb=m)):f=l.eagerReducer===a?l.eagerState:a(f,l.action);g=l;l=l.next}while(null!==l&&l!==d);k||(h=
-g,e=f);Ea(f,b.memoizedState)||(ja=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.eagerReducer=a;c.eagerState=f}return[b.memoizedState,c.dispatch]}function Wd(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===X?(X={lastEffect:null},X.lastEffect=a.next=a):(b=X.lastEffect,null===b?X.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,X.lastEffect=a));return a}function Xd(a,b,c,d){var e=cb();Lb|=a;e.memoizedState=Wd(b,c,void 0,void 0===d?null:d)}function Yd(a,b,c,d){var e=Mb();d=void 0===
+null===G?bb=G=a:G=G.next=a;return G}function Mb(){if(null!==ab)G=ab,ab=G.next,y=W,W=null!==y?y.next:null;else{null===W?n("310"):void 0;y=W;var a={memoizedState:y.memoizedState,baseState:y.baseState,queue:y.queue,baseUpdate:y.baseUpdate,next:null};G=null===G?bb=a:G.next=a;W=y.next}return G}function dg(a,b){return"function"===typeof b?b(a):b}function eg(a,b,c){b=Mb();c=b.queue;null===c?n("311"):void 0;c.lastRenderedReducer=a;if(0<Jb){var d=c.dispatch;if(null!==ia){var e=ia.get(c);if(void 0!==e){ia.delete(c);
+var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);Ea(f,b.memoizedState)||(ja=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=f);c.lastRenderedState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==d){var h=e=null,l=d,k=!1;do{var m=l.expirationTime;m<Hb?(k||(k=!0,h=g,e=f),m>Kb&&(Kb=m)):f=l.eagerReducer===a?l.eagerState:a(f,l.action);g=l;l=l.next}while(null!==l&&l!==
+d);k||(h=g,e=f);Ea(f,b.memoizedState)||(ja=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}function Wd(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===X?(X={lastEffect:null},X.lastEffect=a.next=a):(b=X.lastEffect,null===b?X.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,X.lastEffect=a));return a}function Xd(a,b,c,d){var e=cb();Lb|=a;e.memoizedState=Wd(b,c,void 0,void 0===d?null:d)}function Yd(a,b,c,d){var e=Mb();d=void 0===
 d?null:d;var f=void 0;if(null!==y){var g=y.memoizedState;f=g.destroy;if(null!==d&&Sd(d,g.deps)){Wd(db,c,f,d);return}}Lb|=a;e.memoizedState=Wd(b,c,f,d)}function fg(a,b){if("function"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function gg(a,b){}function hg(a,b,c){25>Jb?void 0:n("301");var d=a.alternate;if(a===xa||null!==d&&d===xa)if(Ib=!0,a={expirationTime:Hb,action:c,eagerReducer:null,eagerState:null,next:null},null===
-ia&&(ia=new Map),c=ia.get(b),void 0===c)ia.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{eb();var e=ka();e=fb(e,a);var f={expirationTime:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===d||0===d.expirationTime)&&(d=b.eagerReducer,null!==d))try{var l=b.eagerState,k=d(l,c);f.eagerReducer=d;f.eagerState=k;if(Ea(k,l))return}catch(m){}finally{}ya(a,e)}}function ig(a,
-b){var c=S(5,null,null,0);c.elementType="DELETED";c.type="DELETED";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function jg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}function kg(a){if(Ia){var b=
+ia&&(ia=new Map),c=ia.get(b),void 0===c)ia.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{eb();var e=ka();e=fb(e,a);var f={expirationTime:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===d||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var l=b.lastRenderedState,k=d(l,c);f.eagerReducer=d;f.eagerState=k;if(Ea(k,l))return}catch(m){}finally{}ya(a,
+e)}}function ig(a,b){var c=S(5,null,null,0);c.elementType="DELETED";c.type="DELETED";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function jg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}function kg(a){if(Ia){var b=
 gb;if(b){var c=b;if(!jg(a,b)){b=Hd(c);if(!b||!jg(a,b)){a.effectTag|=2;Ia=!1;la=a;return}ig(la,c)}la=a;gb=Pf(b)}else a.effectTag|=2,Ia=!1,la=a}}function lg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;la=a}function Zd(a){if(a!==la)return!1;if(!Ia)return lg(a),Ia=!0,!1;var b=a.type;if(5!==a.tag||"head"!==b&&"body"!==b&&!Gd(b,a.memoizedProps))for(b=gb;b;)ig(a,b),b=Hd(b);lg(a);gb=la?Hd(a.stateNode):null;return!0}function $d(){gb=la=null;Ia=!1}function N(a,b,c,d){b.child=null===
 a?ae(b,null,c,d):hb(b,a.child,c,d)}function mg(a,b,c,d,e){c=c.render;var f=b.ref;ib(b,e);d=Td(a,b,c,d,f,e);if(null!==a&&!ja)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),ma(a,b,e);b.effectTag|=1;N(a,b,d,e);return b.child}function ng(a,b,c,d,e,f){if(null===a){var g=c.type;if("function"===typeof g&&!Md(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,og(a,b,g,d,e,f);a=wc(c.type,null,d,null,b.mode,f);a.ref=
 b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:vb,c(e,d)&&a.ref===b.ref))return ma(a,b,f);b.effectTag|=1;a=Ga(g,d,f);a.ref=b.ref;a.return=b;return b.child=a}function og(a,b,c,d,e,f){return null!==a&&vb(a.memoizedProps,d)&&a.ref===b.ref&&(ja=!1,e<f)?ma(a,b,f):be(a,b,c,d,f)}function pg(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function be(a,b,c,d,e){var f=E(c)?Fa:F.current;f=Za(b,f);ib(b,e);c=Td(a,b,c,d,f,e);if(null!==
@@ -134,25 +134,25 @@ p;){e=!1;var f=void 0;try{oi()}catch(h){e=!0,f=h}e&&(null===p?n("178"):void 0,Ka
 Lc=!1;"function"===typeof Kd&&Kd(b.stateNode);c=b.expirationTime;b=b.childExpirationTime;b=b>c?b:c;0===b&&(Ba=null);wi(a,b)}function Mg(a){for(;;){var b=a.alternate,c=a.return,d=a.sibling;if(0===(a.effectTag&1024)){x=a;a:{var e=b;b=a;var f=H;var g=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:E(b.type)&&uc(b);break;case 3:$a(b);Jd(b);g=b.stateNode;g.pendingContext&&(g.context=g.pendingContext,g.pendingContext=null);if(null===e||null===e.child)Zd(b),b.effectTag&=
 -3;pe(b);break;case 5:Rd(b);var h=Ha(Fb.current);f=b.type;if(null!==e&&null!=b.stateNode)Ng(e,b,f,g,h),e.ref!==b.ref&&(b.effectTag|=128);else if(g){var l=Ha(U.current);if(Zd(b)){g=b;e=g.stateNode;var k=g.type,m=g.memoizedProps,p=h;e[ea]=g;e[ec]=m;f=void 0;h=k;switch(h){case "iframe":case "object":r("load",e);break;case "video":case "audio":for(k=0;k<zb.length;k++)r(zb[k],e);break;case "source":r("error",e);break;case "img":case "image":case "link":r("error",e);r("load",e);break;case "form":r("reset",
 e);r("submit",e);break;case "details":r("toggle",e);break;case "input":lf(e,m);r("invalid",e);ha(p,"onChange");break;case "select":e._wrapperState={wasMultiple:!!m.multiple};r("invalid",e);ha(p,"onChange");break;case "textarea":If(e,m),r("invalid",e),ha(p,"onChange")}Ed(h,m);k=null;for(f in m)m.hasOwnProperty(f)&&(l=m[f],"children"===f?"string"===typeof l?e.textContent!==l&&(k=["children",l]):"number"===typeof l&&e.textContent!==""+l&&(k=["children",""+l]):Oa.hasOwnProperty(f)&&null!=l&&ha(p,f));
-switch(h){case "input":kc(e);nf(e,m,!0);break;case "textarea":kc(e);f=e.textContent;f===e._wrapperState.initialValue&&(e.value=f);break;case "select":case "option":break;default:"function"===typeof m.onClick&&(e.onclick=tc)}f=k;g.updateQueue=f;g=null!==f?!0:!1;g&&Pb(b)}else{m=b;e=f;p=g;k=9===h.nodeType?h:h.ownerDocument;"http://www.w3.org/1999/xhtml"===l&&(l=Kf(e));"http://www.w3.org/1999/xhtml"===l?"script"===e?(e=k.createElement("div"),e.innerHTML="<script>\x3c/script>",k=e.removeChild(e.firstChild)):
-"string"===typeof p.is?k=k.createElement(e,{is:p.is}):(k=k.createElement(e),"select"===e&&p.multiple&&(k.multiple=!0)):k=k.createElementNS(l,e);e=k;e[ea]=m;e[ec]=g;Og(e,b,!1,!1);m=e;k=f;p=g;var t=h,y=Fd(k,p);switch(k){case "iframe":case "object":r("load",m);h=p;break;case "video":case "audio":for(h=0;h<zb.length;h++)r(zb[h],m);h=p;break;case "source":r("error",m);h=p;break;case "img":case "image":case "link":r("error",m);r("load",m);h=p;break;case "form":r("reset",m);r("submit",m);h=p;break;case "details":r("toggle",
-m);h=p;break;case "input":lf(m,p);h=sd(m,p);r("invalid",m);ha(t,"onChange");break;case "option":h=Bd(m,p);break;case "select":m._wrapperState={wasMultiple:!!p.multiple};h=B({},p,{value:void 0});r("invalid",m);ha(t,"onChange");break;case "textarea":If(m,p);h=Cd(m,p);r("invalid",m);ha(t,"onChange");break;default:h=p}Ed(k,h);l=void 0;var u=k,w=m,v=h;for(l in v)if(v.hasOwnProperty(l)){var q=v[l];"style"===l?Mf(w,q):"dangerouslySetInnerHTML"===l?(q=q?q.__html:void 0,null!=q&&Of(w,q)):"children"===l?"string"===
-typeof q?("textarea"!==u||""!==q)&&Ab(w,q):"number"===typeof q&&Ab(w,""+q):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(Oa.hasOwnProperty(l)?null!=q&&ha(t,l):null!=q&&rd(w,l,q,y))}switch(k){case "input":kc(m);nf(m,p,!1);break;case "textarea":kc(m);h=m.textContent;h===m._wrapperState.initialValue&&(m.value=h);break;case "option":null!=p.value&&m.setAttribute("value",""+ua(p.value));break;case "select":h=m;m=p;h.multiple=!!m.multiple;p=m.value;null!=p?Xa(h,
-!!m.multiple,p,!1):null!=m.defaultValue&&Xa(h,!!m.multiple,m.defaultValue,!0);break;default:"function"===typeof h.onClick&&(m.onclick=tc)}(g=Nf(f,g))&&Pb(b);b.stateNode=e}null!==b.ref&&(b.effectTag|=128)}else null===b.stateNode?n("166"):void 0;break;case 6:e&&null!=b.stateNode?Pg(e,b,e.memoizedProps,g):("string"!==typeof g&&(null===b.stateNode?n("166"):void 0),e=Ha(Fb.current),Ha(U.current),Zd(b)?(g=b,f=g.stateNode,e=g.memoizedProps,f[ea]=g,(g=f.nodeValue!==e)&&Pb(b)):(f=b,g=(9===e.nodeType?e:e.ownerDocument).createTextNode(g),
-g[ea]=b,f.stateNode=g));break;case 11:break;case 13:g=b.memoizedState;if(0!==(b.effectTag&64)){b.expirationTime=f;x=b;break a}g=null!==g;f=null!==e&&null!==e.memoizedState;null!==e&&!g&&f&&(e=e.child.sibling,null!==e&&(h=b.firstEffect,null!==h?(b.firstEffect=e,e.nextEffect=h):(b.firstEffect=b.lastEffect=e,e.nextEffect=null),e.effectTag=8));if(g||f)b.effectTag|=4;break;case 7:break;case 8:break;case 12:break;case 4:$a(b);pe(b);break;case 10:ee(b);break;case 9:break;case 14:break;case 17:E(b.type)&&
-uc(b);break;case 18:break;default:n("156")}x=null}b=a;if(1===H||1!==b.childExpirationTime){g=0;for(f=b.child;null!==f;)e=f.expirationTime,h=f.childExpirationTime,e>g&&(g=e),h>g&&(g=h),f=f.sibling;b.childExpirationTime=g}if(null!==x)return x;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1<a.effectTag&&(null!==c.lastEffect?c.lastEffect.nextEffect=a:c.firstEffect=
-a,c.lastEffect=a))}else{a=mi(a,H);if(null!==a)return a.effectTag&=1023,a;null!==c&&(c.firstEffect=c.lastEffect=null,c.effectTag|=1024)}if(null!==d)return d;if(null!==c)a=c;else break}return null}function Qg(a){var b=hi(a.alternate,a,H);a.memoizedProps=a.pendingProps;null===b&&(b=Mg(a));Kg.current=null;return b}function Rg(a,b){Ca?n("243"):void 0;eb();Ca=!0;var c=qe.current;qe.current=Ud;var d=a.nextExpirationTimeToWorkOn;if(d!==H||a!==Y||null===x)Jg(),Y=a,H=d,x=Ga(Y.current,null,H),a.pendingCommitExpirationTime=
-0;var e=!1;do{try{if(b)for(;null!==x&&!Nc();)x=Qg(x);else for(;null!==x;)x=Qg(x)}catch(v){if(Ob=Ja=Nb=null,Vd(),null===x)e=!0,ie(v);else{null===x?n("271"):void 0;var f=x,g=f.return;if(null===g)e=!0,ie(v);else{a:{var h=a,l=g,k=f,m=v;g=H;k.effectTag|=1024;k.firstEffect=k.lastEffect=null;if(null!==m&&"object"===typeof m&&"function"===typeof m.then){var p=m;m=l;var t=-1,r=-1;do{if(13===m.tag){var u=m.alternate;if(null!==u&&(u=u.memoizedState,null!==u)){r=10*(1073741822-u.timedOutAt);break}u=m.pendingProps.maxDuration;
-if("number"===typeof u)if(0>=u)t=0;else if(-1===t||u<t)t=u}m=m.return}while(null!==m);m=l;do{if(u=13===m.tag)u=void 0===m.memoizedProps.fallback?!1:null===m.memoizedState;if(u){l=m.updateQueue;null===l?(l=new Set,l.add(p),m.updateQueue=l):l.add(p);if(0===(m.mode&1)){m.effectTag|=64;k.effectTag&=-1957;1===k.tag&&(null===k.alternate?k.tag=17:(g=Aa(1073741823),g.tag=Ec,na(k,g)));k.expirationTime=1073741823;break a}k=h;l=g;var w=k.pingCache;null===w?(w=k.pingCache=new xi,u=new Set,w.set(p,u)):(u=w.get(p),
-void 0===u&&(u=new Set,w.set(p,u)));u.has(l)||(u.add(l),k=yi.bind(null,k,p,l),p.then(k,k));-1===t?h=1073741823:(-1===r&&(r=10*(1073741822-Wf(h,g))-5E3),h=r+t);0<=h&&La<h&&(La=h);m.effectTag|=2048;m.expirationTime=g;break a}m=m.return}while(null!==m);m=Error((sa(k.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+qd(k))}je=!0;m=Hc(m,k);h=
-l;do{switch(h.tag){case 3:h.effectTag|=2048;h.expirationTime=g;g=he(h,m,g);vg(h,g);break a;case 1:if(t=m,r=h.type,k=h.stateNode,0===(h.effectTag&64)&&("function"===typeof r.getDerivedStateFromError||null!==k&&"function"===typeof k.componentDidCatch&&(null===Ba||!Ba.has(k)))){h.effectTag|=2048;h.expirationTime=g;g=Ig(h,t,g);vg(h,g);break a}}h=h.return}while(null!==h)}x=Mg(f);continue}}}break}while(1);Ca=!1;qe.current=c;Ob=Ja=Nb=null;Vd();if(e)Y=null,a.finishedWork=null;else if(null!==x)a.finishedWork=
-null;else{c=a.current.alternate;null===c?n("281"):void 0;Y=null;if(je){e=a.latestPendingTime;f=a.latestSuspendedTime;g=a.latestPingedTime;if(0!==e&&e<d||0!==f&&f<d||0!==g&&g<d){Vf(a,d);re(a,c,d,a.expirationTime,-1);return}if(!a.didError&&b){a.didError=!0;d=a.nextExpirationTimeToWorkOn=d;b=a.expirationTime=1073741823;re(a,c,d,b,-1);return}}b&&-1!==La?(Vf(a,d),b=10*(1073741822-Wf(a,d)),b<La&&(La=b),b=10*(1073741822-ka()),b=La-b,re(a,c,d,a.expirationTime,0>b?0:b)):(a.pendingCommitExpirationTime=d,a.finishedWork=
-c)}}function Ka(a,b){for(var c=a.return;null!==c;){switch(c.tag){case 1:var d=c.stateNode;if("function"===typeof c.type.getDerivedStateFromError||"function"===typeof d.componentDidCatch&&(null===Ba||!Ba.has(d))){a=Hc(b,a);a=Ig(c,a,1073741823);na(c,a);ya(c,1073741823);return}break;case 3:a=Hc(b,a);a=he(c,a,1073741823);na(c,a);ya(c,1073741823);return}c=c.return}3===a.tag&&(c=Hc(b,a),c=he(a,c,1073741823),na(a,c),ya(a,1073741823))}function fb(a,b){var c=zi(),d=void 0;if(0===(b.mode&1))d=1073741823;else if(Ca&&
-!Lc)d=H;else{switch(c){case se:d=1073741823;break;case te:d=1073741822-10*(((1073741822-a+15)/10|0)+1);break;case Lg:d=1073741822-25*(((1073741822-a+500)/25|0)+1);break;case Ai:case Bi:d=1;break;default:n("313")}null!==Y&&d===H&&--d}c===te&&(0===oa||d<oa)&&(oa=d);return d}function yi(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);if(null!==Y&&H===c)Y=null;else if(b=a.earliestSuspendedTime,d=a.latestSuspendedTime,0!==b&&c<=b&&c>=d){a.didError=!1;b=a.latestPingedTime;if(0===b||b>c)a.latestPingedTime=
-c;xc(c,a);c=a.expirationTime;0!==c&&Kc(a,c)}}function li(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=ka();b=fb(b,a);a=Sg(a,b);null!==a&&(Bb(a,b),b=a.expirationTime,0!==b&&Kc(a,b))}function Sg(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=
-b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}return e}function ya(a,b){a=Sg(a,b);null!==a&&(!Ca&&0!==H&&b>H&&Jg(),Bb(a,b),Ca&&!Lc&&Y===a||Kc(a,a.expirationTime),Tb>Ci&&(Tb=0,n("185")))}function Tg(a,b,c,d,e){return Mc(se,function(){return a(b,c,d,e)})}function Ub(){aa=1073741822-((ue()-ve)/10|0)}function Ug(a,b){if(0!==Oc){if(b<Oc)return;null!==Pc&&Vg(Pc)}Oc=b;a=ue()-ve;Pc=Wg(Di,{timeout:10*(1073741822-b)-a})}function re(a,b,c,d,e){a.expirationTime=d;0!==e||Nc()?0<e&&(a.timeoutHandle=
-Ei(Fi.bind(null,a,b,c),e)):(a.pendingCommitExpirationTime=c,a.finishedWork=b)}function Fi(a,b,c){a.pendingCommitExpirationTime=c;a.finishedWork=b;Ub();jb=aa;Xg(a,c)}function wi(a,b){a.expirationTime=b;a.finishedWork=null}function ka(){if(w)return jb;Qc();if(0===C||1===C)Ub(),jb=aa;return jb}function Kc(a,b){null===a.nextScheduledRoot?(a.expirationTime=b,null===I?(ba=I=a,a.nextScheduledRoot=a):(I=I.nextScheduledRoot=a,I.nextScheduledRoot=ba)):b>a.expirationTime&&(a.expirationTime=b);w||(z?Rc&&(ca=
-a,C=1073741823,Sc(a,1073741823,!1)):1073741823===b?Z(1073741823,!1):Ug(a,b))}function Qc(){var a=0,b=null;if(null!==I)for(var c=I,d=ba;null!==d;){var e=d.expirationTime;if(0===e){null===c||null===I?n("244"):void 0;if(d===d.nextScheduledRoot){ba=I=d.nextScheduledRoot=null;break}else if(d===ba)ba=e=d.nextScheduledRoot,I.nextScheduledRoot=e,d.nextScheduledRoot=null;else if(d===I){I=c;I.nextScheduledRoot=ba;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot,d.nextScheduledRoot=
+switch(h){case "input":kc(e);nf(e,m,!0);break;case "textarea":kc(e);f=e.textContent;f===e._wrapperState.initialValue&&(e.value=f);break;case "select":case "option":break;default:"function"===typeof m.onClick&&(e.onclick=tc)}f=k;g.updateQueue=f;g=null!==f?!0:!1;g&&Pb(b)}else{m=b;p=f;e=g;k=9===h.nodeType?h:h.ownerDocument;"http://www.w3.org/1999/xhtml"===l&&(l=Kf(p));"http://www.w3.org/1999/xhtml"===l?"script"===p?(e=k.createElement("div"),e.innerHTML="<script>\x3c/script>",k=e.removeChild(e.firstChild)):
+"string"===typeof e.is?k=k.createElement(p,{is:e.is}):(k=k.createElement(p),"select"===p&&(p=k,e.multiple?p.multiple=!0:e.size&&(p.size=e.size))):k=k.createElementNS(l,p);e=k;e[ea]=m;e[ec]=g;Og(e,b,!1,!1);m=e;k=f;p=g;var t=h,y=Fd(k,p);switch(k){case "iframe":case "object":r("load",m);h=p;break;case "video":case "audio":for(h=0;h<zb.length;h++)r(zb[h],m);h=p;break;case "source":r("error",m);h=p;break;case "img":case "image":case "link":r("error",m);r("load",m);h=p;break;case "form":r("reset",m);r("submit",
+m);h=p;break;case "details":r("toggle",m);h=p;break;case "input":lf(m,p);h=sd(m,p);r("invalid",m);ha(t,"onChange");break;case "option":h=Bd(m,p);break;case "select":m._wrapperState={wasMultiple:!!p.multiple};h=B({},p,{value:void 0});r("invalid",m);ha(t,"onChange");break;case "textarea":If(m,p);h=Cd(m,p);r("invalid",m);ha(t,"onChange");break;default:h=p}Ed(k,h);l=void 0;var u=k,w=m,v=h;for(l in v)if(v.hasOwnProperty(l)){var q=v[l];"style"===l?Mf(w,q):"dangerouslySetInnerHTML"===l?(q=q?q.__html:void 0,
+null!=q&&Of(w,q)):"children"===l?"string"===typeof q?("textarea"!==u||""!==q)&&Ab(w,q):"number"===typeof q&&Ab(w,""+q):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(Oa.hasOwnProperty(l)?null!=q&&ha(t,l):null!=q&&rd(w,l,q,y))}switch(k){case "input":kc(m);nf(m,p,!1);break;case "textarea":kc(m);h=m.textContent;h===m._wrapperState.initialValue&&(m.value=h);break;case "option":null!=p.value&&m.setAttribute("value",""+ua(p.value));break;case "select":h=m;m=p;h.multiple=
+!!m.multiple;p=m.value;null!=p?Xa(h,!!m.multiple,p,!1):null!=m.defaultValue&&Xa(h,!!m.multiple,m.defaultValue,!0);break;default:"function"===typeof h.onClick&&(m.onclick=tc)}(g=Nf(f,g))&&Pb(b);b.stateNode=e}null!==b.ref&&(b.effectTag|=128)}else null===b.stateNode?n("166"):void 0;break;case 6:e&&null!=b.stateNode?Pg(e,b,e.memoizedProps,g):("string"!==typeof g&&(null===b.stateNode?n("166"):void 0),e=Ha(Fb.current),Ha(U.current),Zd(b)?(g=b,f=g.stateNode,e=g.memoizedProps,f[ea]=g,(g=f.nodeValue!==e)&&
+Pb(b)):(f=b,g=(9===e.nodeType?e:e.ownerDocument).createTextNode(g),g[ea]=b,f.stateNode=g));break;case 11:break;case 13:g=b.memoizedState;if(0!==(b.effectTag&64)){b.expirationTime=f;x=b;break a}g=null!==g;f=null!==e&&null!==e.memoizedState;null!==e&&!g&&f&&(e=e.child.sibling,null!==e&&(h=b.firstEffect,null!==h?(b.firstEffect=e,e.nextEffect=h):(b.firstEffect=b.lastEffect=e,e.nextEffect=null),e.effectTag=8));if(g||f)b.effectTag|=4;break;case 7:break;case 8:break;case 12:break;case 4:$a(b);pe(b);break;
+case 10:ee(b);break;case 9:break;case 14:break;case 17:E(b.type)&&uc(b);break;case 18:break;default:n("156")}x=null}b=a;if(1===H||1!==b.childExpirationTime){g=0;for(f=b.child;null!==f;)e=f.expirationTime,h=f.childExpirationTime,e>g&&(g=e),h>g&&(g=h),f=f.sibling;b.childExpirationTime=g}if(null!==x)return x;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),
+1<a.effectTag&&(null!==c.lastEffect?c.lastEffect.nextEffect=a:c.firstEffect=a,c.lastEffect=a))}else{a=mi(a,H);if(null!==a)return a.effectTag&=1023,a;null!==c&&(c.firstEffect=c.lastEffect=null,c.effectTag|=1024)}if(null!==d)return d;if(null!==c)a=c;else break}return null}function Qg(a){var b=hi(a.alternate,a,H);a.memoizedProps=a.pendingProps;null===b&&(b=Mg(a));Kg.current=null;return b}function Rg(a,b){Ca?n("243"):void 0;eb();Ca=!0;var c=qe.current;qe.current=Ud;var d=a.nextExpirationTimeToWorkOn;
+if(d!==H||a!==Y||null===x)Jg(),Y=a,H=d,x=Ga(Y.current,null,H),a.pendingCommitExpirationTime=0;var e=!1;do{try{if(b)for(;null!==x&&!Nc();)x=Qg(x);else for(;null!==x;)x=Qg(x)}catch(v){if(Ob=Ja=Nb=null,Vd(),null===x)e=!0,ie(v);else{null===x?n("271"):void 0;var f=x,g=f.return;if(null===g)e=!0,ie(v);else{a:{var h=a,l=g,k=f,m=v;g=H;k.effectTag|=1024;k.firstEffect=k.lastEffect=null;if(null!==m&&"object"===typeof m&&"function"===typeof m.then){var p=m;m=l;var t=-1,r=-1;do{if(13===m.tag){var u=m.alternate;
+if(null!==u&&(u=u.memoizedState,null!==u)){r=10*(1073741822-u.timedOutAt);break}u=m.pendingProps.maxDuration;if("number"===typeof u)if(0>=u)t=0;else if(-1===t||u<t)t=u}m=m.return}while(null!==m);m=l;do{if(u=13===m.tag)u=void 0===m.memoizedProps.fallback?!1:null===m.memoizedState;if(u){l=m.updateQueue;null===l?(l=new Set,l.add(p),m.updateQueue=l):l.add(p);if(0===(m.mode&1)){m.effectTag|=64;k.effectTag&=-1957;1===k.tag&&(null===k.alternate?k.tag=17:(g=Aa(1073741823),g.tag=Ec,na(k,g)));k.expirationTime=
+1073741823;break a}k=h;l=g;var w=k.pingCache;null===w?(w=k.pingCache=new xi,u=new Set,w.set(p,u)):(u=w.get(p),void 0===u&&(u=new Set,w.set(p,u)));u.has(l)||(u.add(l),k=yi.bind(null,k,p,l),p.then(k,k));-1===t?h=1073741823:(-1===r&&(r=10*(1073741822-Wf(h,g))-5E3),h=r+t);0<=h&&La<h&&(La=h);m.effectTag|=2048;m.expirationTime=g;break a}m=m.return}while(null!==m);m=Error((sa(k.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+
+qd(k))}je=!0;m=Hc(m,k);h=l;do{switch(h.tag){case 3:h.effectTag|=2048;h.expirationTime=g;g=he(h,m,g);vg(h,g);break a;case 1:if(t=m,r=h.type,k=h.stateNode,0===(h.effectTag&64)&&("function"===typeof r.getDerivedStateFromError||null!==k&&"function"===typeof k.componentDidCatch&&(null===Ba||!Ba.has(k)))){h.effectTag|=2048;h.expirationTime=g;g=Ig(h,t,g);vg(h,g);break a}}h=h.return}while(null!==h)}x=Mg(f);continue}}}break}while(1);Ca=!1;qe.current=c;Ob=Ja=Nb=null;Vd();if(e)Y=null,a.finishedWork=null;else if(null!==
+x)a.finishedWork=null;else{c=a.current.alternate;null===c?n("281"):void 0;Y=null;if(je){e=a.latestPendingTime;f=a.latestSuspendedTime;g=a.latestPingedTime;if(0!==e&&e<d||0!==f&&f<d||0!==g&&g<d){Vf(a,d);re(a,c,d,a.expirationTime,-1);return}if(!a.didError&&b){a.didError=!0;d=a.nextExpirationTimeToWorkOn=d;b=a.expirationTime=1073741823;re(a,c,d,b,-1);return}}b&&-1!==La?(Vf(a,d),b=10*(1073741822-Wf(a,d)),b<La&&(La=b),b=10*(1073741822-ka()),b=La-b,re(a,c,d,a.expirationTime,0>b?0:b)):(a.pendingCommitExpirationTime=
+d,a.finishedWork=c)}}function Ka(a,b){for(var c=a.return;null!==c;){switch(c.tag){case 1:var d=c.stateNode;if("function"===typeof c.type.getDerivedStateFromError||"function"===typeof d.componentDidCatch&&(null===Ba||!Ba.has(d))){a=Hc(b,a);a=Ig(c,a,1073741823);na(c,a);ya(c,1073741823);return}break;case 3:a=Hc(b,a);a=he(c,a,1073741823);na(c,a);ya(c,1073741823);return}c=c.return}3===a.tag&&(c=Hc(b,a),c=he(a,c,1073741823),na(a,c),ya(a,1073741823))}function fb(a,b){var c=zi(),d=void 0;if(0===(b.mode&1))d=
+1073741823;else if(Ca&&!Lc)d=H;else{switch(c){case se:d=1073741823;break;case te:d=1073741822-10*(((1073741822-a+15)/10|0)+1);break;case Lg:d=1073741822-25*(((1073741822-a+500)/25|0)+1);break;case Ai:case Bi:d=1;break;default:n("313")}null!==Y&&d===H&&--d}c===te&&(0===oa||d<oa)&&(oa=d);return d}function yi(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);if(null!==Y&&H===c)Y=null;else if(b=a.earliestSuspendedTime,d=a.latestSuspendedTime,0!==b&&c<=b&&c>=d){a.didError=!1;b=a.latestPingedTime;if(0===b||
+b>c)a.latestPingedTime=c;xc(c,a);c=a.expirationTime;0!==c&&Kc(a,c)}}function li(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=ka();b=fb(b,a);a=Sg(a,b);null!==a&&(Bb(a,b),b=a.expirationTime,0!==b&&Kc(a,b))}function Sg(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<
+b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}return e}function ya(a,b){a=Sg(a,b);null!==a&&(!Ca&&0!==H&&b>H&&Jg(),Bb(a,b),Ca&&!Lc&&Y===a||Kc(a,a.expirationTime),Tb>Ci&&(Tb=0,n("185")))}function Tg(a,b,c,d,e){return Mc(se,function(){return a(b,c,d,e)})}function Ub(){aa=1073741822-((ue()-ve)/10|0)}function Ug(a,b){if(0!==Oc){if(b<Oc)return;null!==Pc&&Vg(Pc)}Oc=b;a=ue()-ve;Pc=Wg(Di,{timeout:10*(1073741822-b)-a})}function re(a,b,c,d,e){a.expirationTime=d;
+0!==e||Nc()?0<e&&(a.timeoutHandle=Ei(Fi.bind(null,a,b,c),e)):(a.pendingCommitExpirationTime=c,a.finishedWork=b)}function Fi(a,b,c){a.pendingCommitExpirationTime=c;a.finishedWork=b;Ub();jb=aa;Xg(a,c)}function wi(a,b){a.expirationTime=b;a.finishedWork=null}function ka(){if(w)return jb;Qc();if(0===C||1===C)Ub(),jb=aa;return jb}function Kc(a,b){null===a.nextScheduledRoot?(a.expirationTime=b,null===I?(ba=I=a,a.nextScheduledRoot=a):(I=I.nextScheduledRoot=a,I.nextScheduledRoot=ba)):b>a.expirationTime&&(a.expirationTime=
+b);w||(z?Rc&&(ca=a,C=1073741823,Sc(a,1073741823,!1)):1073741823===b?Z(1073741823,!1):Ug(a,b))}function Qc(){var a=0,b=null;if(null!==I)for(var c=I,d=ba;null!==d;){var e=d.expirationTime;if(0===e){null===c||null===I?n("244"):void 0;if(d===d.nextScheduledRoot){ba=I=d.nextScheduledRoot=null;break}else if(d===ba)ba=e=d.nextScheduledRoot,I.nextScheduledRoot=e,d.nextScheduledRoot=null;else if(d===I){I=c;I.nextScheduledRoot=ba;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot,d.nextScheduledRoot=
 null;d=c.nextScheduledRoot}else{e>a&&(a=e,b=d);if(d===I)break;if(1073741823===a)break;c=d;d=d.nextScheduledRoot}}ca=b;C=a}function Nc(){return Tc?!0:Gi()?Tc=!0:!1}function Di(){try{if(!Nc()&&null!==ba){Ub();var a=ba;do{var b=a.expirationTime;0!==b&&aa<=b&&(a.nextExpirationTimeToWorkOn=aa);a=a.nextScheduledRoot}while(a!==ba)}Z(0,!0)}finally{Tc=!1}}function Z(a,b){Qc();if(b)for(Ub(),jb=aa;null!==ca&&0!==C&&a<=C&&!(Tc&&aa>C);)Sc(ca,C,aa>C),Qc(),Ub(),jb=aa;else for(;null!==ca&&0!==C&&a<=C;)Sc(ca,C,!1),
 Qc();b&&(Oc=0,Pc=null);0!==C&&Ug(ca,C);Tb=0;we=null;if(null!==kb)for(a=kb,kb=null,b=0;b<a.length;b++){var c=a[b];try{c._onComplete()}catch(d){lb||(lb=!0,Uc=d)}}if(lb)throw a=Uc,Uc=null,lb=!1,a;}function Xg(a,b){w?n("253"):void 0;ca=a;C=b;Sc(a,b,!1);Z(1073741823,!1)}function Sc(a,b,c){w?n("245"):void 0;w=!0;if(c){var d=a.finishedWork;null!==d?Vc(a,d,b):(a.finishedWork=null,d=a.timeoutHandle,-1!==d&&(a.timeoutHandle=-1,Yg(d)),Rg(a,c),d=a.finishedWork,null!==d&&(Nc()?a.finishedWork=d:Vc(a,d,b)))}else d=
 a.finishedWork,null!==d?Vc(a,d,b):(a.finishedWork=null,d=a.timeoutHandle,-1!==d&&(a.timeoutHandle=-1,Yg(d)),Rg(a,c),d=a.finishedWork,null!==d&&Vc(a,d,b));w=!1}function Vc(a,b,c){var d=a.firstBatch;if(null!==d&&d._expirationTime>=c&&(null===kb?kb=[d]:kb.push(d),d._defer)){a.finishedWork=b;a.expirationTime=0;return}a.finishedWork=null;a===we?Tb++:(we=a,Tb=0);Mc(se,function(){ui(a,b)})}function ie(a){null===ca?n("246"):void 0;ca.expirationTime=0;lb||(lb=!0,Uc=a)}function Zg(a,b){var c=z;z=!0;try{return a(b)}finally{(z=
@@ -202,19 +202,19 @@ source:!0,track:!0,wbr:!0}),R=da.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FI
 clearTimeout:void 0,vi=Wg,ti=Vg;new Set;var Id=[],Ya=-1,va={},F={current:va},M={current:!1},Fa=va,Kd=null,Ld=null,S=function(a,b,c,d){return new bi(a,b,c,d)},$f=(new da.Component).refs,zc={isMounted:function(a){return(a=a._reactInternalFiber)?2===wb(a):!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=ka();d=fb(d,a);var e=Aa(d);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);eb();na(a,e);ya(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=ka();d=fb(d,a);var e=
 Aa(d);e.tag=yg;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);eb();na(a,e);ya(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=ka();c=fb(c,a);var d=Aa(c);d.tag=Ec;void 0!==b&&null!==b&&(d.callback=b);eb();na(a,d);ya(a,c)}},Cc=Array.isArray,hb=ag(!0),ae=ag(!1),Eb={},U={current:Eb},Gb={current:Eb},Fb={current:Eb},db=0,pi=2,Rb=4,ji=8,ri=16,Sb=32,me=64,le=128,Dc=Ma.ReactCurrentDispatcher,Hb=0,xa=null,y=null,W=null,bb=null,G=null,ab=null,Kb=0,X=null,Lb=0,Ib=!1,ia=null,Jb=0,Ud={readContext:T,
 useCallback:V,useContext:V,useEffect:V,useImperativeHandle:V,useLayoutEffect:V,useMemo:V,useReducer:V,useRef:V,useState:V,useDebugValue:V},fi={readContext:T,useCallback:function(a,b){cb().memoizedState=[a,void 0===b?null:b];return a},useContext:T,useEffect:function(a,b){return Xd(516,le|me,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Xd(4,Rb|Sb,fg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Xd(4,Rb|Sb,a,b)},useMemo:function(a,b){var c=cb();
-b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=cb();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,eagerReducer:a,eagerState:b};a=a.dispatch=hg.bind(null,xa,a);return[d.memoizedState,a]},useRef:function(a){var b=cb();a={current:a};return b.memoizedState=a},useState:function(a){var b=cb();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,eagerReducer:dg,eagerState:a};a=a.dispatch=
-hg.bind(null,xa,a);return[b.memoizedState,a]},useDebugValue:gg},cg={readContext:T,useCallback:function(a,b){var c=Mb();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Sd(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:T,useEffect:function(a,b){return Yd(516,le|me,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Yd(4,Rb|Sb,fg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Yd(4,Rb|Sb,a,b)},useMemo:function(a,b){var c=
-Mb();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Sd(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:eg,useRef:function(a){return Mb().memoizedState},useState:function(a){return eg(dg,a)},useDebugValue:gg},la=null,gb=null,Ia=!1,gi=Ma.ReactCurrentOwner,ja=!1,de={current:null},Nb=null,Ja=null,Ob=null,ug=0,yg=1,Ec=2,ge=3,za=!1,Og=void 0,pe=void 0,Ng=void 0,Pg=void 0;Og=function(a,b,c,d){for(c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);
-else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};pe=function(a){};Ng=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;Ha(U.current);a=null;switch(c){case "input":f=sd(g,f);d=sd(g,d);a=[];break;case "option":f=Bd(g,f);d=Bd(g,d);a=[];break;case "select":f=B({},f,{value:void 0});d=B({},d,{value:void 0});a=[];break;case "textarea":f=
-Cd(g,f);d=Cd(g,d);a=[];break;default:"function"!==typeof f.onClick&&"function"===typeof d.onClick&&(g.onclick=tc)}Ed(c,d);g=c=void 0;var h=null;for(c in f)if(!d.hasOwnProperty(c)&&f.hasOwnProperty(c)&&null!=f[c])if("style"===c){var l=f[c];for(g in l)l.hasOwnProperty(g)&&(h||(h={}),h[g]="")}else"dangerouslySetInnerHTML"!==c&&"children"!==c&&"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(Oa.hasOwnProperty(c)?a||(a=[]):(a=a||[]).push(c,null));for(c in d){var k=
-d[c];l=null!=f?f[c]:void 0;if(d.hasOwnProperty(c)&&k!==l&&(null!=k||null!=l))if("style"===c)if(l){for(g in l)!l.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(h||(h={}),h[g]="");for(g in k)k.hasOwnProperty(g)&&l[g]!==k[g]&&(h||(h={}),h[g]=k[g])}else h||(a||(a=[]),a.push(c,h)),h=k;else"dangerouslySetInnerHTML"===c?(k=k?k.__html:void 0,l=l?l.__html:void 0,null!=k&&l!==k&&(a=a||[]).push(c,""+k)):"children"===c?l===k||"string"!==typeof k&&"number"!==typeof k||(a=a||[]).push(c,""+k):"suppressContentEditableWarning"!==
-c&&"suppressHydrationWarning"!==c&&(Oa.hasOwnProperty(c)?(null!=k&&ha(e,c),a||l===k||(a=[])):(a=a||[]).push(c,k))}h&&(a=a||[]).push("style",h);e=a;(b.updateQueue=e)&&Pb(b)}};Pg=function(a,b,c,d){c!==d&&Pb(b)};var ki="function"===typeof WeakSet?WeakSet:Set,xi="function"===typeof WeakMap?WeakMap:Map,qe=Ma.ReactCurrentDispatcher,Kg=Ma.ReactCurrentOwner,ze=1073741822,Ca=!1,x=null,Y=null,H=0,La=-1,je=!1,p=null,Lc=!1,ke=null,Jc=null,Ic=null,Ba=null,ba=null,I=null,Oc=0,Pc=void 0,w=!1,ca=null,C=0,oa=0,lb=
-!1,Uc=null,z=!1,Rc=!1,kb=null,ve=ue(),aa=1073741822-(ve/10|0),jb=aa,Ci=50,Tb=0,we=null,Tc=!1;id=function(a,b,c){switch(b){case "input":td(a,c);b=c.name;if("radio"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll("input[name="+JSON.stringify(""+b)+'][type="radio"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=dd(d);e?void 0:n("90");cf(d);td(d,e)}}}break;case "textarea":Jf(a,c);break;case "select":b=c.value,null!=b&&Xa(a,!!c.multiple,b,!1)}};Vb.prototype.render=
-function(a){this._defer?void 0:n("250");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new mb;bh(a,b,null,c,d._onCommit);return d};Vb.prototype.then=function(a){if(this._didComplete)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};Vb.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:n("251");if(this._hasChildren){var c=this._expirationTime;if(b!==this){this._hasChildren&&
-(c=this._expirationTime=b._expirationTime,this.render(this._children));for(var d=null,e=b;e!==this;)d=e,e=e._next;null===d?n("251"):void 0;d._next=e._next;this._next=b;a.firstBatch=this}this._defer=!1;Xg(a,c);b=this._next;this._next=null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children)}else this._next=null,this._defer=!1};Vb.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++)(0,a[b])()}};mb.prototype.then=
-function(a){if(this._didCommit)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};mb.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++){var c=a[b];"function"!==typeof c?n("191",c):void 0;c()}}};nb.prototype.render=function(a,b){var c=this._internalRoot,d=new mb;b=void 0===b?null:b;null!==b&&d.then(b);xe(a,c,null,d._onCommit);return d};nb.prototype.unmount=function(a){var b=this._internalRoot,
-c=new mb;a=void 0===a?null:a;null!==a&&c.then(a);xe(null,b,null,c._onCommit);return c};nb.prototype.legacy_renderSubtreeIntoContainer=function(a,b,c){var d=this._internalRoot,e=new mb;c=void 0===c?null:c;null!==c&&e.then(c);xe(b,d,a,e._onCommit);return e};nb.prototype.createBatch=function(){var a=new Vb(this),b=a._expirationTime,c=this._internalRoot,d=c.firstBatch;if(null===d)c.firstBatch=a,a._next=null;else{for(c=null;null!==d&&d._expirationTime>=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};
-(function(a,b,c){Ye=a;yf=b;Ze=c})(Zg,ah,function(){w||0===oa||(Z(oa,!1),oa=0)});var oh={createPortal:ch,findDOMNode:function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;void 0===b&&("function"===typeof a.render?n("188"):n("268",Object.keys(a)));a=tf(b);a=null===a?null:a.stateNode;return a},hydrate:function(a,b,c){ob(b)?void 0:n("200");return Wc(null,a,b,!0,c)},render:function(a,b,c){ob(b)?void 0:n("200");return Wc(null,a,b,!1,c)},unstable_renderSubtreeIntoContainer:function(a,
+b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=cb();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=hg.bind(null,xa,a);return[d.memoizedState,a]},useRef:function(a){var b=cb();a={current:a};return b.memoizedState=a},useState:function(a){var b=cb();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,lastRenderedReducer:dg,
+lastRenderedState:a};a=a.dispatch=hg.bind(null,xa,a);return[b.memoizedState,a]},useDebugValue:gg},cg={readContext:T,useCallback:function(a,b){var c=Mb();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Sd(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:T,useEffect:function(a,b){return Yd(516,le|me,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Yd(4,Rb|Sb,fg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Yd(4,Rb|Sb,
+a,b)},useMemo:function(a,b){var c=Mb();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Sd(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:eg,useRef:function(a){return Mb().memoizedState},useState:function(a){return eg(dg,a)},useDebugValue:gg},la=null,gb=null,Ia=!1,gi=Ma.ReactCurrentOwner,ja=!1,de={current:null},Nb=null,Ja=null,Ob=null,ug=0,yg=1,Ec=2,ge=3,za=!1,Og=void 0,pe=void 0,Ng=void 0,Pg=void 0;Og=function(a,b,c,d){for(c=b.child;null!==c;){if(5===c.tag||
+6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};pe=function(a){};Ng=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;Ha(U.current);a=null;switch(c){case "input":f=sd(g,f);d=sd(g,d);a=[];break;case "option":f=Bd(g,f);d=Bd(g,d);a=[];break;case "select":f=B({},f,{value:void 0});d=B({},d,{value:void 0});
+a=[];break;case "textarea":f=Cd(g,f);d=Cd(g,d);a=[];break;default:"function"!==typeof f.onClick&&"function"===typeof d.onClick&&(g.onclick=tc)}Ed(c,d);g=c=void 0;var h=null;for(c in f)if(!d.hasOwnProperty(c)&&f.hasOwnProperty(c)&&null!=f[c])if("style"===c){var l=f[c];for(g in l)l.hasOwnProperty(g)&&(h||(h={}),h[g]="")}else"dangerouslySetInnerHTML"!==c&&"children"!==c&&"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(Oa.hasOwnProperty(c)?a||(a=[]):(a=a||[]).push(c,
+null));for(c in d){var k=d[c];l=null!=f?f[c]:void 0;if(d.hasOwnProperty(c)&&k!==l&&(null!=k||null!=l))if("style"===c)if(l){for(g in l)!l.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(h||(h={}),h[g]="");for(g in k)k.hasOwnProperty(g)&&l[g]!==k[g]&&(h||(h={}),h[g]=k[g])}else h||(a||(a=[]),a.push(c,h)),h=k;else"dangerouslySetInnerHTML"===c?(k=k?k.__html:void 0,l=l?l.__html:void 0,null!=k&&l!==k&&(a=a||[]).push(c,""+k)):"children"===c?l===k||"string"!==typeof k&&"number"!==typeof k||(a=a||[]).push(c,""+
+k):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&(Oa.hasOwnProperty(c)?(null!=k&&ha(e,c),a||l===k||(a=[])):(a=a||[]).push(c,k))}h&&(a=a||[]).push("style",h);e=a;(b.updateQueue=e)&&Pb(b)}};Pg=function(a,b,c,d){c!==d&&Pb(b)};var ki="function"===typeof WeakSet?WeakSet:Set,xi="function"===typeof WeakMap?WeakMap:Map,qe=Ma.ReactCurrentDispatcher,Kg=Ma.ReactCurrentOwner,ze=1073741822,Ca=!1,x=null,Y=null,H=0,La=-1,je=!1,p=null,Lc=!1,ke=null,Jc=null,Ic=null,Ba=null,ba=null,I=null,Oc=
+0,Pc=void 0,w=!1,ca=null,C=0,oa=0,lb=!1,Uc=null,z=!1,Rc=!1,kb=null,ve=ue(),aa=1073741822-(ve/10|0),jb=aa,Ci=50,Tb=0,we=null,Tc=!1;id=function(a,b,c){switch(b){case "input":td(a,c);b=c.name;if("radio"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll("input[name="+JSON.stringify(""+b)+'][type="radio"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=dd(d);e?void 0:n("90");cf(d);td(d,e)}}}break;case "textarea":Jf(a,c);break;case "select":b=c.value,null!=
+b&&Xa(a,!!c.multiple,b,!1)}};Vb.prototype.render=function(a){this._defer?void 0:n("250");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new mb;bh(a,b,null,c,d._onCommit);return d};Vb.prototype.then=function(a){if(this._didComplete)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};Vb.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:n("251");if(this._hasChildren){var c=this._expirationTime;
+if(b!==this){this._hasChildren&&(c=this._expirationTime=b._expirationTime,this.render(this._children));for(var d=null,e=b;e!==this;)d=e,e=e._next;null===d?n("251"):void 0;d._next=e._next;this._next=b;a.firstBatch=this}this._defer=!1;Xg(a,c);b=this._next;this._next=null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children)}else this._next=null,this._defer=!1};Vb.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++)(0,a[b])()}};
+mb.prototype.then=function(a){if(this._didCommit)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};mb.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++){var c=a[b];"function"!==typeof c?n("191",c):void 0;c()}}};nb.prototype.render=function(a,b){var c=this._internalRoot,d=new mb;b=void 0===b?null:b;null!==b&&d.then(b);xe(a,c,null,d._onCommit);return d};nb.prototype.unmount=function(a){var b=
+this._internalRoot,c=new mb;a=void 0===a?null:a;null!==a&&c.then(a);xe(null,b,null,c._onCommit);return c};nb.prototype.legacy_renderSubtreeIntoContainer=function(a,b,c){var d=this._internalRoot,e=new mb;c=void 0===c?null:c;null!==c&&e.then(c);xe(b,d,a,e._onCommit);return e};nb.prototype.createBatch=function(){var a=new Vb(this),b=a._expirationTime,c=this._internalRoot,d=c.firstBatch;if(null===d)c.firstBatch=a,a._next=null;else{for(c=null;null!==d&&d._expirationTime>=b;)c=d,d=d._next;a._next=d;null!==
+c&&(c._next=a)}return a};(function(a,b,c){Ye=a;yf=b;Ze=c})(Zg,ah,function(){w||0===oa||(Z(oa,!1),oa=0)});var oh={createPortal:ch,findDOMNode:function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;void 0===b&&("function"===typeof a.render?n("188"):n("268",Object.keys(a)));a=tf(b);a=null===a?null:a.stateNode;return a},hydrate:function(a,b,c){ob(b)?void 0:n("200");return Wc(null,a,b,!0,c)},render:function(a,b,c){ob(b)?void 0:n("200");return Wc(null,a,b,!1,c)},unstable_renderSubtreeIntoContainer:function(a,
 b,c,d){ob(c)?void 0:n("200");null==a||void 0===a._reactInternalFiber?n("38"):void 0;return Wc(a,b,c,!1,d)},unmountComponentAtNode:function(a){ob(a)?void 0:n("40");return a._reactRootContainer?($g(function(){Wc(null,null,a,!1,function(){a._reactRootContainer=null})}),!0):!1},unstable_createPortal:function(){return ch.apply(void 0,arguments)},unstable_batchedUpdates:Zg,unstable_interactiveUpdates:ah,flushSync:function(a,b){w?n("187"):void 0;var c=z;z=!0;try{return Tg(a,b)}finally{z=c,Z(1073741823,!1)}},
 unstable_createRoot:function(a,b){ob(a)?void 0:n("299","unstable_createRoot");return new nb(a,!0,null!=b&&!0===b.hydrate)},unstable_flushControlled:function(a){var b=z;z=!0;try{Tg(a)}finally{(z=b)||w||Z(1073741823,!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[Je,Da,dd,Ae.injectEventPluginsByName,Zc,Qa,function(a){ad(a,xh)},Ve,We,oc,cd]}};(function(a){var b=a.findFiberByHostInstance;return ai(B({},a,{overrideProps:null,currentDispatcherRef:Ma.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=
-tf(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:dc,bundleType:0,version:"16.8.3",rendererPackageName:"react-dom"});var ph={default:oh},qh=ph&&oh||ph;return qh.default||qh});
+tf(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:dc,bundleType:0,version:"16.8.6",rendererPackageName:"react-dom"});var ph={default:oh},qh=ph&&oh||ph;return qh.default||qh});
diff --git a/node_modules/react-dom/umd/react-dom-unstable-fire.profiling.min.js b/node_modules/react-dom/umd/react-dom-unstable-fire.profiling.min.js
index 3c9c8560..13791155 100644
--- a/node_modules/react-dom/umd/react-dom-unstable-fire.profiling.min.js
+++ b/node_modules/react-dom/umd/react-dom-unstable-fire.profiling.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-unstable-fire.profiling.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -39,16 +39,16 @@ for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.re
 break}var d;for(d=c;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo;if(!d)break;a.ancestors.push(c);c=hc(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=pd(a.nativeEvent);d=a.topLevelType;for(var f=a.nativeEvent,g=null,h=0;h<gc.length;h++){var k=gc[h];k&&(k=k.extractEvents(d,b,f,e))&&(g=Ta(g,k))}hd(g)}}function t(a,b){if(!b)return null;var c=(Cf(a)?Df:sc).bind(null,a);b.addEventListener(a,c,!1)}function tc(a,b){if(!b)return null;var c=(Cf(a)?Df:sc).bind(null,a);
 b.addEventListener(a,c,!0)}function Df(a,b){Ef(sc,a,b)}function sc(a,b){if(uc){var c=pd(b);c=hc(c);null===c||"number"!==typeof c.tag||2===Ab(c)||(c=null);if(vc.length){var d=vc.pop();d.topLevelType=a;d.nativeEvent=b;d.targetInst=c;a=d}else a={topLevelType:a,nativeEvent:b,targetInst:c,ancestors:[]};try{cf($h,a)}finally{a.topLevelType=null,a.nativeEvent=null,a.targetInst=null,a.ancestors.length=0,10>vc.length&&vc.push(a)}}}function Ff(a){Object.prototype.hasOwnProperty.call(a,wc)||(a[wc]=ai++,Gf[a[wc]]=
 {});return Gf[a[wc]]}function Cd(a){a=a||("undefined"!==typeof document?document:void 0);if("undefined"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Hf(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function If(a,b){var c=Hf(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Hf(c)}}function Jf(a,b){return a&&b?a===
-b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Jf(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function Kf(){for(var a=window,b=Cd();b instanceof a.HTMLIFrameElement;){try{a=b.contentDocument.defaultView}catch(c){break}b=Cd(a.document)}return b}function Dd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||
-"true"===a.contentEditable)}function bi(){var a=Kf();if(Dd(a)){if("selectionStart"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(oj){b=null;break a}var f=0,g=-1,h=-1,k=0,l=0,m=a,n=null;b:for(;;){for(var p;;){m!==b||0!==d&&3!==m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=
-f+c);3===m.nodeType&&(f+=m.nodeValue.length);if(null===(p=m.firstChild))break;n=m;m=p}for(;;){if(m===a)break b;n===b&&++k===d&&(g=f);n===e&&++l===c&&(h=f);if(null!==(p=m.nextSibling))break;m=n;n=m.parentNode}m=p}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}function ci(a){var b=Kf(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Jf(c.ownerDocument.documentElement,c)){if(null!==d&&Dd(c))if(b=d.start,a=d.end,
-void 0===a&&(a=b),"selectionStart"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=If(c,f);var g=If(c,d);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),
-a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});"function"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}function Lf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(Ed||null==ab||ab!==Cd(c))return null;c=ab;"selectionStart"in c&&Dd(c)?c={start:c.selectionStart,
-end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return Bb&&zb(Bb,c)?null:(Bb=c,a=H.getPooled(Mf.select,Fd,a,b),a.type="select",a.target=ab,Ua(a),a)}function di(a){var b="";R.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Gd(a,b){a=z({children:void 0},b);if(b=di(b.children))a.children=b;return a}function bb(a,b,c,d){a=a.options;if(b){b=
-{};for(var e=0;e<c.length;e++)b["$"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty("$"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=""+wa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}function Hd(a,b){null!=b.dangerouslySetInnerHTML?n("91"):void 0;return z({},b,{value:void 0,defaultValue:void 0,children:""+a._wrapperState.initialValue})}
-function Nf(a,b){var c=b.value;null==c&&(c=b.defaultValue,b=b.children,null!=b&&(null!=c?n("92"):void 0,Array.isArray(b)&&(1>=b.length?void 0:n("93"),b=b[0]),c=b),null==c&&(c=""));a._wrapperState={initialValue:wa(c)}}function Of(a,b){var c=wa(b.value),d=wa(b.defaultValue);null!=c&&(c=""+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=""+d)}function Pf(a){switch(a){case "svg":return"http://www.w3.org/2000/svg";case "math":return"http://www.w3.org/1998/Math/MathML";
-default:return"http://www.w3.org/1999/xhtml"}}function Id(a,b){return null==a||"http://www.w3.org/1999/xhtml"===a?Pf(b):"http://www.w3.org/2000/svg"===a&&"foreignObject"===b?"http://www.w3.org/1999/xhtml":a}function Qf(a,b,c){return null==b||"boolean"===typeof b||""===b?"":c||"number"!==typeof b||0===b||Cb.hasOwnProperty(a)&&Cb[a]?(""+b).trim():b+"px"}function Rf(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf("--"),e=Qf(c,b[c],d);"float"===c&&(c="cssFloat");d?a.setProperty(c,
-e):a[c]=e}}function Jd(a,b){b&&(ei[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?n("137",a,""):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?n("60"):void 0,"object"===typeof b.dangerouslySetInnerHTML&&"__html"in b.dangerouslySetInnerHTML?void 0:n("61")),null!=b.style&&"object"!==typeof b.style?n("62",""):void 0)}function Kd(a,b){if(-1===a.indexOf("-"))return"string"===typeof b.is;switch(a){case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":return!1;
+b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Jf(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function Kf(){for(var a=window,b=Cd();b instanceof a.HTMLIFrameElement;){try{var c="string"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Cd(a.document)}return b}function Dd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||
+"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)}function bi(){var a=Kf();if(Dd(a)){if("selectionStart"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(oj){b=null;break a}var f=0,g=-1,h=-1,k=0,l=0,m=a,n=null;b:for(;;){for(var p;;){m!==b||0!==d&&3!==
+m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=f+c);3===m.nodeType&&(f+=m.nodeValue.length);if(null===(p=m.firstChild))break;n=m;m=p}for(;;){if(m===a)break b;n===b&&++k===d&&(g=f);n===e&&++l===c&&(h=f);if(null!==(p=m.nextSibling))break;m=n;n=m.parentNode}m=p}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}function ci(a){var b=Kf(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Jf(c.ownerDocument.documentElement,
+c)){if(null!==d&&Dd(c))if(b=d.start,a=d.end,void 0===a&&(a=b),"selectionStart"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=If(c,f);var g=If(c,d);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&
+(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});"function"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}function Lf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(Ed||null==ab||ab!==Cd(c))return null;c=
+ab;"selectionStart"in c&&Dd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return Bb&&zb(Bb,c)?null:(Bb=c,a=H.getPooled(Mf.select,Fd,a,b),a.type="select",a.target=ab,Ua(a),a)}function di(a){var b="";R.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Gd(a,b){a=z({children:void 0},b);if(b=di(b.children))a.children=
+b;return a}function bb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b["$"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty("$"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=""+wa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}function Hd(a,b){null!=b.dangerouslySetInnerHTML?n("91"):void 0;return z({},b,{value:void 0,defaultValue:void 0,
+children:""+a._wrapperState.initialValue})}function Nf(a,b){var c=b.value;null==c&&(c=b.defaultValue,b=b.children,null!=b&&(null!=c?n("92"):void 0,Array.isArray(b)&&(1>=b.length?void 0:n("93"),b=b[0]),c=b),null==c&&(c=""));a._wrapperState={initialValue:wa(c)}}function Of(a,b){var c=wa(b.value),d=wa(b.defaultValue);null!=c&&(c=""+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=""+d)}function Pf(a){switch(a){case "svg":return"http://www.w3.org/2000/svg";
+case "math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Id(a,b){return null==a||"http://www.w3.org/1999/xhtml"===a?Pf(b):"http://www.w3.org/2000/svg"===a&&"foreignObject"===b?"http://www.w3.org/1999/xhtml":a}function Qf(a,b,c){return null==b||"boolean"===typeof b||""===b?"":c||"number"!==typeof b||0===b||Cb.hasOwnProperty(a)&&Cb[a]?(""+b).trim():b+"px"}function Rf(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf("--"),
+e=Qf(c,b[c],d);"float"===c&&(c="cssFloat");d?a.setProperty(c,e):a[c]=e}}function Jd(a,b){b&&(ei[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?n("137",a,""):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?n("60"):void 0,"object"===typeof b.dangerouslySetInnerHTML&&"__html"in b.dangerouslySetInnerHTML?void 0:n("61")),null!=b.style&&"object"!==typeof b.style?n("62",""):void 0)}function Kd(a,b){if(-1===a.indexOf("-"))return"string"===typeof b.is;switch(a){case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":return!1;
 default:return!0}}function ha(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Ff(a);b=ed[b];for(var d=0;d<b.length;d++){var e=b[d];if(!c.hasOwnProperty(e)||!c[e]){switch(e){case "scroll":tc("scroll",a);break;case "focus":case "blur":tc("focus",a);tc("blur",a);c.blur=!0;c.focus=!0;break;case "cancel":case "close":gf(e)&&tc(e,a);break;case "invalid":case "submit":case "reset":break;default:-1===Db.indexOf(e)&&t(e,a)}c[e]=!0}}}function xc(){}function Sf(a,b){switch(a){case "button":case "input":case "select":case "textarea":return!!b.autoFocus}return!1}
 function Ld(a,b){return"textarea"===a||"option"===a||"noscript"===a||"string"===typeof b.children||"number"===typeof b.children||"object"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}function fi(a,b,c,d,e,f){a[ic]=e;"input"===c&&"radio"===e.type&&null!=e.name&&sf(a,e);Kd(c,d);d=Kd(c,e);for(f=0;f<b.length;f+=2){var g=b[f],h=b[f+1];"style"===g?Rf(a,h):"dangerouslySetInnerHTML"===g?Tf(a,h):"children"===g?Eb(a,h):wd(a,g,h,d)}switch(c){case "input":yd(a,
 e);break;case "textarea":Of(a,e);break;case "select":b=a._wrapperState.wasMultiple,a._wrapperState.wasMultiple=!!e.multiple,c=e.value,null!=c?bb(a,!!e.multiple,c,!1):b!==!!e.multiple&&(null!=e.defaultValue?bb(a,!!e.multiple,e.defaultValue,!0):bb(a,!!e.multiple,e.multiple?[]:"",!1))}}function Md(a){for(a=a.nextSibling;a&&1!==a.nodeType&&3!==a.nodeType;)a=a.nextSibling;return a}function Uf(a){for(a=a.firstChild;a&&1!==a.nodeType&&3!==a.nodeType;)a=a.nextSibling;return a}function B(a,b){0>cb||(a.current=
@@ -79,15 +79,15 @@ P=r.sibling;var $a=p(e,r,q.value,k);if(null===$a){r||(r=P);break}a&&r&&null===$a
 return function(a,d,f,h){var k="object"===typeof f&&null!==f&&f.type===va&&null===f.key;k&&(f=f.props.children);var l="object"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Fc:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===va:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===va?f.props.children:f.props,h);d.ref=Hb(a,k,f);d.return=a;a=d;break a}else{c(a,k);break}else b(a,k);k=k.sibling}f.type===va?(d=ya(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ac(f.type,f.key,f.props,
 null,a.mode,h),h.ref=Hb(a,d,f),h.return=a,a=h)}return g(a);case Za:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Td(f,a.mode,h);d.return=a;a=d}return g(a)}if("string"===typeof f||"number"===typeof f)return f=""+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=Sd(f,a.mode,
 h),d.return=a,a=d),g(a);if(Gc(f))return q(a,d,f,h);if(wb(f))return v(a,d,f,h);l&&Ec(a,f);if("undefined"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type,n("152",h.displayName||h.name||"Component")}return c(a,d)}}function Ja(a){a===Ib?n("174"):void 0;return a}function Vd(a,b){J(Jb,b,a);J(Kb,a,a);J(V,Ib,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Id(null,"");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=Id(b,c)}B(V,a);J(V,b,a)}function eb(a){B(V,
-a);B(Kb,a);B(Jb,a)}function gg(a){Ja(Jb.current);var b=Ja(V.current);var c=Id(b,a.type);b!==c&&(J(Kb,a,a),J(V,c,a))}function Wd(a){Kb.current===a&&(B(V,a),B(Kb,a))}function W(){n("307")}function Xd(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!Ga(a[c],b[c]))return!1;return!0}function Yd(a,b,c,d,e,f){Lb=f;za=b;X=null!==a?a.memoizedState:null;Hc.current=null===X?ni:hg;b=c(d,e);if(Mb){do Mb=!1,Nb+=1,X=null!==a?a.memoizedState:null,fb=gb,Y=E=v=null,Hc.current=hg,b=c(d,e);while(Mb);
+a);B(Kb,a);B(Jb,a)}function gg(a){Ja(Jb.current);var b=Ja(V.current);var c=Id(b,a.type);b!==c&&(J(Kb,a,a),J(V,c,a))}function Wd(a){Kb.current===a&&(B(V,a),B(Kb,a))}function W(){n("321")}function Xd(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!Ga(a[c],b[c]))return!1;return!0}function Yd(a,b,c,d,e,f){Lb=f;za=b;X=null!==a?a.memoizedState:null;Hc.current=null===X?ni:hg;b=c(d,e);if(Mb){do Mb=!1,Nb+=1,X=null!==a?a.memoizedState:null,fb=gb,Y=E=v=null,Hc.current=hg,b=c(d,e);while(Mb);
 ia=null;Nb=0}Hc.current=Zd;a=za;a.memoizedState=gb;a.expirationTime=Ob;a.updateQueue=Y;a.effectTag|=Pb;a=null!==v&&null!==v.next;Lb=0;fb=E=gb=X=v=za=null;Ob=0;Y=null;Pb=0;a?n("300"):void 0;return b}function $d(){Hc.current=Zd;Lb=0;fb=E=gb=X=v=za=null;Ob=0;Y=null;Pb=0;Mb=!1;ia=null;Nb=0}function hb(){var a={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};null===E?gb=E=a:E=E.next=a;return E}function Qb(){if(null!==fb)E=fb,fb=E.next,v=X,X=null!==v?v.next:null;else{null===X?n("310"):
-void 0;v=X;var a={memoizedState:v.memoizedState,baseState:v.baseState,queue:v.queue,baseUpdate:v.baseUpdate,next:null};E=null===E?gb=a:E.next=a;X=v.next}return E}function ig(a,b){return"function"===typeof b?b(a):b}function jg(a,b,c){b=Qb();c=b.queue;null===c?n("311"):void 0;if(0<Nb){var d=c.dispatch;if(null!==ia){var e=ia.get(c);if(void 0!==e){ia.delete(c);var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);Ga(f,b.memoizedState)||(ja=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=
-f);c.eagerReducer=a;c.eagerState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==d){var h=e=null,k=d,l=!1;do{var m=k.expirationTime;m<Lb?(l||(l=!0,h=g,e=f),m>Ob&&(Ob=m)):f=k.eagerReducer===a?k.eagerState:a(f,k.action);g=k;k=k.next}while(null!==k&&k!==d);l||(h=g,e=f);Ga(f,b.memoizedState)||(ja=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.eagerReducer=a;c.eagerState=f}return[b.memoizedState,
+void 0;v=X;var a={memoizedState:v.memoizedState,baseState:v.baseState,queue:v.queue,baseUpdate:v.baseUpdate,next:null};E=null===E?gb=a:E.next=a;X=v.next}return E}function ig(a,b){return"function"===typeof b?b(a):b}function jg(a,b,c){b=Qb();c=b.queue;null===c?n("311"):void 0;c.lastRenderedReducer=a;if(0<Nb){var d=c.dispatch;if(null!==ia){var e=ia.get(c);if(void 0!==e){ia.delete(c);var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);Ga(f,b.memoizedState)||(ja=!0);b.memoizedState=f;b.baseUpdate===
+c.last&&(b.baseState=f);c.lastRenderedState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==d){var h=e=null,k=d,l=!1;do{var m=k.expirationTime;m<Lb?(l||(l=!0,h=g,e=f),m>Ob&&(Ob=m)):f=k.eagerReducer===a?k.eagerState:a(f,k.action);g=k;k=k.next}while(null!==k&&k!==d);l||(h=g,e=f);Ga(f,b.memoizedState)||(ja=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,
 c.dispatch]}function ae(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===Y?(Y={lastEffect:null},Y.lastEffect=a.next=a):(b=Y.lastEffect,null===b?Y.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,Y.lastEffect=a));return a}function be(a,b,c,d){var e=hb();Pb|=a;e.memoizedState=ae(b,c,void 0,void 0===d?null:d)}function ce(a,b,c,d){var e=Qb();d=void 0===d?null:d;var f=void 0;if(null!==v){var g=v.memoizedState;f=g.destroy;if(null!==d&&Xd(d,g.deps)){ae(ib,c,f,d);return}}Pb|=a;e.memoizedState=
 ae(b,c,f,d)}function kg(a,b){if("function"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function lg(a,b){}function mg(a,b,c){25>Nb?void 0:n("301");var d=a.alternate;if(a===za||null!==d&&d===za)if(Mb=!0,a={expirationTime:Lb,action:c,eagerReducer:null,eagerState:null,next:null},null===ia&&(ia=new Map),c=ia.get(b),void 0===c)ia.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{jb();var e=ka();e=kb(e,a);var f={expirationTime:e,
-action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===d||0===d.expirationTime)&&(d=b.eagerReducer,null!==d))try{var k=b.eagerState,l=d(k,c);f.eagerReducer=d;f.eagerState=l;if(Ga(l,k))return}catch(m){}finally{}Aa(a,e)}}function Ic(a,b){if(0<=Ka){var c=la()-Ka;a.actualDuration+=c;b&&(a.selfBaseDuration=c);Ka=-1}}function ng(a,b){var c=T(5,null,null,0);c.elementType="DELETED";c.type=
-"DELETED";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function og(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}function pg(a){if(La){var b=lb;if(b){var c=b;if(!og(a,b)){b=Md(c);if(!b||!og(a,
-b)){a.effectTag|=2;La=!1;ma=a;return}ng(ma,c)}ma=a;lb=Uf(b)}else a.effectTag|=2,La=!1,ma=a}}function qg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;ma=a}function de(a){if(a!==ma)return!1;if(!La)return qg(a),La=!0,!1;var b=a.type;if(5!==a.tag||"head"!==b&&"body"!==b&&!Ld(b,a.memoizedProps))for(b=lb;b;)ng(a,b),b=Md(b);qg(a);lb=ma?Md(a.stateNode):null;return!0}function ee(){lb=ma=null;La=!1}function L(a,b,c,d){b.child=null===a?fe(b,null,c,d):mb(b,a.child,c,d)}function rg(a,
+action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===d||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var k=b.lastRenderedState,l=d(k,c);f.eagerReducer=d;f.eagerState=l;if(Ga(l,k))return}catch(m){}finally{}Aa(a,e)}}function Ic(a,b){if(0<=Ka){var c=la()-Ka;a.actualDuration+=c;b&&(a.selfBaseDuration=c);Ka=-1}}function ng(a,b){var c=T(5,null,null,0);c.elementType="DELETED";
+c.type="DELETED";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function og(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}function pg(a){if(La){var b=lb;if(b){var c=b;if(!og(a,b)){b=Md(c);if(!b||
+!og(a,b)){a.effectTag|=2;La=!1;ma=a;return}ng(ma,c)}ma=a;lb=Uf(b)}else a.effectTag|=2,La=!1,ma=a}}function qg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;ma=a}function de(a){if(a!==ma)return!1;if(!La)return qg(a),La=!0,!1;var b=a.type;if(5!==a.tag||"head"!==b&&"body"!==b&&!Ld(b,a.memoizedProps))for(b=lb;b;)ng(a,b),b=Md(b);qg(a);lb=ma?Md(a.stateNode):null;return!0}function ee(){lb=ma=null;La=!1}function L(a,b,c,d){b.child=null===a?fe(b,null,c,d):mb(b,a.child,c,d)}function rg(a,
 b,c,d,e){c=c.render;var f=b.ref;nb(b,e);d=Yd(a,b,c,d,f,e);if(null!==a&&!ja)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),na(a,b,e);b.effectTag|=1;L(a,b,d,e);return b.child}function sg(a,b,c,d,e,f){if(null===a){var g=c.type;if("function"===typeof g&&!Rd(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,tg(a,b,g,d,e,f);a=Ac(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<
 f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:zb,c(e,d)&&a.ref===b.ref))return na(a,b,f);b.effectTag|=1;a=Ia(g,d,f);a.ref=b.ref;a.return=b;return b.child=a}function tg(a,b,c,d,e,f){return null!==a&&zb(a.memoizedProps,d)&&a.ref===b.ref&&(ja=!1,e<f)?na(a,b,f):ge(a,b,c,d,f)}function ug(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function ge(a,b,c,d,e){var f=C(c)?Ha:D.current;f=db(b,f);nb(b,e);c=Yd(a,b,c,d,f,e);if(null!==a&&!ja)return b.updateQueue=a.updateQueue,b.effectTag&=
 -517,a.expirationTime<=e&&(a.expirationTime=0),na(a,b,e);b.effectTag|=1;L(a,b,c,e);return b.child}function vg(a,b,c,d,e){if(C(c)){var f=!0;zc(b)}else f=!1;nb(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),cg(b,c,d,e),Ud(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;"object"===typeof l&&null!==l?l=U(l):(l=C(c)?Ha:D.current,l=db(b,l));var m=c.getDerivedStateFromProps,n="function"===typeof m||"function"===
@@ -140,13 +140,13 @@ e&&null!==qe){var h=Di.bind(null,a,e);h=me(h);Oc=Rc(Rg,function(){return Gi(h)})
 if(null!==l&&0===a.__count)try{l.onInteractionScheduledWorkCompleted(a)}catch(mi){M||(M=!0,Pa=mi)}}))})}}function Sg(a){for(;;){var b=a.alternate,c=a.return,d=a.sibling;if(0===(a.effectTag&1024)){q=a;if(a.mode&4){var e=a;Ka=la();0>e.actualStartTime&&(e.actualStartTime=la())}a:{var f=b;b=a;var g=F;e=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:C(b.type)&&yc(b);break;case 3:eb(b);Od(b);e=b.stateNode;e.pendingContext&&(e.context=e.pendingContext,e.pendingContext=
 null);if(null===f||null===f.child)de(b),b.effectTag&=-3;we(b);break;case 5:Wd(b);var h=Ja(Jb.current);g=b.type;if(null!==f&&null!=b.stateNode)Tg(f,b,g,e,h),f.ref!==b.ref&&(b.effectTag|=128);else if(e){var k=Ja(V.current);if(de(b)){e=b;f=e.stateNode;var l=e.type,m=e.memoizedProps,p=h;f[ea]=e;f[ic]=m;g=void 0;h=l;switch(h){case "iframe":case "object":t("load",f);break;case "video":case "audio":for(l=0;l<Db.length;l++)t(Db[l],f);break;case "source":t("error",f);break;case "img":case "image":case "link":t("error",
 f);t("load",f);break;case "form":t("reset",f);t("submit",f);break;case "details":t("toggle",f);break;case "input":rf(f,m);t("invalid",f);ha(p,"onChange");break;case "select":f._wrapperState={wasMultiple:!!m.multiple};t("invalid",f);ha(p,"onChange");break;case "textarea":Nf(f,m),t("invalid",f),ha(p,"onChange")}Jd(h,m);l=null;for(g in m)m.hasOwnProperty(g)&&(k=m[g],"children"===g?"string"===typeof k?f.textContent!==k&&(l=["children",k]):"number"===typeof k&&f.textContent!==""+k&&(l=["children",""+k]):
-Sa.hasOwnProperty(g)&&null!=k&&ha(p,g));switch(h){case "input":oc(f);tf(f,m,!0);break;case "textarea":oc(f);g=f.textContent;g===f._wrapperState.initialValue&&(f.value=g);break;case "select":case "option":break;default:"function"===typeof m.onClick&&(f.onclick=xc)}g=l;e.updateQueue=g;e=null!==g?!0:!1;e&&Tb(b)}else{m=b;f=g;p=e;l=9===h.nodeType?h:h.ownerDocument;"http://www.w3.org/1999/xhtml"===k&&(k=Pf(f));"http://www.w3.org/1999/xhtml"===k?"script"===f?(f=l.createElement("div"),f.innerHTML="<script>\x3c/script>",
-l=f.removeChild(f.firstChild)):"string"===typeof p.is?l=l.createElement(f,{is:p.is}):(l=l.createElement(f),"select"===f&&p.multiple&&(l.multiple=!0)):l=l.createElementNS(k,f);f=l;f[ea]=m;f[ic]=e;Ug(f,b,!1,!1);m=f;l=g;p=e;var v=h,x=Kd(l,p);switch(l){case "iframe":case "object":t("load",m);h=p;break;case "video":case "audio":for(h=0;h<Db.length;h++)t(Db[h],m);h=p;break;case "source":t("error",m);h=p;break;case "img":case "image":case "link":t("error",m);t("load",m);h=p;break;case "form":t("reset",m);
-t("submit",m);h=p;break;case "details":t("toggle",m);h=p;break;case "input":rf(m,p);h=xd(m,p);t("invalid",m);ha(v,"onChange");break;case "option":h=Gd(m,p);break;case "select":m._wrapperState={wasMultiple:!!p.multiple};h=z({},p,{value:void 0});t("invalid",m);ha(v,"onChange");break;case "textarea":Nf(m,p);h=Hd(m,p);t("invalid",m);ha(v,"onChange");break;default:h=p}Jd(l,h);k=void 0;var y=l,w=m,u=h;for(k in u)if(u.hasOwnProperty(k)){var r=u[k];"style"===k?Rf(w,r):"dangerouslySetInnerHTML"===k?(r=r?r.__html:
-void 0,null!=r&&Tf(w,r)):"children"===k?"string"===typeof r?("textarea"!==y||""!==r)&&Eb(w,r):"number"===typeof r&&Eb(w,""+r):"suppressContentEditableWarning"!==k&&"suppressHydrationWarning"!==k&&"autoFocus"!==k&&(Sa.hasOwnProperty(k)?null!=r&&ha(v,k):null!=r&&wd(w,k,r,x))}switch(l){case "input":oc(m);tf(m,p,!1);break;case "textarea":oc(m);h=m.textContent;h===m._wrapperState.initialValue&&(m.value=h);break;case "option":null!=p.value&&m.setAttribute("value",""+wa(p.value));break;case "select":h=m;
-m=p;h.multiple=!!m.multiple;p=m.value;null!=p?bb(h,!!m.multiple,p,!1):null!=m.defaultValue&&bb(h,!!m.multiple,m.defaultValue,!0);break;default:"function"===typeof h.onClick&&(m.onclick=xc)}(e=Sf(g,e))&&Tb(b);b.stateNode=f}null!==b.ref&&(b.effectTag|=128)}else null===b.stateNode?n("166"):void 0;break;case 6:f&&null!=b.stateNode?Vg(f,b,f.memoizedProps,e):("string"!==typeof e&&(null===b.stateNode?n("166"):void 0),f=Ja(Jb.current),Ja(V.current),de(b)?(e=b,g=e.stateNode,f=e.memoizedProps,g[ea]=e,(e=g.nodeValue!==
-f)&&Tb(b)):(g=b,e=(9===f.nodeType?f:f.ownerDocument).createTextNode(e),e[ea]=b,g.stateNode=e));break;case 11:break;case 13:e=b.memoizedState;if(0!==(b.effectTag&64)){b.expirationTime=g;q=b;break a}e=null!==e;g=null!==f&&null!==f.memoizedState;null!==f&&!e&&g&&(f=f.child.sibling,null!==f&&(h=b.firstEffect,null!==h?(b.firstEffect=f,f.nextEffect=h):(b.firstEffect=b.lastEffect=f,f.nextEffect=null),f.effectTag=8));if(e||g)b.effectTag|=4;break;case 7:break;case 8:break;case 12:break;case 4:eb(b);we(b);
-break;case 10:je(b);break;case 9:break;case 14:break;case 17:C(b.type)&&yc(b);break;case 18:break;default:n("156")}q=null}a.mode&4&&Ic(a,!1);b=a;if(1===F||1!==b.childExpirationTime){e=0;if(b.mode&4){g=b.actualDuration;f=b.selfBaseDuration;h=null===b.alternate||b.child!==b.alternate.child;for(m=b.child;null!==m;)p=m.expirationTime,l=m.childExpirationTime,p>e&&(e=p),l>e&&(e=l),h&&(g+=m.actualDuration),f+=m.treeBaseDuration,m=m.sibling;b.actualDuration=g;b.treeBaseDuration=f}else for(g=b.child;null!==
+Sa.hasOwnProperty(g)&&null!=k&&ha(p,g));switch(h){case "input":oc(f);tf(f,m,!0);break;case "textarea":oc(f);g=f.textContent;g===f._wrapperState.initialValue&&(f.value=g);break;case "select":case "option":break;default:"function"===typeof m.onClick&&(f.onclick=xc)}g=l;e.updateQueue=g;e=null!==g?!0:!1;e&&Tb(b)}else{m=b;p=g;f=e;l=9===h.nodeType?h:h.ownerDocument;"http://www.w3.org/1999/xhtml"===k&&(k=Pf(p));"http://www.w3.org/1999/xhtml"===k?"script"===p?(f=l.createElement("div"),f.innerHTML="<script>\x3c/script>",
+l=f.removeChild(f.firstChild)):"string"===typeof f.is?l=l.createElement(p,{is:f.is}):(l=l.createElement(p),"select"===p&&(p=l,f.multiple?p.multiple=!0:f.size&&(p.size=f.size))):l=l.createElementNS(k,p);f=l;f[ea]=m;f[ic]=e;Ug(f,b,!1,!1);m=f;l=g;p=e;var v=h,x=Kd(l,p);switch(l){case "iframe":case "object":t("load",m);h=p;break;case "video":case "audio":for(h=0;h<Db.length;h++)t(Db[h],m);h=p;break;case "source":t("error",m);h=p;break;case "img":case "image":case "link":t("error",m);t("load",m);h=p;break;
+case "form":t("reset",m);t("submit",m);h=p;break;case "details":t("toggle",m);h=p;break;case "input":rf(m,p);h=xd(m,p);t("invalid",m);ha(v,"onChange");break;case "option":h=Gd(m,p);break;case "select":m._wrapperState={wasMultiple:!!p.multiple};h=z({},p,{value:void 0});t("invalid",m);ha(v,"onChange");break;case "textarea":Nf(m,p);h=Hd(m,p);t("invalid",m);ha(v,"onChange");break;default:h=p}Jd(l,h);k=void 0;var y=l,w=m,u=h;for(k in u)if(u.hasOwnProperty(k)){var r=u[k];"style"===k?Rf(w,r):"dangerouslySetInnerHTML"===
+k?(r=r?r.__html:void 0,null!=r&&Tf(w,r)):"children"===k?"string"===typeof r?("textarea"!==y||""!==r)&&Eb(w,r):"number"===typeof r&&Eb(w,""+r):"suppressContentEditableWarning"!==k&&"suppressHydrationWarning"!==k&&"autoFocus"!==k&&(Sa.hasOwnProperty(k)?null!=r&&ha(v,k):null!=r&&wd(w,k,r,x))}switch(l){case "input":oc(m);tf(m,p,!1);break;case "textarea":oc(m);h=m.textContent;h===m._wrapperState.initialValue&&(m.value=h);break;case "option":null!=p.value&&m.setAttribute("value",""+wa(p.value));break;case "select":h=
+m;m=p;h.multiple=!!m.multiple;p=m.value;null!=p?bb(h,!!m.multiple,p,!1):null!=m.defaultValue&&bb(h,!!m.multiple,m.defaultValue,!0);break;default:"function"===typeof h.onClick&&(m.onclick=xc)}(e=Sf(g,e))&&Tb(b);b.stateNode=f}null!==b.ref&&(b.effectTag|=128)}else null===b.stateNode?n("166"):void 0;break;case 6:f&&null!=b.stateNode?Vg(f,b,f.memoizedProps,e):("string"!==typeof e&&(null===b.stateNode?n("166"):void 0),f=Ja(Jb.current),Ja(V.current),de(b)?(e=b,g=e.stateNode,f=e.memoizedProps,g[ea]=e,(e=
+g.nodeValue!==f)&&Tb(b)):(g=b,e=(9===f.nodeType?f:f.ownerDocument).createTextNode(e),e[ea]=b,g.stateNode=e));break;case 11:break;case 13:e=b.memoizedState;if(0!==(b.effectTag&64)){b.expirationTime=g;q=b;break a}e=null!==e;g=null!==f&&null!==f.memoizedState;null!==f&&!e&&g&&(f=f.child.sibling,null!==f&&(h=b.firstEffect,null!==h?(b.firstEffect=f,f.nextEffect=h):(b.firstEffect=b.lastEffect=f,f.nextEffect=null),f.effectTag=8));if(e||g)b.effectTag|=4;break;case 7:break;case 8:break;case 12:break;case 4:eb(b);
+we(b);break;case 10:je(b);break;case 9:break;case 14:break;case 17:C(b.type)&&yc(b);break;case 18:break;default:n("156")}q=null}a.mode&4&&Ic(a,!1);b=a;if(1===F||1!==b.childExpirationTime){e=0;if(b.mode&4){g=b.actualDuration;f=b.selfBaseDuration;h=null===b.alternate||b.child!==b.alternate.child;for(m=b.child;null!==m;)p=m.expirationTime,l=m.childExpirationTime,p>e&&(e=p),l>e&&(e=l),h&&(g+=m.actualDuration),f+=m.treeBaseDuration,m=m.sibling;b.actualDuration=g;b.treeBaseDuration=f}else for(g=b.child;null!==
 g;)f=g.expirationTime,h=g.childExpirationTime,f>e&&(e=f),h>e&&(e=h),g=g.sibling;b.childExpirationTime=e}if(null!==q)return q;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1<a.effectTag&&(null!==c.lastEffect?c.lastEffect.nextEffect=a:c.firstEffect=a,c.lastEffect=a))}else{if(a.mode&4){Ic(a,!1);b=a.actualDuration;for(e=a.child;null!==e;)b+=e.actualDuration,
 e=e.sibling;a.actualDuration=b}a=xi(a,F);if(null!==a)return a.effectTag&=1023,a;null!==c&&(c.firstEffect=c.lastEffect=null,c.effectTag|=1024)}if(null!==d)return d;if(null!==c)a=c;else break}return null}function Wg(a){var b=a.alternate;a.mode&4&&(Ka=la(),0>a.actualStartTime&&(a.actualStartTime=la()));b=pi(b,a,F);a.memoizedProps=a.pendingProps;a.mode&4&&Ic(a,!0);null===b&&(b=Sg(a));Qg.current=null;return b}function Xg(a,b){Ea?n("243"):void 0;jb();Ea=!0;var c=xe.current;xe.current=Zd;var d=a.nextExpirationTimeToWorkOn;
 if(d!==F||a!==Z||null===q){Og();Z=a;F=d;q=Ia(Z.current,null,F);a.pendingCommitExpirationTime=0;var e=new Set;a.pendingInteractionMap.forEach(function(a,b){b>=d&&a.forEach(function(a){return e.add(a)})});a.memoizedInteractions=e;if(0<e.size){var f=ve.current;if(null!==f){var g=1E3*d+a.interactionThreadID;try{f.onWorkStarted(e,g)}catch(l){M||(M=!0,Pa=l)}}}}f=null;f=pa.current;pa.current=a.memoizedInteractions;g=!1;do{try{if(b)for(;null!==q&&!Sc();)q=Wg(q);else for(;null!==q;)q=Wg(q)}catch(l){if(Sb=
@@ -207,19 +207,20 @@ source:!0,track:!0,wbr:!0}),Q=R.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIR
 clearTimeout:void 0,Gi=bh,Ei=ah;new Set;var Nd=[],cb=-1,xa={},D={current:xa},K={current:!1},Ha=xa,Pd=null,Qd=null,Si="undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__,T=function(a,b,c,d){return new hi(a,b,c,d)},bd=R.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.SchedulerTracing,pa=bd.__interactionsRef,ve=bd.__subscriberRef,Ti=bd.unstable_getThreadID,me=bd.unstable_wrap,eg=(new R.Component).refs,Dc={isMounted:function(a){return(a=a._reactInternalFiber)?2===Ab(a):!1},enqueueSetState:function(a,
 b,c){a=a._reactInternalFiber;var d=ka();d=kb(d,a);var e=Ca(d);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);jb();oa(a,e);Aa(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=ka();d=kb(d,a);var e=Ca(d);e.tag=Dg;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);jb();oa(a,e);Aa(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=ka();c=kb(c,a);var d=Ca(c);d.tag=Jc;void 0!==b&&null!==b&&(d.callback=b);jb();oa(a,d);Aa(a,c)}},Gc=Array.isArray,mb=fg(!0),fe=fg(!1),
 Ib={},V={current:Ib},Kb={current:Ib},Jb={current:Ib},ib=0,Ai=2,Vb=4,ri=8,Ci=16,Wb=32,se=64,re=128,Hc=Qa.ReactCurrentDispatcher,Lb=0,za=null,v=null,X=null,gb=null,E=null,fb=null,Ob=0,Y=null,Pb=0,Mb=!1,ia=null,Nb=0,Zd={readContext:U,useCallback:W,useContext:W,useEffect:W,useImperativeHandle:W,useLayoutEffect:W,useMemo:W,useReducer:W,useRef:W,useState:W,useDebugValue:W},ni={readContext:U,useCallback:function(a,b){hb().memoizedState=[a,void 0===b?null:b];return a},useContext:U,useEffect:function(a,b){return be(516,
-re|se,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return be(4,Vb|Wb,kg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return be(4,Vb|Wb,a,b)},useMemo:function(a,b){var c=hb();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=hb();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,eagerReducer:a,eagerState:b};a=a.dispatch=mg.bind(null,za,a);return[d.memoizedState,a]},useRef:function(a){var b=
-hb();a={current:a};return b.memoizedState=a},useState:function(a){var b=hb();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,eagerReducer:ig,eagerState:a};a=a.dispatch=mg.bind(null,za,a);return[b.memoizedState,a]},useDebugValue:lg},hg={readContext:U,useCallback:function(a,b){var c=Qb();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Xd(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:U,useEffect:function(a,b){return ce(516,
-re|se,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ce(4,Vb|Wb,kg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ce(4,Vb|Wb,a,b)},useMemo:function(a,b){var c=Qb();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Xd(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:jg,useRef:function(a){return Qb().memoizedState},useState:function(a){return jg(ig,a)},useDebugValue:lg},Pg=0,Ka=-1,ma=null,lb=null,La=!1,oi=Qa.ReactCurrentOwner,
-ja=!1,ie={current:null},Rb=null,Ma=null,Sb=null,zg=0,Dg=1,Jc=2,le=3,Ba=!1,Ug=void 0,we=void 0,Tg=void 0,Vg=void 0;Ug=function(a,b,c,d){for(c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};we=function(a){};Tg=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;
-Ja(V.current);a=null;switch(c){case "input":f=xd(g,f);d=xd(g,d);a=[];break;case "option":f=Gd(g,f);d=Gd(g,d);a=[];break;case "select":f=z({},f,{value:void 0});d=z({},d,{value:void 0});a=[];break;case "textarea":f=Hd(g,f);d=Hd(g,d);a=[];break;default:"function"!==typeof f.onClick&&"function"===typeof d.onClick&&(g.onclick=xc)}Jd(c,d);g=c=void 0;var h=null;for(c in f)if(!d.hasOwnProperty(c)&&f.hasOwnProperty(c)&&null!=f[c])if("style"===c){var k=f[c];for(g in k)k.hasOwnProperty(g)&&(h||(h={}),h[g]="")}else"dangerouslySetInnerHTML"!==
-c&&"children"!==c&&"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(Sa.hasOwnProperty(c)?a||(a=[]):(a=a||[]).push(c,null));for(c in d){var l=d[c];k=null!=f?f[c]:void 0;if(d.hasOwnProperty(c)&&l!==k&&(null!=l||null!=k))if("style"===c)if(k){for(g in k)!k.hasOwnProperty(g)||l&&l.hasOwnProperty(g)||(h||(h={}),h[g]="");for(g in l)l.hasOwnProperty(g)&&k[g]!==l[g]&&(h||(h={}),h[g]=l[g])}else h||(a||(a=[]),a.push(c,h)),h=l;else"dangerouslySetInnerHTML"===c?(l=l?l.__html:
-void 0,k=k?k.__html:void 0,null!=l&&k!==l&&(a=a||[]).push(c,""+l)):"children"===c?k===l||"string"!==typeof l&&"number"!==typeof l||(a=a||[]).push(c,""+l):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&(Sa.hasOwnProperty(c)?(null!=l&&ha(e,c),a||k===l||(a=[])):(a=a||[]).push(c,l))}h&&(a=a||[]).push("style",h);e=a;(b.updateQueue=e)&&Tb(b)}};Vg=function(a,b,c,d){c!==d&&Tb(b)};var si="function"===typeof WeakSet?WeakSet:Set,vi="function"===typeof WeakMap?WeakMap:Map,xe=Qa.ReactCurrentDispatcher,
-Qg=Qa.ReactCurrentOwner;null==pa||null==pa.current?n("302"):void 0;var Fe=1073741822,Ea=!1,q=null,Z=null,F=0,Oa=-1,pe=!1,p=null,Qc=!1,qe=null,Oc=null,Nc=null,Da=null,ca=null,G=null,Tc=0,Uc=void 0,x=!1,da=null,A=0,qa=0,M=!1,Pa=null,y=!1,Wc=!1,pb=null,Be=la(),ba=1073741822-(Be/10|0),ob=ba,Mi=50,Xb=0,Ce=null,Yc=!1;nd=function(a,b,c){switch(b){case "input":yd(a,c);b=c.name;if("radio"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll("input[name="+JSON.stringify(""+b)+'][type="radio"]');
-for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=id(d);e?void 0:n("90");jf(d);yd(d,e)}}}break;case "textarea":Of(a,c);break;case "select":b=c.value,null!=b&&bb(a,!!c.multiple,b,!1)}};Zb.prototype.render=function(a){this._defer?void 0:n("250");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new qb;hh(a,b,null,c,d._onCommit);return d};Zb.prototype.then=function(a){if(this._didComplete)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=
-[]);b.push(a)}};Zb.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:n("251");if(this._hasChildren){var c=this._expirationTime;if(b!==this){this._hasChildren&&(c=this._expirationTime=b._expirationTime,this.render(this._children));for(var d=null,e=b;e!==this;)d=e,e=e._next;null===d?n("251"):void 0;d._next=e._next;this._next=b;a.firstBatch=this}this._defer=!1;ch(a,c);b=this._next;this._next=null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children)}else this._next=
-null,this._defer=!1};Zb.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++)(0,a[b])()}};qb.prototype.then=function(a){if(this._didCommit)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};qb.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++){var c=a[b];"function"!==typeof c?n("191",c):void 0;c()}}};rb.prototype.render=
-function(a,b){var c=this._internalRoot,d=new qb;b=void 0===b?null:b;null!==b&&d.then(b);De(a,c,null,d._onCommit);return d};rb.prototype.unmount=function(a){var b=this._internalRoot,c=new qb;a=void 0===a?null:a;null!==a&&c.then(a);De(null,b,null,c._onCommit);return c};rb.prototype.legacy_renderSubtreeIntoContainer=function(a,b,c){var d=this._internalRoot,e=new qb;c=void 0===c?null:c;null!==c&&e.then(c);De(b,d,a,e._onCommit);return e};rb.prototype.createBatch=function(){var a=new Zb(this),b=a._expirationTime,
-c=this._internalRoot,d=c.firstBatch;if(null===d)c.firstBatch=a,a._next=null;else{for(c=null;null!==d&&d._expirationTime>=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};(function(a,b,c){df=a;Ef=b;ef=c})(eh,gh,function(){x||0===qa||(aa(qa,!1),qa=0)});var uh={createPortal:ih,findDOMNode:function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;void 0===b&&("function"===typeof a.render?n("188"):n("268",Object.keys(a)));a=zf(b);a=null===a?null:a.stateNode;return a},
-hydrate:function(a,b,c){sb(b)?void 0:n("200");return $c(null,a,b,!0,c)},render:function(a,b,c){sb(b)?void 0:n("200");return $c(null,a,b,!1,c)},unstable_renderSubtreeIntoContainer:function(a,b,c,d){sb(c)?void 0:n("200");null==a||void 0===a._reactInternalFiber?n("38"):void 0;return $c(a,b,c,!1,d)},unmountComponentAtNode:function(a){sb(a)?void 0:n("40");return a._reactRootContainer?(fh(function(){$c(null,null,a,!1,function(){a._reactRootContainer=null})}),!0):!1},unstable_createPortal:function(){return ih.apply(void 0,
-arguments)},unstable_batchedUpdates:eh,unstable_interactiveUpdates:gh,flushSync:function(a,b){x?n("187"):void 0;var c=y;y=!0;try{return Zg(a,b)}finally{y=c,aa(1073741823,!1)}},unstable_createRoot:function(a,b){sb(a)?void 0:n("299","unstable_createRoot");return new rb(a,!0,null!=b&&!0===b.hydrate)},unstable_flushControlled:function(a){var b=y;y=!0;try{Zg(a)}finally{(y=b)||x||aa(1073741823,!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[Pe,Fa,id,Ge.injectEventPluginsByName,dd,Ua,function(a){fd(a,
-Dh)},af,bf,sc,hd]}};(function(a){var b=a.findFiberByHostInstance;return gi(z({},a,{overrideProps:null,currentDispatcherRef:Qa.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=zf(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:hc,bundleType:0,version:"16.8.3",rendererPackageName:"react-dom"});var vh={default:uh},wh=vh&&uh||vh;return wh.default||wh});
+re|se,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return be(4,Vb|Wb,kg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return be(4,Vb|Wb,a,b)},useMemo:function(a,b){var c=hb();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=hb();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=mg.bind(null,za,a);return[d.memoizedState,a]},useRef:function(a){var b=
+hb();a={current:a};return b.memoizedState=a},useState:function(a){var b=hb();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,lastRenderedReducer:ig,lastRenderedState:a};a=a.dispatch=mg.bind(null,za,a);return[b.memoizedState,a]},useDebugValue:lg},hg={readContext:U,useCallback:function(a,b){var c=Qb();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Xd(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:U,useEffect:function(a,
+b){return ce(516,re|se,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ce(4,Vb|Wb,kg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ce(4,Vb|Wb,a,b)},useMemo:function(a,b){var c=Qb();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Xd(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:jg,useRef:function(a){return Qb().memoizedState},useState:function(a){return jg(ig,a)},useDebugValue:lg},Pg=0,Ka=-1,ma=null,lb=null,
+La=!1,oi=Qa.ReactCurrentOwner,ja=!1,ie={current:null},Rb=null,Ma=null,Sb=null,zg=0,Dg=1,Jc=2,le=3,Ba=!1,Ug=void 0,we=void 0,Tg=void 0,Vg=void 0;Ug=function(a,b,c,d){for(c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};we=function(a){};Tg=function(a,b,c,d,e){var f=a.memoizedProps;
+if(f!==d){var g=b.stateNode;Ja(V.current);a=null;switch(c){case "input":f=xd(g,f);d=xd(g,d);a=[];break;case "option":f=Gd(g,f);d=Gd(g,d);a=[];break;case "select":f=z({},f,{value:void 0});d=z({},d,{value:void 0});a=[];break;case "textarea":f=Hd(g,f);d=Hd(g,d);a=[];break;default:"function"!==typeof f.onClick&&"function"===typeof d.onClick&&(g.onclick=xc)}Jd(c,d);g=c=void 0;var h=null;for(c in f)if(!d.hasOwnProperty(c)&&f.hasOwnProperty(c)&&null!=f[c])if("style"===c){var k=f[c];for(g in k)k.hasOwnProperty(g)&&
+(h||(h={}),h[g]="")}else"dangerouslySetInnerHTML"!==c&&"children"!==c&&"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(Sa.hasOwnProperty(c)?a||(a=[]):(a=a||[]).push(c,null));for(c in d){var l=d[c];k=null!=f?f[c]:void 0;if(d.hasOwnProperty(c)&&l!==k&&(null!=l||null!=k))if("style"===c)if(k){for(g in k)!k.hasOwnProperty(g)||l&&l.hasOwnProperty(g)||(h||(h={}),h[g]="");for(g in l)l.hasOwnProperty(g)&&k[g]!==l[g]&&(h||(h={}),h[g]=l[g])}else h||(a||(a=[]),a.push(c,
+h)),h=l;else"dangerouslySetInnerHTML"===c?(l=l?l.__html:void 0,k=k?k.__html:void 0,null!=l&&k!==l&&(a=a||[]).push(c,""+l)):"children"===c?k===l||"string"!==typeof l&&"number"!==typeof l||(a=a||[]).push(c,""+l):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&(Sa.hasOwnProperty(c)?(null!=l&&ha(e,c),a||k===l||(a=[])):(a=a||[]).push(c,l))}h&&(a=a||[]).push("style",h);e=a;(b.updateQueue=e)&&Tb(b)}};Vg=function(a,b,c,d){c!==d&&Tb(b)};var si="function"===typeof WeakSet?WeakSet:Set,
+vi="function"===typeof WeakMap?WeakMap:Map,xe=Qa.ReactCurrentDispatcher,Qg=Qa.ReactCurrentOwner;null==pa||null==pa.current?n("302"):void 0;var Fe=1073741822,Ea=!1,q=null,Z=null,F=0,Oa=-1,pe=!1,p=null,Qc=!1,qe=null,Oc=null,Nc=null,Da=null,ca=null,G=null,Tc=0,Uc=void 0,x=!1,da=null,A=0,qa=0,M=!1,Pa=null,y=!1,Wc=!1,pb=null,Be=la(),ba=1073741822-(Be/10|0),ob=ba,Mi=50,Xb=0,Ce=null,Yc=!1;nd=function(a,b,c){switch(b){case "input":yd(a,c);b=c.name;if("radio"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;
+c=c.querySelectorAll("input[name="+JSON.stringify(""+b)+'][type="radio"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=id(d);e?void 0:n("90");jf(d);yd(d,e)}}}break;case "textarea":Of(a,c);break;case "select":b=c.value,null!=b&&bb(a,!!c.multiple,b,!1)}};Zb.prototype.render=function(a){this._defer?void 0:n("250");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new qb;hh(a,b,null,c,d._onCommit);return d};Zb.prototype.then=function(a){if(this._didComplete)a();
+else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};Zb.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:n("251");if(this._hasChildren){var c=this._expirationTime;if(b!==this){this._hasChildren&&(c=this._expirationTime=b._expirationTime,this.render(this._children));for(var d=null,e=b;e!==this;)d=e,e=e._next;null===d?n("251"):void 0;d._next=e._next;this._next=b;a.firstBatch=this}this._defer=!1;ch(a,c);b=this._next;this._next=
+null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children)}else this._next=null,this._defer=!1};Zb.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++)(0,a[b])()}};qb.prototype.then=function(a){if(this._didCommit)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};qb.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var a=this._callbacks;if(null!==a)for(var b=
+0;b<a.length;b++){var c=a[b];"function"!==typeof c?n("191",c):void 0;c()}}};rb.prototype.render=function(a,b){var c=this._internalRoot,d=new qb;b=void 0===b?null:b;null!==b&&d.then(b);De(a,c,null,d._onCommit);return d};rb.prototype.unmount=function(a){var b=this._internalRoot,c=new qb;a=void 0===a?null:a;null!==a&&c.then(a);De(null,b,null,c._onCommit);return c};rb.prototype.legacy_renderSubtreeIntoContainer=function(a,b,c){var d=this._internalRoot,e=new qb;c=void 0===c?null:c;null!==c&&e.then(c);
+De(b,d,a,e._onCommit);return e};rb.prototype.createBatch=function(){var a=new Zb(this),b=a._expirationTime,c=this._internalRoot,d=c.firstBatch;if(null===d)c.firstBatch=a,a._next=null;else{for(c=null;null!==d&&d._expirationTime>=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};(function(a,b,c){df=a;Ef=b;ef=c})(eh,gh,function(){x||0===qa||(aa(qa,!1),qa=0)});var uh={createPortal:ih,findDOMNode:function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;void 0===
+b&&("function"===typeof a.render?n("188"):n("268",Object.keys(a)));a=zf(b);a=null===a?null:a.stateNode;return a},hydrate:function(a,b,c){sb(b)?void 0:n("200");return $c(null,a,b,!0,c)},render:function(a,b,c){sb(b)?void 0:n("200");return $c(null,a,b,!1,c)},unstable_renderSubtreeIntoContainer:function(a,b,c,d){sb(c)?void 0:n("200");null==a||void 0===a._reactInternalFiber?n("38"):void 0;return $c(a,b,c,!1,d)},unmountComponentAtNode:function(a){sb(a)?void 0:n("40");return a._reactRootContainer?(fh(function(){$c(null,
+null,a,!1,function(){a._reactRootContainer=null})}),!0):!1},unstable_createPortal:function(){return ih.apply(void 0,arguments)},unstable_batchedUpdates:eh,unstable_interactiveUpdates:gh,flushSync:function(a,b){x?n("187"):void 0;var c=y;y=!0;try{return Zg(a,b)}finally{y=c,aa(1073741823,!1)}},unstable_createRoot:function(a,b){sb(a)?void 0:n("299","unstable_createRoot");return new rb(a,!0,null!=b&&!0===b.hydrate)},unstable_flushControlled:function(a){var b=y;y=!0;try{Zg(a)}finally{(y=b)||x||aa(1073741823,
+!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[Pe,Fa,id,Ge.injectEventPluginsByName,dd,Ua,function(a){fd(a,Dh)},af,bf,sc,hd]}};(function(a){var b=a.findFiberByHostInstance;return gi(z({},a,{overrideProps:null,currentDispatcherRef:Qa.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=zf(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:hc,bundleType:0,version:"16.8.6",rendererPackageName:"react-dom"});
+var vh={default:uh},wh=vh&&uh||vh;return wh.default||wh});
diff --git a/node_modules/react-dom/umd/react-dom-unstable-fizz.browser.development.js b/node_modules/react-dom/umd/react-dom-unstable-fizz.browser.development.js
index 06c276ff..49f7b1e3 100644
--- a/node_modules/react-dom/umd/react-dom-unstable-fizz.browser.development.js
+++ b/node_modules/react-dom/umd/react-dom-unstable-fizz.browser.development.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-unstable-fizz.browser.development.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/react-dom/umd/react-dom-unstable-fizz.browser.production.min.js b/node_modules/react-dom/umd/react-dom-unstable-fizz.browser.production.min.js
index 66bdef02..d1c5ec3a 100644
--- a/node_modules/react-dom/umd/react-dom-unstable-fizz.browser.production.min.js
+++ b/node_modules/react-dom/umd/react-dom-unstable-fizz.browser.production.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-unstable-fizz.browser.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/react-dom/umd/react-dom-unstable-native-dependencies.development.js b/node_modules/react-dom/umd/react-dom-unstable-native-dependencies.development.js
index 5763cd42..75de2a5d 100644
--- a/node_modules/react-dom/umd/react-dom-unstable-native-dependencies.development.js
+++ b/node_modules/react-dom/umd/react-dom-unstable-native-dependencies.development.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-unstable-native-dependencies.development.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/react-dom/umd/react-dom-unstable-native-dependencies.production.min.js b/node_modules/react-dom/umd/react-dom-unstable-native-dependencies.production.min.js
index 874fdff7..63f71b36 100644
--- a/node_modules/react-dom/umd/react-dom-unstable-native-dependencies.production.min.js
+++ b/node_modules/react-dom/umd/react-dom-unstable-native-dependencies.production.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom-unstable-native-dependencies.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/react-dom/umd/react-dom.development.js b/node_modules/react-dom/umd/react-dom.development.js
index c67b1236..d9ce05d0 100644
--- a/node_modules/react-dom/umd/react-dom.development.js
+++ b/node_modules/react-dom/umd/react-dom.development.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom.development.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -5435,15 +5435,29 @@ function isInDocument(node) {
   return node && node.ownerDocument && containsNode(node.ownerDocument.documentElement, node);
 }
 
+function isSameOriginFrame(iframe) {
+  try {
+    // Accessing the contentDocument of a HTMLIframeElement can cause the browser
+    // to throw, e.g. if it has a cross-origin src attribute.
+    // Safari will show an error in the console when the access results in "Blocked a frame with origin". e.g:
+    // iframe.contentDocument.defaultView;
+    // A safety way is to access one of the cross origin properties: Window or Location
+    // Which might result in "SecurityError" DOM Exception and it is compatible to Safari.
+    // https://html.spec.whatwg.org/multipage/browsers.html#integration-with-idl
+
+    return typeof iframe.contentWindow.location.href === 'string';
+  } catch (err) {
+    return false;
+  }
+}
+
 function getActiveElementDeep() {
   var win = window;
   var element = getActiveElement();
   while (element instanceof win.HTMLIFrameElement) {
-    // Accessing the contentDocument of a HTMLIframeElement can cause the browser
-    // to throw, e.g. if it has a cross-origin src attribute
-    try {
-      win = element.contentDocument.defaultView;
-    } catch (e) {
+    if (isSameOriginFrame(element)) {
+      win = element.contentWindow;
+    } else {
       return element;
     }
     element = getActiveElement(win.document);
@@ -7733,14 +7747,25 @@ function createElement(type, props, rootContainerElement, parentNamespace) {
       // See discussion in https://github.com/facebook/react/pull/6896
       // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240
       domElement = ownerDocument.createElement(type);
-      // Normally attributes are assigned in `setInitialDOMProperties`, however the `multiple`
-      // attribute on `select`s needs to be added before `option`s are inserted. This prevents
-      // a bug where the `select` does not scroll to the correct option because singular
-      // `select` elements automatically pick the first item.
+      // Normally attributes are assigned in `setInitialDOMProperties`, however the `multiple` and `size`
+      // attributes on `select`s needs to be added before `option`s are inserted.
+      // This prevents:
+      // - a bug where the `select` does not scroll to the correct option because singular
+      //  `select` elements automatically pick the first item #13222
+      // - a bug where the `select` set the first item as selected despite the `size` attribute #14239
       // See https://github.com/facebook/react/issues/13222
-      if (type === 'select' && props.multiple) {
+      // and https://github.com/facebook/react/issues/14239
+      if (type === 'select') {
         var node = domElement;
-        node.multiple = true;
+        if (props.multiple) {
+          node.multiple = true;
+        } else if (props.size) {
+          // Setting a size greater than 1 causes a select to behave like `multiple=true`, where
+          // it is possible that no option is selected.
+          //
+          // This is only necessary when a select in "single selection mode".
+          node.size = props.size;
+        }
       }
     }
   } else {
@@ -10123,6 +10148,7 @@ function FiberNode(tag, pendingProps, key, mode) {
     this._debugSource = null;
     this._debugOwner = null;
     this._debugIsCurrentlyTiming = false;
+    this._debugHookTypes = null;
     if (!hasBadMapPolyfill && typeof Object.preventExtensions === 'function') {
       Object.preventExtensions(this);
     }
@@ -10190,6 +10216,7 @@ function createWorkInProgress(current, pendingProps, expirationTime) {
       workInProgress._debugID = current._debugID;
       workInProgress._debugSource = current._debugSource;
       workInProgress._debugOwner = current._debugOwner;
+      workInProgress._debugHookTypes = current._debugHookTypes;
     }
 
     workInProgress.alternate = current;
@@ -10457,6 +10484,7 @@ function assignFiberPropertiesInDEV(target, source) {
   target._debugSource = source._debugSource;
   target._debugOwner = source._debugOwner;
   target._debugIsCurrentlyTiming = source._debugIsCurrentlyTiming;
+  target._debugHookTypes = source._debugHookTypes;
   return target;
 }
 
@@ -11421,14 +11449,35 @@ function constructClassInstance(workInProgress, ctor, props, renderExpirationTim
   var unmaskedContext = emptyContextObject;
   var context = null;
   var contextType = ctor.contextType;
-  if (typeof contextType === 'object' && contextType !== null) {
-    {
-      if (contextType.$$typeof !== REACT_CONTEXT_TYPE && !didWarnAboutInvalidateContextType.has(ctor)) {
+
+  {
+    if ('contextType' in ctor) {
+      var isValid =
+      // Allow null for conditional declaration
+      contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a <Context.Consumer>
+
+      if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) {
         didWarnAboutInvalidateContextType.add(ctor);
-        warningWithoutStack$1(false, '%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext(). ' + 'Did you accidentally pass the Context.Provider instead?', getComponentName(ctor) || 'Component');
+
+        var addendum = '';
+        if (contextType === undefined) {
+          addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.';
+        } else if (typeof contextType !== 'object') {
+          addendum = ' However, it is set to a ' + typeof contextType + '.';
+        } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {
+          addendum = ' Did you accidentally pass the Context.Provider instead?';
+        } else if (contextType._context !== undefined) {
+          // <Context.Consumer>
+          addendum = ' Did you accidentally pass the Context.Consumer instead?';
+        } else {
+          addendum = ' However, it is set to an object with keys {' + Object.keys(contextType).join(', ') + '}.';
+        }
+        warningWithoutStack$1(false, '%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext().%s', getComponentName(ctor) || 'Component', addendum);
       }
     }
+  }
 
+  if (typeof contextType === 'object' && contextType !== null) {
     context = readContext(contextType);
   } else {
     unmaskedContext = getUnmaskedContext(workInProgress, ctor, true);
@@ -12855,7 +12904,6 @@ var currentlyRenderingFiber$1 = null;
 // current hook list is the list that belongs to the current fiber. The
 // work-in-progress hook list is a new list that will be added to the
 // work-in-progress fiber.
-var firstCurrentHook = null;
 var currentHook = null;
 var nextCurrentHook = null;
 var firstWorkInProgressHook = null;
@@ -12885,45 +12933,73 @@ var RE_RENDER_LIMIT = 25;
 // In DEV, this is the name of the currently executing primitive hook
 var currentHookNameInDev = null;
 
-function warnOnHookMismatchInDev() {
+// In DEV, this list ensures that hooks are called in the same order between renders.
+// The list stores the order of hooks used during the initial render (mount).
+// Subsequent renders (updates) reference this list.
+var hookTypesDev = null;
+var hookTypesUpdateIndexDev = -1;
+
+function mountHookTypesDev() {
+  {
+    var hookName = currentHookNameInDev;
+
+    if (hookTypesDev === null) {
+      hookTypesDev = [hookName];
+    } else {
+      hookTypesDev.push(hookName);
+    }
+  }
+}
+
+function updateHookTypesDev() {
+  {
+    var hookName = currentHookNameInDev;
+
+    if (hookTypesDev !== null) {
+      hookTypesUpdateIndexDev++;
+      if (hookTypesDev[hookTypesUpdateIndexDev] !== hookName) {
+        warnOnHookMismatchInDev(hookName);
+      }
+    }
+  }
+}
+
+function warnOnHookMismatchInDev(currentHookName) {
   {
     var componentName = getComponentName(currentlyRenderingFiber$1.type);
     if (!didWarnAboutMismatchedHooksForComponent.has(componentName)) {
       didWarnAboutMismatchedHooksForComponent.add(componentName);
 
-      var secondColumnStart = 22;
+      if (hookTypesDev !== null) {
+        var table = '';
 
-      var table = '';
-      var prevHook = firstCurrentHook;
-      var nextHook = firstWorkInProgressHook;
-      var n = 1;
-      while (prevHook !== null && nextHook !== null) {
-        var oldHookName = prevHook._debugType;
-        var newHookName = nextHook._debugType;
+        var secondColumnStart = 30;
 
-        var row = n + '. ' + oldHookName;
+        for (var i = 0; i <= hookTypesUpdateIndexDev; i++) {
+          var oldHookName = hookTypesDev[i];
+          var newHookName = i === hookTypesUpdateIndexDev ? currentHookName : oldHookName;
 
-        // Extra space so second column lines up
-        // lol @ IE not supporting String#repeat
-        while (row.length < secondColumnStart) {
-          row += ' ';
-        }
+          var row = i + 1 + '. ' + oldHookName;
+
+          // Extra space so second column lines up
+          // lol @ IE not supporting String#repeat
+          while (row.length < secondColumnStart) {
+            row += ' ';
+          }
 
-        row += newHookName + '\n';
+          row += newHookName + '\n';
 
-        table += row;
-        prevHook = prevHook.next;
-        nextHook = nextHook.next;
-        n++;
-      }
+          table += row;
+        }
 
-      warning$1(false, 'React has detected a change in the order of Hooks called by %s. ' + 'This will lead to bugs and errors if not fixed. ' + 'For more information, read the Rules of Hooks: https://fb.me/rules-of-hooks\n\n' + '   Previous render    Next render\n' + '   -------------------------------\n' + '%s' + '   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n', componentName, table);
+        warning$1(false, 'React has detected a change in the order of Hooks called by %s. ' + 'This will lead to bugs and errors if not fixed. ' + 'For more information, read the Rules of Hooks: https://fb.me/rules-of-hooks\n\n' + '   Previous render            Next render\n' + '   ------------------------------------------------------\n' + '%s' + '   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n', componentName, table);
+      }
     }
   }
 }
 
 function throwInvalidHookError() {
-  invariant(false, 'Hooks can only be called inside the body of a function component. (https://fb.me/react-invalid-hook-call)');
+  invariant(false, 'Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.');
 }
 
 function areHookInputsEqual(nextDeps, prevDeps) {
@@ -12953,7 +13029,12 @@ function areHookInputsEqual(nextDeps, prevDeps) {
 function renderWithHooks(current, workInProgress, Component, props, refOrContext, nextRenderExpirationTime) {
   renderExpirationTime = nextRenderExpirationTime;
   currentlyRenderingFiber$1 = workInProgress;
-  firstCurrentHook = nextCurrentHook = current !== null ? current.memoizedState : null;
+  nextCurrentHook = current !== null ? current.memoizedState : null;
+
+  {
+    hookTypesDev = current !== null ? current._debugHookTypes : null;
+    hookTypesUpdateIndexDev = -1;
+  }
 
   // The following should have already been reset
   // currentHook = null;
@@ -12967,8 +13048,26 @@ function renderWithHooks(current, workInProgress, Component, props, refOrContext
   // numberOfReRenders = 0;
   // sideEffectTag = 0;
 
+  // TODO Warn if no hooks are used at all during mount, then some are used during update.
+  // Currently we will identify the update render as a mount because nextCurrentHook === null.
+  // This is tricky because it's valid for certain types of components (e.g. React.lazy)
+
+  // Using nextCurrentHook to differentiate between mount/update only works if at least one stateful hook is used.
+  // Non-stateful hooks (e.g. context) don't get added to memoizedState,
+  // so nextCurrentHook would be null during updates and mounts.
   {
-    ReactCurrentDispatcher$1.current = nextCurrentHook === null ? HooksDispatcherOnMountInDEV : HooksDispatcherOnUpdateInDEV;
+    if (nextCurrentHook !== null) {
+      ReactCurrentDispatcher$1.current = HooksDispatcherOnUpdateInDEV;
+    } else if (hookTypesDev !== null) {
+      // This dispatcher handles an edge case where a component is updating,
+      // but no stateful hooks have been used.
+      // We want to match the production code behavior (which will use HooksDispatcherOnMount),
+      // but with the extra DEV validation to ensure hooks ordering hasn't changed.
+      // This dispatcher does that.
+      ReactCurrentDispatcher$1.current = HooksDispatcherOnMountWithHookTypesInDEV;
+    } else {
+      ReactCurrentDispatcher$1.current = HooksDispatcherOnMountInDEV;
+    }
   }
 
   var children = Component(props, refOrContext);
@@ -12979,13 +13078,18 @@ function renderWithHooks(current, workInProgress, Component, props, refOrContext
       numberOfReRenders += 1;
 
       // Start over from the beginning of the list
-      firstCurrentHook = nextCurrentHook = current !== null ? current.memoizedState : null;
+      nextCurrentHook = current !== null ? current.memoizedState : null;
       nextWorkInProgressHook = firstWorkInProgressHook;
 
       currentHook = null;
       workInProgressHook = null;
       componentUpdateQueue = null;
 
+      {
+        // Also validate hook order for cascading updates.
+        hookTypesUpdateIndexDev = -1;
+      }
+
       ReactCurrentDispatcher$1.current = HooksDispatcherOnUpdateInDEV;
 
       children = Component(props, refOrContext);
@@ -12995,10 +13099,6 @@ function renderWithHooks(current, workInProgress, Component, props, refOrContext
     numberOfReRenders = 0;
   }
 
-  {
-    currentHookNameInDev = null;
-  }
-
   // We can assume the previous dispatcher is always this one, since we set it
   // at the beginning of the render phase and there's no re-entrancy.
   ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;
@@ -13010,18 +13110,29 @@ function renderWithHooks(current, workInProgress, Component, props, refOrContext
   renderedWork.updateQueue = componentUpdateQueue;
   renderedWork.effectTag |= sideEffectTag;
 
+  {
+    renderedWork._debugHookTypes = hookTypesDev;
+  }
+
+  // This check uses currentHook so that it works the same in DEV and prod bundles.
+  // hookTypesDev could catch more cases (e.g. context) but only in DEV bundles.
   var didRenderTooFewHooks = currentHook !== null && currentHook.next !== null;
 
   renderExpirationTime = NoWork;
   currentlyRenderingFiber$1 = null;
 
-  firstCurrentHook = null;
   currentHook = null;
   nextCurrentHook = null;
   firstWorkInProgressHook = null;
   workInProgressHook = null;
   nextWorkInProgressHook = null;
 
+  {
+    currentHookNameInDev = null;
+    hookTypesDev = null;
+    hookTypesUpdateIndexDev = -1;
+  }
+
   remainingExpirationTime = NoWork;
   componentUpdateQueue = null;
   sideEffectTag = 0;
@@ -13055,21 +13166,23 @@ function resetHooks() {
   renderExpirationTime = NoWork;
   currentlyRenderingFiber$1 = null;
 
-  firstCurrentHook = null;
   currentHook = null;
   nextCurrentHook = null;
   firstWorkInProgressHook = null;
   workInProgressHook = null;
   nextWorkInProgressHook = null;
 
-  remainingExpirationTime = NoWork;
-  componentUpdateQueue = null;
-  sideEffectTag = 0;
-
   {
+    hookTypesDev = null;
+    hookTypesUpdateIndexDev = -1;
+
     currentHookNameInDev = null;
   }
 
+  remainingExpirationTime = NoWork;
+  componentUpdateQueue = null;
+  sideEffectTag = 0;
+
   didScheduleRenderPhaseUpdate = false;
   renderPhaseUpdates = null;
   numberOfReRenders = 0;
@@ -13086,9 +13199,6 @@ function mountWorkInProgressHook() {
     next: null
   };
 
-  {
-    hook._debugType = currentHookNameInDev;
-  }
   if (workInProgressHook === null) {
     // This is the first hook in the list
     firstWorkInProgressHook = workInProgressHook = hook;
@@ -13135,13 +13245,6 @@ function updateWorkInProgressHook() {
       workInProgressHook = workInProgressHook.next = newHook;
     }
     nextCurrentHook = currentHook.next;
-
-    {
-      newHook._debugType = currentHookNameInDev;
-      if (currentHookNameInDev !== currentHook._debugType) {
-        warnOnHookMismatchInDev();
-      }
-    }
   }
   return workInProgressHook;
 }
@@ -13156,20 +13259,6 @@ function basicStateReducer(state, action) {
   return typeof action === 'function' ? action(state) : action;
 }
 
-function mountContext(context, observedBits) {
-  {
-    mountWorkInProgressHook();
-  }
-  return readContext(context, observedBits);
-}
-
-function updateContext(context, observedBits) {
-  {
-    updateWorkInProgressHook();
-  }
-  return readContext(context, observedBits);
-}
-
 function mountReducer(reducer, initialArg, init) {
   var hook = mountWorkInProgressHook();
   var initialState = void 0;
@@ -13182,8 +13271,8 @@ function mountReducer(reducer, initialArg, init) {
   var queue = hook.queue = {
     last: null,
     dispatch: null,
-    eagerReducer: reducer,
-    eagerState: initialState
+    lastRenderedReducer: reducer,
+    lastRenderedState: initialState
   };
   var dispatch = queue.dispatch = dispatchAction.bind(null,
   // Flow doesn't know this is non-null, but we do.
@@ -13196,6 +13285,8 @@ function updateReducer(reducer, initialArg, init) {
   var queue = hook.queue;
   !(queue !== null) ? invariant(false, 'Should have a queue. This is likely a bug in React. Please file an issue.') : void 0;
 
+  queue.lastRenderedReducer = reducer;
+
   if (numberOfReRenders > 0) {
     // This is a re-render. Apply the new render phase updates to the previous
     var _dispatch = queue.dispatch;
@@ -13230,8 +13321,7 @@ function updateReducer(reducer, initialArg, init) {
           hook.baseState = newState;
         }
 
-        queue.eagerReducer = reducer;
-        queue.eagerState = newState;
+        queue.lastRenderedState = newState;
 
         return [newState, _dispatch];
       }
@@ -13310,8 +13400,7 @@ function updateReducer(reducer, initialArg, init) {
     hook.baseUpdate = newBaseUpdate;
     hook.baseState = newBaseState;
 
-    queue.eagerReducer = reducer;
-    queue.eagerState = _newState;
+    queue.lastRenderedState = _newState;
   }
 
   var dispatch = queue.dispatch;
@@ -13327,8 +13416,8 @@ function mountState(initialState) {
   var queue = hook.queue = {
     last: null,
     dispatch: null,
-    eagerReducer: basicStateReducer,
-    eagerState: initialState
+    lastRenderedReducer: basicStateReducer,
+    lastRenderedState: initialState
   };
   var dispatch = queue.dispatch = dispatchAction.bind(null,
   // Flow doesn't know this is non-null, but we do.
@@ -13605,21 +13694,21 @@ function dispatchAction(fiber, queue, action) {
       // The queue is currently empty, which means we can eagerly compute the
       // next state before entering the render phase. If the new state is the
       // same as the current state, we may be able to bail out entirely.
-      var _eagerReducer = queue.eagerReducer;
-      if (_eagerReducer !== null) {
+      var _lastRenderedReducer = queue.lastRenderedReducer;
+      if (_lastRenderedReducer !== null) {
         var prevDispatcher = void 0;
         {
           prevDispatcher = ReactCurrentDispatcher$1.current;
           ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
         }
         try {
-          var currentState = queue.eagerState;
-          var _eagerState = _eagerReducer(currentState, action);
+          var currentState = queue.lastRenderedState;
+          var _eagerState = _lastRenderedReducer(currentState, action);
           // Stash the eagerly computed state, and the reducer used to compute
           // it, on the update object. If the reducer hasn't changed by the
           // time we enter the render phase, then the eager state can be used
           // without calling the reducer again.
-          _update2.eagerReducer = _eagerReducer;
+          _update2.eagerReducer = _lastRenderedReducer;
           _update2.eagerState = _eagerState;
           if (is(_eagerState, currentState)) {
             // Fast path. We can bail out without scheduling React to re-render.
@@ -13662,6 +13751,7 @@ var ContextOnlyDispatcher = {
 };
 
 var HooksDispatcherOnMountInDEV = null;
+var HooksDispatcherOnMountWithHookTypesInDEV = null;
 var HooksDispatcherOnUpdateInDEV = null;
 var InvalidNestedHooksDispatcherOnMountInDEV = null;
 var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
@@ -13681,26 +13771,32 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useCallback: function (callback, deps) {
       currentHookNameInDev = 'useCallback';
+      mountHookTypesDev();
       return mountCallback(callback, deps);
     },
     useContext: function (context, observedBits) {
       currentHookNameInDev = 'useContext';
-      return mountContext(context, observedBits);
+      mountHookTypesDev();
+      return readContext(context, observedBits);
     },
     useEffect: function (create, deps) {
       currentHookNameInDev = 'useEffect';
+      mountHookTypesDev();
       return mountEffect(create, deps);
     },
     useImperativeHandle: function (ref, create, deps) {
       currentHookNameInDev = 'useImperativeHandle';
+      mountHookTypesDev();
       return mountImperativeHandle(ref, create, deps);
     },
     useLayoutEffect: function (create, deps) {
       currentHookNameInDev = 'useLayoutEffect';
+      mountHookTypesDev();
       return mountLayoutEffect(create, deps);
     },
     useMemo: function (create, deps) {
       currentHookNameInDev = 'useMemo';
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13711,6 +13807,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useReducer: function (reducer, initialArg, init) {
       currentHookNameInDev = 'useReducer';
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13721,10 +13818,12 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useRef: function (initialValue) {
       currentHookNameInDev = 'useRef';
+      mountHookTypesDev();
       return mountRef(initialValue);
     },
     useState: function (initialState) {
       currentHookNameInDev = 'useState';
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13735,6 +13834,81 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useDebugValue: function (value, formatterFn) {
       currentHookNameInDev = 'useDebugValue';
+      mountHookTypesDev();
+      return mountDebugValue(value, formatterFn);
+    }
+  };
+
+  HooksDispatcherOnMountWithHookTypesInDEV = {
+    readContext: function (context, observedBits) {
+      return readContext(context, observedBits);
+    },
+    useCallback: function (callback, deps) {
+      currentHookNameInDev = 'useCallback';
+      updateHookTypesDev();
+      return mountCallback(callback, deps);
+    },
+    useContext: function (context, observedBits) {
+      currentHookNameInDev = 'useContext';
+      updateHookTypesDev();
+      return readContext(context, observedBits);
+    },
+    useEffect: function (create, deps) {
+      currentHookNameInDev = 'useEffect';
+      updateHookTypesDev();
+      return mountEffect(create, deps);
+    },
+    useImperativeHandle: function (ref, create, deps) {
+      currentHookNameInDev = 'useImperativeHandle';
+      updateHookTypesDev();
+      return mountImperativeHandle(ref, create, deps);
+    },
+    useLayoutEffect: function (create, deps) {
+      currentHookNameInDev = 'useLayoutEffect';
+      updateHookTypesDev();
+      return mountLayoutEffect(create, deps);
+    },
+    useMemo: function (create, deps) {
+      currentHookNameInDev = 'useMemo';
+      updateHookTypesDev();
+      var prevDispatcher = ReactCurrentDispatcher$1.current;
+      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
+      try {
+        return mountMemo(create, deps);
+      } finally {
+        ReactCurrentDispatcher$1.current = prevDispatcher;
+      }
+    },
+    useReducer: function (reducer, initialArg, init) {
+      currentHookNameInDev = 'useReducer';
+      updateHookTypesDev();
+      var prevDispatcher = ReactCurrentDispatcher$1.current;
+      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
+      try {
+        return mountReducer(reducer, initialArg, init);
+      } finally {
+        ReactCurrentDispatcher$1.current = prevDispatcher;
+      }
+    },
+    useRef: function (initialValue) {
+      currentHookNameInDev = 'useRef';
+      updateHookTypesDev();
+      return mountRef(initialValue);
+    },
+    useState: function (initialState) {
+      currentHookNameInDev = 'useState';
+      updateHookTypesDev();
+      var prevDispatcher = ReactCurrentDispatcher$1.current;
+      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
+      try {
+        return mountState(initialState);
+      } finally {
+        ReactCurrentDispatcher$1.current = prevDispatcher;
+      }
+    },
+    useDebugValue: function (value, formatterFn) {
+      currentHookNameInDev = 'useDebugValue';
+      updateHookTypesDev();
       return mountDebugValue(value, formatterFn);
     }
   };
@@ -13745,26 +13919,32 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useCallback: function (callback, deps) {
       currentHookNameInDev = 'useCallback';
+      updateHookTypesDev();
       return updateCallback(callback, deps);
     },
     useContext: function (context, observedBits) {
       currentHookNameInDev = 'useContext';
-      return updateContext(context, observedBits);
+      updateHookTypesDev();
+      return readContext(context, observedBits);
     },
     useEffect: function (create, deps) {
       currentHookNameInDev = 'useEffect';
+      updateHookTypesDev();
       return updateEffect(create, deps);
     },
     useImperativeHandle: function (ref, create, deps) {
       currentHookNameInDev = 'useImperativeHandle';
+      updateHookTypesDev();
       return updateImperativeHandle(ref, create, deps);
     },
     useLayoutEffect: function (create, deps) {
       currentHookNameInDev = 'useLayoutEffect';
+      updateHookTypesDev();
       return updateLayoutEffect(create, deps);
     },
     useMemo: function (create, deps) {
       currentHookNameInDev = 'useMemo';
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13775,6 +13955,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useReducer: function (reducer, initialArg, init) {
       currentHookNameInDev = 'useReducer';
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13785,10 +13966,12 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useRef: function (initialValue) {
       currentHookNameInDev = 'useRef';
+      updateHookTypesDev();
       return updateRef(initialValue);
     },
     useState: function (initialState) {
       currentHookNameInDev = 'useState';
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13799,6 +13982,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     },
     useDebugValue: function (value, formatterFn) {
       currentHookNameInDev = 'useDebugValue';
+      updateHookTypesDev();
       return updateDebugValue(value, formatterFn);
     }
   };
@@ -13811,31 +13995,37 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useCallback: function (callback, deps) {
       currentHookNameInDev = 'useCallback';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountCallback(callback, deps);
     },
     useContext: function (context, observedBits) {
       currentHookNameInDev = 'useContext';
       warnInvalidHookAccess();
-      return mountContext(context, observedBits);
+      mountHookTypesDev();
+      return readContext(context, observedBits);
     },
     useEffect: function (create, deps) {
       currentHookNameInDev = 'useEffect';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountEffect(create, deps);
     },
     useImperativeHandle: function (ref, create, deps) {
       currentHookNameInDev = 'useImperativeHandle';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountImperativeHandle(ref, create, deps);
     },
     useLayoutEffect: function (create, deps) {
       currentHookNameInDev = 'useLayoutEffect';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountLayoutEffect(create, deps);
     },
     useMemo: function (create, deps) {
       currentHookNameInDev = 'useMemo';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13847,6 +14037,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useReducer: function (reducer, initialArg, init) {
       currentHookNameInDev = 'useReducer';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13858,11 +14049,13 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useRef: function (initialValue) {
       currentHookNameInDev = 'useRef';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountRef(initialValue);
     },
     useState: function (initialState) {
       currentHookNameInDev = 'useState';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
       try {
@@ -13874,6 +14067,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useDebugValue: function (value, formatterFn) {
       currentHookNameInDev = 'useDebugValue';
       warnInvalidHookAccess();
+      mountHookTypesDev();
       return mountDebugValue(value, formatterFn);
     }
   };
@@ -13886,31 +14080,37 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useCallback: function (callback, deps) {
       currentHookNameInDev = 'useCallback';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateCallback(callback, deps);
     },
     useContext: function (context, observedBits) {
       currentHookNameInDev = 'useContext';
       warnInvalidHookAccess();
-      return updateContext(context, observedBits);
+      updateHookTypesDev();
+      return readContext(context, observedBits);
     },
     useEffect: function (create, deps) {
       currentHookNameInDev = 'useEffect';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateEffect(create, deps);
     },
     useImperativeHandle: function (ref, create, deps) {
       currentHookNameInDev = 'useImperativeHandle';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateImperativeHandle(ref, create, deps);
     },
     useLayoutEffect: function (create, deps) {
       currentHookNameInDev = 'useLayoutEffect';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateLayoutEffect(create, deps);
     },
     useMemo: function (create, deps) {
       currentHookNameInDev = 'useMemo';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13922,6 +14122,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useReducer: function (reducer, initialArg, init) {
       currentHookNameInDev = 'useReducer';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13933,11 +14134,13 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useRef: function (initialValue) {
       currentHookNameInDev = 'useRef';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateRef(initialValue);
     },
     useState: function (initialState) {
       currentHookNameInDev = 'useState';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       var prevDispatcher = ReactCurrentDispatcher$1.current;
       ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
       try {
@@ -13949,6 +14152,7 @@ var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
     useDebugValue: function (value, formatterFn) {
       currentHookNameInDev = 'useDebugValue';
       warnInvalidHookAccess();
+      updateHookTypesDev();
       return updateDebugValue(value, formatterFn);
     }
   };
@@ -17220,11 +17424,11 @@ function commitHookEffectList(unmountTag, mountTag, finishedWork) {
             if (_destroy === null) {
               addendum = ' You returned null. If your effect does not require clean ' + 'up, return undefined (or nothing).';
             } else if (typeof _destroy.then === 'function') {
-              addendum = '\n\nIt looks like you wrote useEffect(async () => ...) or returned a Promise. ' + 'Instead, you may write an async function separately ' + 'and then call it from inside the effect:\n\n' + 'async function fetchComment(commentId) {\n' + '  // You can await here\n' + '}\n\n' + 'useEffect(() => {\n' + '  fetchComment(commentId);\n' + '}, [commentId]);\n\n' + 'In the future, React will provide a more idiomatic solution for data fetching ' + "that doesn't involve writing effects manually.";
+              addendum = '\n\nIt looks like you wrote useEffect(async () => ...) or returned a Promise. ' + 'Instead, write the async function inside your effect ' + 'and call it immediately:\n\n' + 'useEffect(() => {\n' + '  async function fetchData() {\n' + '    // You can await here\n' + '    const response = await MyAPI.getData(someId);\n' + '    // ...\n' + '  }\n' + '  fetchData();\n' + '}, [someId]); // Or [] if effect doesn\'t need props or state\n\n' + 'Learn more about data fetching with Hooks: https://fb.me/react-hooks-data-fetching';
             } else {
               addendum = ' You returned: ' + _destroy;
             }
-            warningWithoutStack$1(false, 'An Effect function must not return anything besides a function, ' + 'which is used for clean-up.%s%s', addendum, getStackByFiberInDevAndProd(finishedWork));
+            warningWithoutStack$1(false, 'An effect function must not return anything besides a function, ' + 'which is used for clean-up.%s%s', addendum, getStackByFiberInDevAndProd(finishedWork));
           }
         }
       }
@@ -20683,7 +20887,7 @@ implementation) {
 
 // TODO: this is special because it gets imported during build.
 
-var ReactVersion = '16.8.3';
+var ReactVersion = '16.8.6';
 
 // TODO: This type is shared between the reconciler and ReactDOM, but will
 // eventually be lifted out to the renderer.
diff --git a/node_modules/react-dom/umd/react-dom.production.min.js b/node_modules/react-dom/umd/react-dom.production.min.js
index 4dfeedd6..f447cda4 100644
--- a/node_modules/react-dom/umd/react-dom.production.min.js
+++ b/node_modules/react-dom/umd/react-dom.production.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -39,16 +39,16 @@ for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.re
 break}var d;for(d=c;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo;if(!d)break;a.ancestors.push(c);c=dc(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=kd(a.nativeEvent);d=a.topLevelType;for(var f=a.nativeEvent,g=null,h=0;h<cc.length;h++){var l=cc[h];l&&(l=l.extractEvents(d,b,f,e))&&(g=Pa(g,l))}cd(g)}}function r(a,b){if(!b)return null;var c=(wf(a)?xf:oc).bind(null,a);b.addEventListener(a,c,!1)}function pc(a,b){if(!b)return null;var c=(wf(a)?xf:oc).bind(null,a);
 b.addEventListener(a,c,!0)}function xf(a,b){yf(oc,a,b)}function oc(a,b){if(qc){var c=kd(b);c=dc(c);null===c||"number"!==typeof c.tag||2===wb(c)||(c=null);if(rc.length){var d=rc.pop();d.topLevelType=a;d.nativeEvent=b;d.targetInst=c;a=d}else a={topLevelType:a,nativeEvent:b,targetInst:c,ancestors:[]};try{Xe(Uh,a)}finally{a.topLevelType=null,a.nativeEvent=null,a.targetInst=null,a.ancestors.length=0,10>rc.length&&rc.push(a)}}}function zf(a){Object.prototype.hasOwnProperty.call(a,sc)||(a[sc]=Vh++,Af[a[sc]]=
 {});return Af[a[sc]]}function xd(a){a=a||("undefined"!==typeof document?document:void 0);if("undefined"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Bf(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function Cf(a,b){var c=Bf(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Bf(c)}}function Df(a,b){return a&&b?a===
-b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Df(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function Ef(){for(var a=window,b=xd();b instanceof a.HTMLIFrameElement;){try{a=b.contentDocument.defaultView}catch(c){break}b=xd(a.document)}return b}function yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||
-"true"===a.contentEditable)}function Wh(){var a=Ef();if(yd(a)){if("selectionStart"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(cj){b=null;break a}var f=0,g=-1,h=-1,l=0,k=0,m=a,n=null;b:for(;;){for(var p;;){m!==b||0!==d&&3!==m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=
-f+c);3===m.nodeType&&(f+=m.nodeValue.length);if(null===(p=m.firstChild))break;n=m;m=p}for(;;){if(m===a)break b;n===b&&++l===d&&(g=f);n===e&&++k===c&&(h=f);if(null!==(p=m.nextSibling))break;m=n;n=m.parentNode}m=p}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}function Xh(a){var b=Ef(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Df(c.ownerDocument.documentElement,c)){if(null!==d&&yd(c))if(b=d.start,a=d.end,
-void 0===a&&(a=b),"selectionStart"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Cf(c,f);var g=Cf(c,d);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),
-a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});"function"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}function Gf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(zd||null==Wa||Wa!==xd(c))return null;c=Wa;"selectionStart"in c&&yd(c)?c={start:c.selectionStart,
-end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return xb&&vb(xb,c)?null:(xb=c,a=J.getPooled(Hf.select,Ad,a,b),a.type="select",a.target=Wa,Qa(a),a)}function Yh(a){var b="";da.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Bd(a,b){a=B({children:void 0},b);if(b=Yh(b.children))a.children=b;return a}function Xa(a,b,c,d){a=a.options;if(b){b=
-{};for(var e=0;e<c.length;e++)b["$"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty("$"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=""+ua(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}function Cd(a,b){null!=b.dangerouslySetInnerHTML?n("91"):void 0;return B({},b,{value:void 0,defaultValue:void 0,children:""+a._wrapperState.initialValue})}
-function If(a,b){var c=b.value;null==c&&(c=b.defaultValue,b=b.children,null!=b&&(null!=c?n("92"):void 0,Array.isArray(b)&&(1>=b.length?void 0:n("93"),b=b[0]),c=b),null==c&&(c=""));a._wrapperState={initialValue:ua(c)}}function Jf(a,b){var c=ua(b.value),d=ua(b.defaultValue);null!=c&&(c=""+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=""+d)}function Kf(a){switch(a){case "svg":return"http://www.w3.org/2000/svg";case "math":return"http://www.w3.org/1998/Math/MathML";
-default:return"http://www.w3.org/1999/xhtml"}}function Dd(a,b){return null==a||"http://www.w3.org/1999/xhtml"===a?Kf(b):"http://www.w3.org/2000/svg"===a&&"foreignObject"===b?"http://www.w3.org/1999/xhtml":a}function Lf(a,b,c){return null==b||"boolean"===typeof b||""===b?"":c||"number"!==typeof b||0===b||yb.hasOwnProperty(a)&&yb[a]?(""+b).trim():b+"px"}function Mf(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf("--"),e=Lf(c,b[c],d);"float"===c&&(c="cssFloat");d?a.setProperty(c,
-e):a[c]=e}}function Ed(a,b){b&&(Zh[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?n("137",a,""):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?n("60"):void 0,"object"===typeof b.dangerouslySetInnerHTML&&"__html"in b.dangerouslySetInnerHTML?void 0:n("61")),null!=b.style&&"object"!==typeof b.style?n("62",""):void 0)}function Fd(a,b){if(-1===a.indexOf("-"))return"string"===typeof b.is;switch(a){case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":return!1;
+b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Df(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function Ef(){for(var a=window,b=xd();b instanceof a.HTMLIFrameElement;){try{var c="string"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=xd(a.document)}return b}function yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||
+"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)}function Wh(){var a=Ef();if(yd(a)){if("selectionStart"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(cj){b=null;break a}var f=0,g=-1,h=-1,l=0,k=0,m=a,n=null;b:for(;;){for(var p;;){m!==b||0!==d&&3!==
+m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=f+c);3===m.nodeType&&(f+=m.nodeValue.length);if(null===(p=m.firstChild))break;n=m;m=p}for(;;){if(m===a)break b;n===b&&++l===d&&(g=f);n===e&&++k===c&&(h=f);if(null!==(p=m.nextSibling))break;m=n;n=m.parentNode}m=p}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}function Xh(a){var b=Ef(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Df(c.ownerDocument.documentElement,
+c)){if(null!==d&&yd(c))if(b=d.start,a=d.end,void 0===a&&(a=b),"selectionStart"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Cf(c,f);var g=Cf(c,d);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&
+(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});"function"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}function Gf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(zd||null==Wa||Wa!==xd(c))return null;c=
+Wa;"selectionStart"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return xb&&vb(xb,c)?null:(xb=c,a=J.getPooled(Hf.select,Ad,a,b),a.type="select",a.target=Wa,Qa(a),a)}function Yh(a){var b="";da.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Bd(a,b){a=B({children:void 0},b);if(b=Yh(b.children))a.children=
+b;return a}function Xa(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b["$"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty("$"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=""+ua(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}function Cd(a,b){null!=b.dangerouslySetInnerHTML?n("91"):void 0;return B({},b,{value:void 0,defaultValue:void 0,
+children:""+a._wrapperState.initialValue})}function If(a,b){var c=b.value;null==c&&(c=b.defaultValue,b=b.children,null!=b&&(null!=c?n("92"):void 0,Array.isArray(b)&&(1>=b.length?void 0:n("93"),b=b[0]),c=b),null==c&&(c=""));a._wrapperState={initialValue:ua(c)}}function Jf(a,b){var c=ua(b.value),d=ua(b.defaultValue);null!=c&&(c=""+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=""+d)}function Kf(a){switch(a){case "svg":return"http://www.w3.org/2000/svg";
+case "math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Dd(a,b){return null==a||"http://www.w3.org/1999/xhtml"===a?Kf(b):"http://www.w3.org/2000/svg"===a&&"foreignObject"===b?"http://www.w3.org/1999/xhtml":a}function Lf(a,b,c){return null==b||"boolean"===typeof b||""===b?"":c||"number"!==typeof b||0===b||yb.hasOwnProperty(a)&&yb[a]?(""+b).trim():b+"px"}function Mf(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf("--"),
+e=Lf(c,b[c],d);"float"===c&&(c="cssFloat");d?a.setProperty(c,e):a[c]=e}}function Ed(a,b){b&&(Zh[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?n("137",a,""):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?n("60"):void 0,"object"===typeof b.dangerouslySetInnerHTML&&"__html"in b.dangerouslySetInnerHTML?void 0:n("61")),null!=b.style&&"object"!==typeof b.style?n("62",""):void 0)}function Fd(a,b){if(-1===a.indexOf("-"))return"string"===typeof b.is;switch(a){case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":return!1;
 default:return!0}}function ha(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=zf(a);b=$c[b];for(var d=0;d<b.length;d++){var e=b[d];if(!c.hasOwnProperty(e)||!c[e]){switch(e){case "scroll":pc("scroll",a);break;case "focus":case "blur":pc("focus",a);pc("blur",a);c.blur=!0;c.focus=!0;break;case "cancel":case "close":af(e)&&pc(e,a);break;case "invalid":case "submit":case "reset":break;default:-1===zb.indexOf(e)&&r(e,a)}c[e]=!0}}}function tc(){}function Nf(a,b){switch(a){case "button":case "input":case "select":case "textarea":return!!b.autoFocus}return!1}
 function Gd(a,b){return"textarea"===a||"option"===a||"noscript"===a||"string"===typeof b.children||"number"===typeof b.children||"object"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}function $h(a,b,c,d,e,f){a[ec]=e;"input"===c&&"radio"===e.type&&null!=e.name&&mf(a,e);Fd(c,d);d=Fd(c,e);for(f=0;f<b.length;f+=2){var g=b[f],h=b[f+1];"style"===g?Mf(a,h):"dangerouslySetInnerHTML"===g?Of(a,h):"children"===g?Ab(a,h):rd(a,g,h,d)}switch(c){case "input":td(a,
 e);break;case "textarea":Jf(a,e);break;case "select":b=a._wrapperState.wasMultiple,a._wrapperState.wasMultiple=!!e.multiple,c=e.value,null!=c?Xa(a,!!e.multiple,c,!1):b!==!!e.multiple&&(null!=e.defaultValue?Xa(a,!!e.multiple,e.defaultValue,!0):Xa(a,!!e.multiple,e.multiple?[]:"",!1))}}function Hd(a){for(a=a.nextSibling;a&&1!==a.nodeType&&3!==a.nodeType;)a=a.nextSibling;return a}function Pf(a){for(a=a.firstChild;a&&1!==a.nodeType&&3!==a.nodeType;)a=a.nextSibling;return a}function D(a,b){0>Ya||(a.current=
@@ -78,14 +78,14 @@ for(var m=l=null,q=g,v=g=0,Q=null,t=h.next();null!==q&&!t.done;v++,t=h.next()){q
 v:t.key),g=f(t,g,v),null===m?l=t:m.sibling=t,m=t);a&&q.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k="object"===typeof f&&null!==f&&f.type===ta&&null===f.key;k&&(f=f.props.children);var l="object"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Bc:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===ta:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===ta?f.props.children:f.props,h);d.ref=Db(a,k,f);d.return=a;a=d;break a}else{c(a,k);break}else b(a,k);
 k=k.sibling}f.type===ta?(d=wa(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=wc(f.type,f.key,f.props,null,a.mode,h),h.ref=Db(a,d,f),h.return=a,a=h)}return g(a);case Va:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Od(f,a.mode,h);d.return=a;a=d}return g(a)}if("string"===typeof f||"number"===
 typeof f)return f=""+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=Nd(f,a.mode,h),d.return=a,a=d),g(a);if(Cc(f))return u(a,d,f,h);if(sb(f))return x(a,d,f,h);l&&Ac(a,f);if("undefined"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type,n("152",h.displayName||h.name||"Component")}return c(a,d)}}function Ha(a){a===Eb?n("174"):void 0;return a}function Qd(a,b){L(Fb,b,a);L(Gb,a,a);L(U,Eb,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Dd(null,
-"");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=Dd(b,c)}D(U,a);L(U,b,a)}function $a(a){D(U,a);D(Gb,a);D(Fb,a)}function bg(a){Ha(Fb.current);var b=Ha(U.current);var c=Dd(b,a.type);b!==c&&(L(Gb,a,a),L(U,c,a))}function Rd(a){Gb.current===a&&(D(U,a),D(Gb,a))}function V(){n("307")}function Sd(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!Ea(a[c],b[c]))return!1;return!0}function Td(a,b,c,d,e,f){Hb=f;xa=b;W=null!==a?a.memoizedState:null;Dc.current=null===
+"");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=Dd(b,c)}D(U,a);L(U,b,a)}function $a(a){D(U,a);D(Gb,a);D(Fb,a)}function bg(a){Ha(Fb.current);var b=Ha(U.current);var c=Dd(b,a.type);b!==c&&(L(Gb,a,a),L(U,c,a))}function Rd(a){Gb.current===a&&(D(U,a),D(Gb,a))}function V(){n("321")}function Sd(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!Ea(a[c],b[c]))return!1;return!0}function Td(a,b,c,d,e,f){Hb=f;xa=b;W=null!==a?a.memoizedState:null;Dc.current=null===
 W?fi:cg;b=c(d,e);if(Ib){do Ib=!1,Jb+=1,W=null!==a?a.memoizedState:null,ab=bb,X=G=y=null,Dc.current=cg,b=c(d,e);while(Ib);ia=null;Jb=0}Dc.current=Ud;a=xa;a.memoizedState=bb;a.expirationTime=Kb;a.updateQueue=X;a.effectTag|=Lb;a=null!==y&&null!==y.next;Hb=0;ab=G=bb=W=y=xa=null;Kb=0;X=null;Lb=0;a?n("300"):void 0;return b}function Vd(){Dc.current=Ud;Hb=0;ab=G=bb=W=y=xa=null;Kb=0;X=null;Lb=0;Ib=!1;ia=null;Jb=0}function cb(){var a={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};
-null===G?bb=G=a:G=G.next=a;return G}function Mb(){if(null!==ab)G=ab,ab=G.next,y=W,W=null!==y?y.next:null;else{null===W?n("310"):void 0;y=W;var a={memoizedState:y.memoizedState,baseState:y.baseState,queue:y.queue,baseUpdate:y.baseUpdate,next:null};G=null===G?bb=a:G.next=a;W=y.next}return G}function dg(a,b){return"function"===typeof b?b(a):b}function eg(a,b,c){b=Mb();c=b.queue;null===c?n("311"):void 0;if(0<Jb){var d=c.dispatch;if(null!==ia){var e=ia.get(c);if(void 0!==e){ia.delete(c);var f=b.memoizedState;
-do f=a(f,e.action),e=e.next;while(null!==e);Ea(f,b.memoizedState)||(ja=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=f);c.eagerReducer=a;c.eagerState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==d){var h=e=null,l=d,k=!1;do{var m=l.expirationTime;m<Hb?(k||(k=!0,h=g,e=f),m>Kb&&(Kb=m)):f=l.eagerReducer===a?l.eagerState:a(f,l.action);g=l;l=l.next}while(null!==l&&l!==d);k||(h=
-g,e=f);Ea(f,b.memoizedState)||(ja=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.eagerReducer=a;c.eagerState=f}return[b.memoizedState,c.dispatch]}function Wd(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===X?(X={lastEffect:null},X.lastEffect=a.next=a):(b=X.lastEffect,null===b?X.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,X.lastEffect=a));return a}function Xd(a,b,c,d){var e=cb();Lb|=a;e.memoizedState=Wd(b,c,void 0,void 0===d?null:d)}function Yd(a,b,c,d){var e=Mb();d=void 0===
+null===G?bb=G=a:G=G.next=a;return G}function Mb(){if(null!==ab)G=ab,ab=G.next,y=W,W=null!==y?y.next:null;else{null===W?n("310"):void 0;y=W;var a={memoizedState:y.memoizedState,baseState:y.baseState,queue:y.queue,baseUpdate:y.baseUpdate,next:null};G=null===G?bb=a:G.next=a;W=y.next}return G}function dg(a,b){return"function"===typeof b?b(a):b}function eg(a,b,c){b=Mb();c=b.queue;null===c?n("311"):void 0;c.lastRenderedReducer=a;if(0<Jb){var d=c.dispatch;if(null!==ia){var e=ia.get(c);if(void 0!==e){ia.delete(c);
+var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);Ea(f,b.memoizedState)||(ja=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=f);c.lastRenderedState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==d){var h=e=null,l=d,k=!1;do{var m=l.expirationTime;m<Hb?(k||(k=!0,h=g,e=f),m>Kb&&(Kb=m)):f=l.eagerReducer===a?l.eagerState:a(f,l.action);g=l;l=l.next}while(null!==l&&l!==
+d);k||(h=g,e=f);Ea(f,b.memoizedState)||(ja=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}function Wd(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===X?(X={lastEffect:null},X.lastEffect=a.next=a):(b=X.lastEffect,null===b?X.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,X.lastEffect=a));return a}function Xd(a,b,c,d){var e=cb();Lb|=a;e.memoizedState=Wd(b,c,void 0,void 0===d?null:d)}function Yd(a,b,c,d){var e=Mb();d=void 0===
 d?null:d;var f=void 0;if(null!==y){var g=y.memoizedState;f=g.destroy;if(null!==d&&Sd(d,g.deps)){Wd(db,c,f,d);return}}Lb|=a;e.memoizedState=Wd(b,c,f,d)}function fg(a,b){if("function"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function gg(a,b){}function hg(a,b,c){25>Jb?void 0:n("301");var d=a.alternate;if(a===xa||null!==d&&d===xa)if(Ib=!0,a={expirationTime:Hb,action:c,eagerReducer:null,eagerState:null,next:null},null===
-ia&&(ia=new Map),c=ia.get(b),void 0===c)ia.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{eb();var e=ka();e=fb(e,a);var f={expirationTime:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===d||0===d.expirationTime)&&(d=b.eagerReducer,null!==d))try{var l=b.eagerState,k=d(l,c);f.eagerReducer=d;f.eagerState=k;if(Ea(k,l))return}catch(m){}finally{}ya(a,e)}}function ig(a,
-b){var c=S(5,null,null,0);c.elementType="DELETED";c.type="DELETED";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function jg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}function kg(a){if(Ia){var b=
+ia&&(ia=new Map),c=ia.get(b),void 0===c)ia.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{eb();var e=ka();e=fb(e,a);var f={expirationTime:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===d||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var l=b.lastRenderedState,k=d(l,c);f.eagerReducer=d;f.eagerState=k;if(Ea(k,l))return}catch(m){}finally{}ya(a,
+e)}}function ig(a,b){var c=S(5,null,null,0);c.elementType="DELETED";c.type="DELETED";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function jg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}function kg(a){if(Ia){var b=
 gb;if(b){var c=b;if(!jg(a,b)){b=Hd(c);if(!b||!jg(a,b)){a.effectTag|=2;Ia=!1;la=a;return}ig(la,c)}la=a;gb=Pf(b)}else a.effectTag|=2,Ia=!1,la=a}}function lg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;la=a}function Zd(a){if(a!==la)return!1;if(!Ia)return lg(a),Ia=!0,!1;var b=a.type;if(5!==a.tag||"head"!==b&&"body"!==b&&!Gd(b,a.memoizedProps))for(b=gb;b;)ig(a,b),b=Hd(b);lg(a);gb=la?Hd(a.stateNode):null;return!0}function $d(){gb=la=null;Ia=!1}function N(a,b,c,d){b.child=null===
 a?ae(b,null,c,d):hb(b,a.child,c,d)}function mg(a,b,c,d,e){c=c.render;var f=b.ref;ib(b,e);d=Td(a,b,c,d,f,e);if(null!==a&&!ja)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),ma(a,b,e);b.effectTag|=1;N(a,b,d,e);return b.child}function ng(a,b,c,d,e,f){if(null===a){var g=c.type;if("function"===typeof g&&!Md(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,og(a,b,g,d,e,f);a=wc(c.type,null,d,null,b.mode,f);a.ref=
 b.ref;a.return=b;return b.child=a}g=a.child;if(e<f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:vb,c(e,d)&&a.ref===b.ref))return ma(a,b,f);b.effectTag|=1;a=Ga(g,d,f);a.ref=b.ref;a.return=b;return b.child=a}function og(a,b,c,d,e,f){return null!==a&&vb(a.memoizedProps,d)&&a.ref===b.ref&&(ja=!1,e<f)?ma(a,b,f):be(a,b,c,d,f)}function pg(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function be(a,b,c,d,e){var f=E(c)?Fa:F.current;f=Za(b,f);ib(b,e);c=Td(a,b,c,d,f,e);if(null!==
@@ -134,25 +134,25 @@ p;){e=!1;var f=void 0;try{oi()}catch(h){e=!0,f=h}e&&(null===p?n("178"):void 0,Ka
 Lc=!1;"function"===typeof Kd&&Kd(b.stateNode);c=b.expirationTime;b=b.childExpirationTime;b=b>c?b:c;0===b&&(Ba=null);wi(a,b)}function Mg(a){for(;;){var b=a.alternate,c=a.return,d=a.sibling;if(0===(a.effectTag&1024)){x=a;a:{var e=b;b=a;var f=H;var g=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:E(b.type)&&uc(b);break;case 3:$a(b);Jd(b);g=b.stateNode;g.pendingContext&&(g.context=g.pendingContext,g.pendingContext=null);if(null===e||null===e.child)Zd(b),b.effectTag&=
 -3;pe(b);break;case 5:Rd(b);var h=Ha(Fb.current);f=b.type;if(null!==e&&null!=b.stateNode)Ng(e,b,f,g,h),e.ref!==b.ref&&(b.effectTag|=128);else if(g){var l=Ha(U.current);if(Zd(b)){g=b;e=g.stateNode;var k=g.type,m=g.memoizedProps,p=h;e[ea]=g;e[ec]=m;f=void 0;h=k;switch(h){case "iframe":case "object":r("load",e);break;case "video":case "audio":for(k=0;k<zb.length;k++)r(zb[k],e);break;case "source":r("error",e);break;case "img":case "image":case "link":r("error",e);r("load",e);break;case "form":r("reset",
 e);r("submit",e);break;case "details":r("toggle",e);break;case "input":lf(e,m);r("invalid",e);ha(p,"onChange");break;case "select":e._wrapperState={wasMultiple:!!m.multiple};r("invalid",e);ha(p,"onChange");break;case "textarea":If(e,m),r("invalid",e),ha(p,"onChange")}Ed(h,m);k=null;for(f in m)m.hasOwnProperty(f)&&(l=m[f],"children"===f?"string"===typeof l?e.textContent!==l&&(k=["children",l]):"number"===typeof l&&e.textContent!==""+l&&(k=["children",""+l]):Oa.hasOwnProperty(f)&&null!=l&&ha(p,f));
-switch(h){case "input":kc(e);nf(e,m,!0);break;case "textarea":kc(e);f=e.textContent;f===e._wrapperState.initialValue&&(e.value=f);break;case "select":case "option":break;default:"function"===typeof m.onClick&&(e.onclick=tc)}f=k;g.updateQueue=f;g=null!==f?!0:!1;g&&Pb(b)}else{m=b;e=f;p=g;k=9===h.nodeType?h:h.ownerDocument;"http://www.w3.org/1999/xhtml"===l&&(l=Kf(e));"http://www.w3.org/1999/xhtml"===l?"script"===e?(e=k.createElement("div"),e.innerHTML="<script>\x3c/script>",k=e.removeChild(e.firstChild)):
-"string"===typeof p.is?k=k.createElement(e,{is:p.is}):(k=k.createElement(e),"select"===e&&p.multiple&&(k.multiple=!0)):k=k.createElementNS(l,e);e=k;e[ea]=m;e[ec]=g;Og(e,b,!1,!1);m=e;k=f;p=g;var t=h,y=Fd(k,p);switch(k){case "iframe":case "object":r("load",m);h=p;break;case "video":case "audio":for(h=0;h<zb.length;h++)r(zb[h],m);h=p;break;case "source":r("error",m);h=p;break;case "img":case "image":case "link":r("error",m);r("load",m);h=p;break;case "form":r("reset",m);r("submit",m);h=p;break;case "details":r("toggle",
-m);h=p;break;case "input":lf(m,p);h=sd(m,p);r("invalid",m);ha(t,"onChange");break;case "option":h=Bd(m,p);break;case "select":m._wrapperState={wasMultiple:!!p.multiple};h=B({},p,{value:void 0});r("invalid",m);ha(t,"onChange");break;case "textarea":If(m,p);h=Cd(m,p);r("invalid",m);ha(t,"onChange");break;default:h=p}Ed(k,h);l=void 0;var u=k,w=m,v=h;for(l in v)if(v.hasOwnProperty(l)){var q=v[l];"style"===l?Mf(w,q):"dangerouslySetInnerHTML"===l?(q=q?q.__html:void 0,null!=q&&Of(w,q)):"children"===l?"string"===
-typeof q?("textarea"!==u||""!==q)&&Ab(w,q):"number"===typeof q&&Ab(w,""+q):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(Oa.hasOwnProperty(l)?null!=q&&ha(t,l):null!=q&&rd(w,l,q,y))}switch(k){case "input":kc(m);nf(m,p,!1);break;case "textarea":kc(m);h=m.textContent;h===m._wrapperState.initialValue&&(m.value=h);break;case "option":null!=p.value&&m.setAttribute("value",""+ua(p.value));break;case "select":h=m;m=p;h.multiple=!!m.multiple;p=m.value;null!=p?Xa(h,
-!!m.multiple,p,!1):null!=m.defaultValue&&Xa(h,!!m.multiple,m.defaultValue,!0);break;default:"function"===typeof h.onClick&&(m.onclick=tc)}(g=Nf(f,g))&&Pb(b);b.stateNode=e}null!==b.ref&&(b.effectTag|=128)}else null===b.stateNode?n("166"):void 0;break;case 6:e&&null!=b.stateNode?Pg(e,b,e.memoizedProps,g):("string"!==typeof g&&(null===b.stateNode?n("166"):void 0),e=Ha(Fb.current),Ha(U.current),Zd(b)?(g=b,f=g.stateNode,e=g.memoizedProps,f[ea]=g,(g=f.nodeValue!==e)&&Pb(b)):(f=b,g=(9===e.nodeType?e:e.ownerDocument).createTextNode(g),
-g[ea]=b,f.stateNode=g));break;case 11:break;case 13:g=b.memoizedState;if(0!==(b.effectTag&64)){b.expirationTime=f;x=b;break a}g=null!==g;f=null!==e&&null!==e.memoizedState;null!==e&&!g&&f&&(e=e.child.sibling,null!==e&&(h=b.firstEffect,null!==h?(b.firstEffect=e,e.nextEffect=h):(b.firstEffect=b.lastEffect=e,e.nextEffect=null),e.effectTag=8));if(g||f)b.effectTag|=4;break;case 7:break;case 8:break;case 12:break;case 4:$a(b);pe(b);break;case 10:ee(b);break;case 9:break;case 14:break;case 17:E(b.type)&&
-uc(b);break;case 18:break;default:n("156")}x=null}b=a;if(1===H||1!==b.childExpirationTime){g=0;for(f=b.child;null!==f;)e=f.expirationTime,h=f.childExpirationTime,e>g&&(g=e),h>g&&(g=h),f=f.sibling;b.childExpirationTime=g}if(null!==x)return x;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1<a.effectTag&&(null!==c.lastEffect?c.lastEffect.nextEffect=a:c.firstEffect=
-a,c.lastEffect=a))}else{a=mi(a,H);if(null!==a)return a.effectTag&=1023,a;null!==c&&(c.firstEffect=c.lastEffect=null,c.effectTag|=1024)}if(null!==d)return d;if(null!==c)a=c;else break}return null}function Qg(a){var b=hi(a.alternate,a,H);a.memoizedProps=a.pendingProps;null===b&&(b=Mg(a));Kg.current=null;return b}function Rg(a,b){Ca?n("243"):void 0;eb();Ca=!0;var c=qe.current;qe.current=Ud;var d=a.nextExpirationTimeToWorkOn;if(d!==H||a!==Y||null===x)Jg(),Y=a,H=d,x=Ga(Y.current,null,H),a.pendingCommitExpirationTime=
-0;var e=!1;do{try{if(b)for(;null!==x&&!Nc();)x=Qg(x);else for(;null!==x;)x=Qg(x)}catch(v){if(Ob=Ja=Nb=null,Vd(),null===x)e=!0,ie(v);else{null===x?n("271"):void 0;var f=x,g=f.return;if(null===g)e=!0,ie(v);else{a:{var h=a,l=g,k=f,m=v;g=H;k.effectTag|=1024;k.firstEffect=k.lastEffect=null;if(null!==m&&"object"===typeof m&&"function"===typeof m.then){var p=m;m=l;var t=-1,r=-1;do{if(13===m.tag){var u=m.alternate;if(null!==u&&(u=u.memoizedState,null!==u)){r=10*(1073741822-u.timedOutAt);break}u=m.pendingProps.maxDuration;
-if("number"===typeof u)if(0>=u)t=0;else if(-1===t||u<t)t=u}m=m.return}while(null!==m);m=l;do{if(u=13===m.tag)u=void 0===m.memoizedProps.fallback?!1:null===m.memoizedState;if(u){l=m.updateQueue;null===l?(l=new Set,l.add(p),m.updateQueue=l):l.add(p);if(0===(m.mode&1)){m.effectTag|=64;k.effectTag&=-1957;1===k.tag&&(null===k.alternate?k.tag=17:(g=Aa(1073741823),g.tag=Ec,na(k,g)));k.expirationTime=1073741823;break a}k=h;l=g;var w=k.pingCache;null===w?(w=k.pingCache=new xi,u=new Set,w.set(p,u)):(u=w.get(p),
-void 0===u&&(u=new Set,w.set(p,u)));u.has(l)||(u.add(l),k=yi.bind(null,k,p,l),p.then(k,k));-1===t?h=1073741823:(-1===r&&(r=10*(1073741822-Wf(h,g))-5E3),h=r+t);0<=h&&La<h&&(La=h);m.effectTag|=2048;m.expirationTime=g;break a}m=m.return}while(null!==m);m=Error((sa(k.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+qd(k))}je=!0;m=Hc(m,k);h=
-l;do{switch(h.tag){case 3:h.effectTag|=2048;h.expirationTime=g;g=he(h,m,g);vg(h,g);break a;case 1:if(t=m,r=h.type,k=h.stateNode,0===(h.effectTag&64)&&("function"===typeof r.getDerivedStateFromError||null!==k&&"function"===typeof k.componentDidCatch&&(null===Ba||!Ba.has(k)))){h.effectTag|=2048;h.expirationTime=g;g=Ig(h,t,g);vg(h,g);break a}}h=h.return}while(null!==h)}x=Mg(f);continue}}}break}while(1);Ca=!1;qe.current=c;Ob=Ja=Nb=null;Vd();if(e)Y=null,a.finishedWork=null;else if(null!==x)a.finishedWork=
-null;else{c=a.current.alternate;null===c?n("281"):void 0;Y=null;if(je){e=a.latestPendingTime;f=a.latestSuspendedTime;g=a.latestPingedTime;if(0!==e&&e<d||0!==f&&f<d||0!==g&&g<d){Vf(a,d);re(a,c,d,a.expirationTime,-1);return}if(!a.didError&&b){a.didError=!0;d=a.nextExpirationTimeToWorkOn=d;b=a.expirationTime=1073741823;re(a,c,d,b,-1);return}}b&&-1!==La?(Vf(a,d),b=10*(1073741822-Wf(a,d)),b<La&&(La=b),b=10*(1073741822-ka()),b=La-b,re(a,c,d,a.expirationTime,0>b?0:b)):(a.pendingCommitExpirationTime=d,a.finishedWork=
-c)}}function Ka(a,b){for(var c=a.return;null!==c;){switch(c.tag){case 1:var d=c.stateNode;if("function"===typeof c.type.getDerivedStateFromError||"function"===typeof d.componentDidCatch&&(null===Ba||!Ba.has(d))){a=Hc(b,a);a=Ig(c,a,1073741823);na(c,a);ya(c,1073741823);return}break;case 3:a=Hc(b,a);a=he(c,a,1073741823);na(c,a);ya(c,1073741823);return}c=c.return}3===a.tag&&(c=Hc(b,a),c=he(a,c,1073741823),na(a,c),ya(a,1073741823))}function fb(a,b){var c=zi(),d=void 0;if(0===(b.mode&1))d=1073741823;else if(Ca&&
-!Lc)d=H;else{switch(c){case se:d=1073741823;break;case te:d=1073741822-10*(((1073741822-a+15)/10|0)+1);break;case Lg:d=1073741822-25*(((1073741822-a+500)/25|0)+1);break;case Ai:case Bi:d=1;break;default:n("313")}null!==Y&&d===H&&--d}c===te&&(0===oa||d<oa)&&(oa=d);return d}function yi(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);if(null!==Y&&H===c)Y=null;else if(b=a.earliestSuspendedTime,d=a.latestSuspendedTime,0!==b&&c<=b&&c>=d){a.didError=!1;b=a.latestPingedTime;if(0===b||b>c)a.latestPingedTime=
-c;xc(c,a);c=a.expirationTime;0!==c&&Kc(a,c)}}function li(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=ka();b=fb(b,a);a=Sg(a,b);null!==a&&(Bb(a,b),b=a.expirationTime,0!==b&&Kc(a,b))}function Sg(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<b&&(c.childExpirationTime=
-b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}return e}function ya(a,b){a=Sg(a,b);null!==a&&(!Ca&&0!==H&&b>H&&Jg(),Bb(a,b),Ca&&!Lc&&Y===a||Kc(a,a.expirationTime),Tb>Ci&&(Tb=0,n("185")))}function Tg(a,b,c,d,e){return Mc(se,function(){return a(b,c,d,e)})}function Ub(){aa=1073741822-((ue()-ve)/10|0)}function Ug(a,b){if(0!==Oc){if(b<Oc)return;null!==Pc&&Vg(Pc)}Oc=b;a=ue()-ve;Pc=Wg(Di,{timeout:10*(1073741822-b)-a})}function re(a,b,c,d,e){a.expirationTime=d;0!==e||Nc()?0<e&&(a.timeoutHandle=
-Ei(Fi.bind(null,a,b,c),e)):(a.pendingCommitExpirationTime=c,a.finishedWork=b)}function Fi(a,b,c){a.pendingCommitExpirationTime=c;a.finishedWork=b;Ub();jb=aa;Xg(a,c)}function wi(a,b){a.expirationTime=b;a.finishedWork=null}function ka(){if(w)return jb;Qc();if(0===C||1===C)Ub(),jb=aa;return jb}function Kc(a,b){null===a.nextScheduledRoot?(a.expirationTime=b,null===I?(ba=I=a,a.nextScheduledRoot=a):(I=I.nextScheduledRoot=a,I.nextScheduledRoot=ba)):b>a.expirationTime&&(a.expirationTime=b);w||(z?Rc&&(ca=
-a,C=1073741823,Sc(a,1073741823,!1)):1073741823===b?Z(1073741823,!1):Ug(a,b))}function Qc(){var a=0,b=null;if(null!==I)for(var c=I,d=ba;null!==d;){var e=d.expirationTime;if(0===e){null===c||null===I?n("244"):void 0;if(d===d.nextScheduledRoot){ba=I=d.nextScheduledRoot=null;break}else if(d===ba)ba=e=d.nextScheduledRoot,I.nextScheduledRoot=e,d.nextScheduledRoot=null;else if(d===I){I=c;I.nextScheduledRoot=ba;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot,d.nextScheduledRoot=
+switch(h){case "input":kc(e);nf(e,m,!0);break;case "textarea":kc(e);f=e.textContent;f===e._wrapperState.initialValue&&(e.value=f);break;case "select":case "option":break;default:"function"===typeof m.onClick&&(e.onclick=tc)}f=k;g.updateQueue=f;g=null!==f?!0:!1;g&&Pb(b)}else{m=b;p=f;e=g;k=9===h.nodeType?h:h.ownerDocument;"http://www.w3.org/1999/xhtml"===l&&(l=Kf(p));"http://www.w3.org/1999/xhtml"===l?"script"===p?(e=k.createElement("div"),e.innerHTML="<script>\x3c/script>",k=e.removeChild(e.firstChild)):
+"string"===typeof e.is?k=k.createElement(p,{is:e.is}):(k=k.createElement(p),"select"===p&&(p=k,e.multiple?p.multiple=!0:e.size&&(p.size=e.size))):k=k.createElementNS(l,p);e=k;e[ea]=m;e[ec]=g;Og(e,b,!1,!1);m=e;k=f;p=g;var t=h,y=Fd(k,p);switch(k){case "iframe":case "object":r("load",m);h=p;break;case "video":case "audio":for(h=0;h<zb.length;h++)r(zb[h],m);h=p;break;case "source":r("error",m);h=p;break;case "img":case "image":case "link":r("error",m);r("load",m);h=p;break;case "form":r("reset",m);r("submit",
+m);h=p;break;case "details":r("toggle",m);h=p;break;case "input":lf(m,p);h=sd(m,p);r("invalid",m);ha(t,"onChange");break;case "option":h=Bd(m,p);break;case "select":m._wrapperState={wasMultiple:!!p.multiple};h=B({},p,{value:void 0});r("invalid",m);ha(t,"onChange");break;case "textarea":If(m,p);h=Cd(m,p);r("invalid",m);ha(t,"onChange");break;default:h=p}Ed(k,h);l=void 0;var u=k,w=m,v=h;for(l in v)if(v.hasOwnProperty(l)){var q=v[l];"style"===l?Mf(w,q):"dangerouslySetInnerHTML"===l?(q=q?q.__html:void 0,
+null!=q&&Of(w,q)):"children"===l?"string"===typeof q?("textarea"!==u||""!==q)&&Ab(w,q):"number"===typeof q&&Ab(w,""+q):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(Oa.hasOwnProperty(l)?null!=q&&ha(t,l):null!=q&&rd(w,l,q,y))}switch(k){case "input":kc(m);nf(m,p,!1);break;case "textarea":kc(m);h=m.textContent;h===m._wrapperState.initialValue&&(m.value=h);break;case "option":null!=p.value&&m.setAttribute("value",""+ua(p.value));break;case "select":h=m;m=p;h.multiple=
+!!m.multiple;p=m.value;null!=p?Xa(h,!!m.multiple,p,!1):null!=m.defaultValue&&Xa(h,!!m.multiple,m.defaultValue,!0);break;default:"function"===typeof h.onClick&&(m.onclick=tc)}(g=Nf(f,g))&&Pb(b);b.stateNode=e}null!==b.ref&&(b.effectTag|=128)}else null===b.stateNode?n("166"):void 0;break;case 6:e&&null!=b.stateNode?Pg(e,b,e.memoizedProps,g):("string"!==typeof g&&(null===b.stateNode?n("166"):void 0),e=Ha(Fb.current),Ha(U.current),Zd(b)?(g=b,f=g.stateNode,e=g.memoizedProps,f[ea]=g,(g=f.nodeValue!==e)&&
+Pb(b)):(f=b,g=(9===e.nodeType?e:e.ownerDocument).createTextNode(g),g[ea]=b,f.stateNode=g));break;case 11:break;case 13:g=b.memoizedState;if(0!==(b.effectTag&64)){b.expirationTime=f;x=b;break a}g=null!==g;f=null!==e&&null!==e.memoizedState;null!==e&&!g&&f&&(e=e.child.sibling,null!==e&&(h=b.firstEffect,null!==h?(b.firstEffect=e,e.nextEffect=h):(b.firstEffect=b.lastEffect=e,e.nextEffect=null),e.effectTag=8));if(g||f)b.effectTag|=4;break;case 7:break;case 8:break;case 12:break;case 4:$a(b);pe(b);break;
+case 10:ee(b);break;case 9:break;case 14:break;case 17:E(b.type)&&uc(b);break;case 18:break;default:n("156")}x=null}b=a;if(1===H||1!==b.childExpirationTime){g=0;for(f=b.child;null!==f;)e=f.expirationTime,h=f.childExpirationTime,e>g&&(g=e),h>g&&(g=h),f=f.sibling;b.childExpirationTime=g}if(null!==x)return x;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),
+1<a.effectTag&&(null!==c.lastEffect?c.lastEffect.nextEffect=a:c.firstEffect=a,c.lastEffect=a))}else{a=mi(a,H);if(null!==a)return a.effectTag&=1023,a;null!==c&&(c.firstEffect=c.lastEffect=null,c.effectTag|=1024)}if(null!==d)return d;if(null!==c)a=c;else break}return null}function Qg(a){var b=hi(a.alternate,a,H);a.memoizedProps=a.pendingProps;null===b&&(b=Mg(a));Kg.current=null;return b}function Rg(a,b){Ca?n("243"):void 0;eb();Ca=!0;var c=qe.current;qe.current=Ud;var d=a.nextExpirationTimeToWorkOn;
+if(d!==H||a!==Y||null===x)Jg(),Y=a,H=d,x=Ga(Y.current,null,H),a.pendingCommitExpirationTime=0;var e=!1;do{try{if(b)for(;null!==x&&!Nc();)x=Qg(x);else for(;null!==x;)x=Qg(x)}catch(v){if(Ob=Ja=Nb=null,Vd(),null===x)e=!0,ie(v);else{null===x?n("271"):void 0;var f=x,g=f.return;if(null===g)e=!0,ie(v);else{a:{var h=a,l=g,k=f,m=v;g=H;k.effectTag|=1024;k.firstEffect=k.lastEffect=null;if(null!==m&&"object"===typeof m&&"function"===typeof m.then){var p=m;m=l;var t=-1,r=-1;do{if(13===m.tag){var u=m.alternate;
+if(null!==u&&(u=u.memoizedState,null!==u)){r=10*(1073741822-u.timedOutAt);break}u=m.pendingProps.maxDuration;if("number"===typeof u)if(0>=u)t=0;else if(-1===t||u<t)t=u}m=m.return}while(null!==m);m=l;do{if(u=13===m.tag)u=void 0===m.memoizedProps.fallback?!1:null===m.memoizedState;if(u){l=m.updateQueue;null===l?(l=new Set,l.add(p),m.updateQueue=l):l.add(p);if(0===(m.mode&1)){m.effectTag|=64;k.effectTag&=-1957;1===k.tag&&(null===k.alternate?k.tag=17:(g=Aa(1073741823),g.tag=Ec,na(k,g)));k.expirationTime=
+1073741823;break a}k=h;l=g;var w=k.pingCache;null===w?(w=k.pingCache=new xi,u=new Set,w.set(p,u)):(u=w.get(p),void 0===u&&(u=new Set,w.set(p,u)));u.has(l)||(u.add(l),k=yi.bind(null,k,p,l),p.then(k,k));-1===t?h=1073741823:(-1===r&&(r=10*(1073741822-Wf(h,g))-5E3),h=r+t);0<=h&&La<h&&(La=h);m.effectTag|=2048;m.expirationTime=g;break a}m=m.return}while(null!==m);m=Error((sa(k.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display."+
+qd(k))}je=!0;m=Hc(m,k);h=l;do{switch(h.tag){case 3:h.effectTag|=2048;h.expirationTime=g;g=he(h,m,g);vg(h,g);break a;case 1:if(t=m,r=h.type,k=h.stateNode,0===(h.effectTag&64)&&("function"===typeof r.getDerivedStateFromError||null!==k&&"function"===typeof k.componentDidCatch&&(null===Ba||!Ba.has(k)))){h.effectTag|=2048;h.expirationTime=g;g=Ig(h,t,g);vg(h,g);break a}}h=h.return}while(null!==h)}x=Mg(f);continue}}}break}while(1);Ca=!1;qe.current=c;Ob=Ja=Nb=null;Vd();if(e)Y=null,a.finishedWork=null;else if(null!==
+x)a.finishedWork=null;else{c=a.current.alternate;null===c?n("281"):void 0;Y=null;if(je){e=a.latestPendingTime;f=a.latestSuspendedTime;g=a.latestPingedTime;if(0!==e&&e<d||0!==f&&f<d||0!==g&&g<d){Vf(a,d);re(a,c,d,a.expirationTime,-1);return}if(!a.didError&&b){a.didError=!0;d=a.nextExpirationTimeToWorkOn=d;b=a.expirationTime=1073741823;re(a,c,d,b,-1);return}}b&&-1!==La?(Vf(a,d),b=10*(1073741822-Wf(a,d)),b<La&&(La=b),b=10*(1073741822-ka()),b=La-b,re(a,c,d,a.expirationTime,0>b?0:b)):(a.pendingCommitExpirationTime=
+d,a.finishedWork=c)}}function Ka(a,b){for(var c=a.return;null!==c;){switch(c.tag){case 1:var d=c.stateNode;if("function"===typeof c.type.getDerivedStateFromError||"function"===typeof d.componentDidCatch&&(null===Ba||!Ba.has(d))){a=Hc(b,a);a=Ig(c,a,1073741823);na(c,a);ya(c,1073741823);return}break;case 3:a=Hc(b,a);a=he(c,a,1073741823);na(c,a);ya(c,1073741823);return}c=c.return}3===a.tag&&(c=Hc(b,a),c=he(a,c,1073741823),na(a,c),ya(a,1073741823))}function fb(a,b){var c=zi(),d=void 0;if(0===(b.mode&1))d=
+1073741823;else if(Ca&&!Lc)d=H;else{switch(c){case se:d=1073741823;break;case te:d=1073741822-10*(((1073741822-a+15)/10|0)+1);break;case Lg:d=1073741822-25*(((1073741822-a+500)/25|0)+1);break;case Ai:case Bi:d=1;break;default:n("313")}null!==Y&&d===H&&--d}c===te&&(0===oa||d<oa)&&(oa=d);return d}function yi(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);if(null!==Y&&H===c)Y=null;else if(b=a.earliestSuspendedTime,d=a.latestSuspendedTime,0!==b&&c<=b&&c>=d){a.didError=!1;b=a.latestPingedTime;if(0===b||
+b>c)a.latestPingedTime=c;xc(c,a);c=a.expirationTime;0!==c&&Kc(a,c)}}function li(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=ka();b=fb(b,a);a=Sg(a,b);null!==a&&(Bb(a,b),b=a.expirationTime,0!==b&&Kc(a,b))}function Sg(a,b){a.expirationTime<b&&(a.expirationTime=b);var c=a.alternate;null!==c&&c.expirationTime<b&&(c.expirationTime=b);var d=a.return,e=null;if(null===d&&3===a.tag)e=a.stateNode;else for(;null!==d;){c=d.alternate;d.childExpirationTime<b&&(d.childExpirationTime=b);null!==c&&c.childExpirationTime<
+b&&(c.childExpirationTime=b);if(null===d.return&&3===d.tag){e=d.stateNode;break}d=d.return}return e}function ya(a,b){a=Sg(a,b);null!==a&&(!Ca&&0!==H&&b>H&&Jg(),Bb(a,b),Ca&&!Lc&&Y===a||Kc(a,a.expirationTime),Tb>Ci&&(Tb=0,n("185")))}function Tg(a,b,c,d,e){return Mc(se,function(){return a(b,c,d,e)})}function Ub(){aa=1073741822-((ue()-ve)/10|0)}function Ug(a,b){if(0!==Oc){if(b<Oc)return;null!==Pc&&Vg(Pc)}Oc=b;a=ue()-ve;Pc=Wg(Di,{timeout:10*(1073741822-b)-a})}function re(a,b,c,d,e){a.expirationTime=d;
+0!==e||Nc()?0<e&&(a.timeoutHandle=Ei(Fi.bind(null,a,b,c),e)):(a.pendingCommitExpirationTime=c,a.finishedWork=b)}function Fi(a,b,c){a.pendingCommitExpirationTime=c;a.finishedWork=b;Ub();jb=aa;Xg(a,c)}function wi(a,b){a.expirationTime=b;a.finishedWork=null}function ka(){if(w)return jb;Qc();if(0===C||1===C)Ub(),jb=aa;return jb}function Kc(a,b){null===a.nextScheduledRoot?(a.expirationTime=b,null===I?(ba=I=a,a.nextScheduledRoot=a):(I=I.nextScheduledRoot=a,I.nextScheduledRoot=ba)):b>a.expirationTime&&(a.expirationTime=
+b);w||(z?Rc&&(ca=a,C=1073741823,Sc(a,1073741823,!1)):1073741823===b?Z(1073741823,!1):Ug(a,b))}function Qc(){var a=0,b=null;if(null!==I)for(var c=I,d=ba;null!==d;){var e=d.expirationTime;if(0===e){null===c||null===I?n("244"):void 0;if(d===d.nextScheduledRoot){ba=I=d.nextScheduledRoot=null;break}else if(d===ba)ba=e=d.nextScheduledRoot,I.nextScheduledRoot=e,d.nextScheduledRoot=null;else if(d===I){I=c;I.nextScheduledRoot=ba;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot,d.nextScheduledRoot=
 null;d=c.nextScheduledRoot}else{e>a&&(a=e,b=d);if(d===I)break;if(1073741823===a)break;c=d;d=d.nextScheduledRoot}}ca=b;C=a}function Nc(){return Tc?!0:Gi()?Tc=!0:!1}function Di(){try{if(!Nc()&&null!==ba){Ub();var a=ba;do{var b=a.expirationTime;0!==b&&aa<=b&&(a.nextExpirationTimeToWorkOn=aa);a=a.nextScheduledRoot}while(a!==ba)}Z(0,!0)}finally{Tc=!1}}function Z(a,b){Qc();if(b)for(Ub(),jb=aa;null!==ca&&0!==C&&a<=C&&!(Tc&&aa>C);)Sc(ca,C,aa>C),Qc(),Ub(),jb=aa;else for(;null!==ca&&0!==C&&a<=C;)Sc(ca,C,!1),
 Qc();b&&(Oc=0,Pc=null);0!==C&&Ug(ca,C);Tb=0;we=null;if(null!==kb)for(a=kb,kb=null,b=0;b<a.length;b++){var c=a[b];try{c._onComplete()}catch(d){lb||(lb=!0,Uc=d)}}if(lb)throw a=Uc,Uc=null,lb=!1,a;}function Xg(a,b){w?n("253"):void 0;ca=a;C=b;Sc(a,b,!1);Z(1073741823,!1)}function Sc(a,b,c){w?n("245"):void 0;w=!0;if(c){var d=a.finishedWork;null!==d?Vc(a,d,b):(a.finishedWork=null,d=a.timeoutHandle,-1!==d&&(a.timeoutHandle=-1,Yg(d)),Rg(a,c),d=a.finishedWork,null!==d&&(Nc()?a.finishedWork=d:Vc(a,d,b)))}else d=
 a.finishedWork,null!==d?Vc(a,d,b):(a.finishedWork=null,d=a.timeoutHandle,-1!==d&&(a.timeoutHandle=-1,Yg(d)),Rg(a,c),d=a.finishedWork,null!==d&&Vc(a,d,b));w=!1}function Vc(a,b,c){var d=a.firstBatch;if(null!==d&&d._expirationTime>=c&&(null===kb?kb=[d]:kb.push(d),d._defer)){a.finishedWork=b;a.expirationTime=0;return}a.finishedWork=null;a===we?Tb++:(we=a,Tb=0);Mc(se,function(){ui(a,b)})}function ie(a){null===ca?n("246"):void 0;ca.expirationTime=0;lb||(lb=!0,Uc=a)}function Zg(a,b){var c=z;z=!0;try{return a(b)}finally{(z=
@@ -202,19 +202,19 @@ source:!0,track:!0,wbr:!0}),R=da.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FI
 clearTimeout:void 0,vi=Wg,ti=Vg;new Set;var Id=[],Ya=-1,va={},F={current:va},M={current:!1},Fa=va,Kd=null,Ld=null,S=function(a,b,c,d){return new bi(a,b,c,d)},$f=(new da.Component).refs,zc={isMounted:function(a){return(a=a._reactInternalFiber)?2===wb(a):!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=ka();d=fb(d,a);var e=Aa(d);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);eb();na(a,e);ya(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=ka();d=fb(d,a);var e=
 Aa(d);e.tag=yg;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);eb();na(a,e);ya(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=ka();c=fb(c,a);var d=Aa(c);d.tag=Ec;void 0!==b&&null!==b&&(d.callback=b);eb();na(a,d);ya(a,c)}},Cc=Array.isArray,hb=ag(!0),ae=ag(!1),Eb={},U={current:Eb},Gb={current:Eb},Fb={current:Eb},db=0,pi=2,Rb=4,ji=8,ri=16,Sb=32,me=64,le=128,Dc=Ma.ReactCurrentDispatcher,Hb=0,xa=null,y=null,W=null,bb=null,G=null,ab=null,Kb=0,X=null,Lb=0,Ib=!1,ia=null,Jb=0,Ud={readContext:T,
 useCallback:V,useContext:V,useEffect:V,useImperativeHandle:V,useLayoutEffect:V,useMemo:V,useReducer:V,useRef:V,useState:V,useDebugValue:V},fi={readContext:T,useCallback:function(a,b){cb().memoizedState=[a,void 0===b?null:b];return a},useContext:T,useEffect:function(a,b){return Xd(516,le|me,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Xd(4,Rb|Sb,fg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Xd(4,Rb|Sb,a,b)},useMemo:function(a,b){var c=cb();
-b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=cb();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,eagerReducer:a,eagerState:b};a=a.dispatch=hg.bind(null,xa,a);return[d.memoizedState,a]},useRef:function(a){var b=cb();a={current:a};return b.memoizedState=a},useState:function(a){var b=cb();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,eagerReducer:dg,eagerState:a};a=a.dispatch=
-hg.bind(null,xa,a);return[b.memoizedState,a]},useDebugValue:gg},cg={readContext:T,useCallback:function(a,b){var c=Mb();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Sd(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:T,useEffect:function(a,b){return Yd(516,le|me,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Yd(4,Rb|Sb,fg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Yd(4,Rb|Sb,a,b)},useMemo:function(a,b){var c=
-Mb();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Sd(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:eg,useRef:function(a){return Mb().memoizedState},useState:function(a){return eg(dg,a)},useDebugValue:gg},la=null,gb=null,Ia=!1,gi=Ma.ReactCurrentOwner,ja=!1,de={current:null},Nb=null,Ja=null,Ob=null,ug=0,yg=1,Ec=2,ge=3,za=!1,Og=void 0,pe=void 0,Ng=void 0,Pg=void 0;Og=function(a,b,c,d){for(c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);
-else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};pe=function(a){};Ng=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;Ha(U.current);a=null;switch(c){case "input":f=sd(g,f);d=sd(g,d);a=[];break;case "option":f=Bd(g,f);d=Bd(g,d);a=[];break;case "select":f=B({},f,{value:void 0});d=B({},d,{value:void 0});a=[];break;case "textarea":f=
-Cd(g,f);d=Cd(g,d);a=[];break;default:"function"!==typeof f.onClick&&"function"===typeof d.onClick&&(g.onclick=tc)}Ed(c,d);g=c=void 0;var h=null;for(c in f)if(!d.hasOwnProperty(c)&&f.hasOwnProperty(c)&&null!=f[c])if("style"===c){var l=f[c];for(g in l)l.hasOwnProperty(g)&&(h||(h={}),h[g]="")}else"dangerouslySetInnerHTML"!==c&&"children"!==c&&"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(Oa.hasOwnProperty(c)?a||(a=[]):(a=a||[]).push(c,null));for(c in d){var k=
-d[c];l=null!=f?f[c]:void 0;if(d.hasOwnProperty(c)&&k!==l&&(null!=k||null!=l))if("style"===c)if(l){for(g in l)!l.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(h||(h={}),h[g]="");for(g in k)k.hasOwnProperty(g)&&l[g]!==k[g]&&(h||(h={}),h[g]=k[g])}else h||(a||(a=[]),a.push(c,h)),h=k;else"dangerouslySetInnerHTML"===c?(k=k?k.__html:void 0,l=l?l.__html:void 0,null!=k&&l!==k&&(a=a||[]).push(c,""+k)):"children"===c?l===k||"string"!==typeof k&&"number"!==typeof k||(a=a||[]).push(c,""+k):"suppressContentEditableWarning"!==
-c&&"suppressHydrationWarning"!==c&&(Oa.hasOwnProperty(c)?(null!=k&&ha(e,c),a||l===k||(a=[])):(a=a||[]).push(c,k))}h&&(a=a||[]).push("style",h);e=a;(b.updateQueue=e)&&Pb(b)}};Pg=function(a,b,c,d){c!==d&&Pb(b)};var ki="function"===typeof WeakSet?WeakSet:Set,xi="function"===typeof WeakMap?WeakMap:Map,qe=Ma.ReactCurrentDispatcher,Kg=Ma.ReactCurrentOwner,ze=1073741822,Ca=!1,x=null,Y=null,H=0,La=-1,je=!1,p=null,Lc=!1,ke=null,Jc=null,Ic=null,Ba=null,ba=null,I=null,Oc=0,Pc=void 0,w=!1,ca=null,C=0,oa=0,lb=
-!1,Uc=null,z=!1,Rc=!1,kb=null,ve=ue(),aa=1073741822-(ve/10|0),jb=aa,Ci=50,Tb=0,we=null,Tc=!1;id=function(a,b,c){switch(b){case "input":td(a,c);b=c.name;if("radio"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll("input[name="+JSON.stringify(""+b)+'][type="radio"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=dd(d);e?void 0:n("90");cf(d);td(d,e)}}}break;case "textarea":Jf(a,c);break;case "select":b=c.value,null!=b&&Xa(a,!!c.multiple,b,!1)}};Vb.prototype.render=
-function(a){this._defer?void 0:n("250");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new mb;bh(a,b,null,c,d._onCommit);return d};Vb.prototype.then=function(a){if(this._didComplete)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};Vb.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:n("251");if(this._hasChildren){var c=this._expirationTime;if(b!==this){this._hasChildren&&
-(c=this._expirationTime=b._expirationTime,this.render(this._children));for(var d=null,e=b;e!==this;)d=e,e=e._next;null===d?n("251"):void 0;d._next=e._next;this._next=b;a.firstBatch=this}this._defer=!1;Xg(a,c);b=this._next;this._next=null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children)}else this._next=null,this._defer=!1};Vb.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++)(0,a[b])()}};mb.prototype.then=
-function(a){if(this._didCommit)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};mb.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++){var c=a[b];"function"!==typeof c?n("191",c):void 0;c()}}};nb.prototype.render=function(a,b){var c=this._internalRoot,d=new mb;b=void 0===b?null:b;null!==b&&d.then(b);xe(a,c,null,d._onCommit);return d};nb.prototype.unmount=function(a){var b=this._internalRoot,
-c=new mb;a=void 0===a?null:a;null!==a&&c.then(a);xe(null,b,null,c._onCommit);return c};nb.prototype.legacy_renderSubtreeIntoContainer=function(a,b,c){var d=this._internalRoot,e=new mb;c=void 0===c?null:c;null!==c&&e.then(c);xe(b,d,a,e._onCommit);return e};nb.prototype.createBatch=function(){var a=new Vb(this),b=a._expirationTime,c=this._internalRoot,d=c.firstBatch;if(null===d)c.firstBatch=a,a._next=null;else{for(c=null;null!==d&&d._expirationTime>=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};
-(function(a,b,c){Ye=a;yf=b;Ze=c})(Zg,ah,function(){w||0===oa||(Z(oa,!1),oa=0)});var oh={createPortal:ch,findDOMNode:function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;void 0===b&&("function"===typeof a.render?n("188"):n("268",Object.keys(a)));a=tf(b);a=null===a?null:a.stateNode;return a},hydrate:function(a,b,c){ob(b)?void 0:n("200");return Wc(null,a,b,!0,c)},render:function(a,b,c){ob(b)?void 0:n("200");return Wc(null,a,b,!1,c)},unstable_renderSubtreeIntoContainer:function(a,
+b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=cb();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=hg.bind(null,xa,a);return[d.memoizedState,a]},useRef:function(a){var b=cb();a={current:a};return b.memoizedState=a},useState:function(a){var b=cb();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,lastRenderedReducer:dg,
+lastRenderedState:a};a=a.dispatch=hg.bind(null,xa,a);return[b.memoizedState,a]},useDebugValue:gg},cg={readContext:T,useCallback:function(a,b){var c=Mb();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Sd(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:T,useEffect:function(a,b){return Yd(516,le|me,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Yd(4,Rb|Sb,fg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Yd(4,Rb|Sb,
+a,b)},useMemo:function(a,b){var c=Mb();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Sd(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:eg,useRef:function(a){return Mb().memoizedState},useState:function(a){return eg(dg,a)},useDebugValue:gg},la=null,gb=null,Ia=!1,gi=Ma.ReactCurrentOwner,ja=!1,de={current:null},Nb=null,Ja=null,Ob=null,ug=0,yg=1,Ec=2,ge=3,za=!1,Og=void 0,pe=void 0,Ng=void 0,Pg=void 0;Og=function(a,b,c,d){for(c=b.child;null!==c;){if(5===c.tag||
+6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};pe=function(a){};Ng=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;Ha(U.current);a=null;switch(c){case "input":f=sd(g,f);d=sd(g,d);a=[];break;case "option":f=Bd(g,f);d=Bd(g,d);a=[];break;case "select":f=B({},f,{value:void 0});d=B({},d,{value:void 0});
+a=[];break;case "textarea":f=Cd(g,f);d=Cd(g,d);a=[];break;default:"function"!==typeof f.onClick&&"function"===typeof d.onClick&&(g.onclick=tc)}Ed(c,d);g=c=void 0;var h=null;for(c in f)if(!d.hasOwnProperty(c)&&f.hasOwnProperty(c)&&null!=f[c])if("style"===c){var l=f[c];for(g in l)l.hasOwnProperty(g)&&(h||(h={}),h[g]="")}else"dangerouslySetInnerHTML"!==c&&"children"!==c&&"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(Oa.hasOwnProperty(c)?a||(a=[]):(a=a||[]).push(c,
+null));for(c in d){var k=d[c];l=null!=f?f[c]:void 0;if(d.hasOwnProperty(c)&&k!==l&&(null!=k||null!=l))if("style"===c)if(l){for(g in l)!l.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(h||(h={}),h[g]="");for(g in k)k.hasOwnProperty(g)&&l[g]!==k[g]&&(h||(h={}),h[g]=k[g])}else h||(a||(a=[]),a.push(c,h)),h=k;else"dangerouslySetInnerHTML"===c?(k=k?k.__html:void 0,l=l?l.__html:void 0,null!=k&&l!==k&&(a=a||[]).push(c,""+k)):"children"===c?l===k||"string"!==typeof k&&"number"!==typeof k||(a=a||[]).push(c,""+
+k):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&(Oa.hasOwnProperty(c)?(null!=k&&ha(e,c),a||l===k||(a=[])):(a=a||[]).push(c,k))}h&&(a=a||[]).push("style",h);e=a;(b.updateQueue=e)&&Pb(b)}};Pg=function(a,b,c,d){c!==d&&Pb(b)};var ki="function"===typeof WeakSet?WeakSet:Set,xi="function"===typeof WeakMap?WeakMap:Map,qe=Ma.ReactCurrentDispatcher,Kg=Ma.ReactCurrentOwner,ze=1073741822,Ca=!1,x=null,Y=null,H=0,La=-1,je=!1,p=null,Lc=!1,ke=null,Jc=null,Ic=null,Ba=null,ba=null,I=null,Oc=
+0,Pc=void 0,w=!1,ca=null,C=0,oa=0,lb=!1,Uc=null,z=!1,Rc=!1,kb=null,ve=ue(),aa=1073741822-(ve/10|0),jb=aa,Ci=50,Tb=0,we=null,Tc=!1;id=function(a,b,c){switch(b){case "input":td(a,c);b=c.name;if("radio"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll("input[name="+JSON.stringify(""+b)+'][type="radio"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=dd(d);e?void 0:n("90");cf(d);td(d,e)}}}break;case "textarea":Jf(a,c);break;case "select":b=c.value,null!=
+b&&Xa(a,!!c.multiple,b,!1)}};Vb.prototype.render=function(a){this._defer?void 0:n("250");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new mb;bh(a,b,null,c,d._onCommit);return d};Vb.prototype.then=function(a){if(this._didComplete)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};Vb.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:n("251");if(this._hasChildren){var c=this._expirationTime;
+if(b!==this){this._hasChildren&&(c=this._expirationTime=b._expirationTime,this.render(this._children));for(var d=null,e=b;e!==this;)d=e,e=e._next;null===d?n("251"):void 0;d._next=e._next;this._next=b;a.firstBatch=this}this._defer=!1;Xg(a,c);b=this._next;this._next=null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children)}else this._next=null,this._defer=!1};Vb.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++)(0,a[b])()}};
+mb.prototype.then=function(a){if(this._didCommit)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};mb.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++){var c=a[b];"function"!==typeof c?n("191",c):void 0;c()}}};nb.prototype.render=function(a,b){var c=this._internalRoot,d=new mb;b=void 0===b?null:b;null!==b&&d.then(b);xe(a,c,null,d._onCommit);return d};nb.prototype.unmount=function(a){var b=
+this._internalRoot,c=new mb;a=void 0===a?null:a;null!==a&&c.then(a);xe(null,b,null,c._onCommit);return c};nb.prototype.legacy_renderSubtreeIntoContainer=function(a,b,c){var d=this._internalRoot,e=new mb;c=void 0===c?null:c;null!==c&&e.then(c);xe(b,d,a,e._onCommit);return e};nb.prototype.createBatch=function(){var a=new Vb(this),b=a._expirationTime,c=this._internalRoot,d=c.firstBatch;if(null===d)c.firstBatch=a,a._next=null;else{for(c=null;null!==d&&d._expirationTime>=b;)c=d,d=d._next;a._next=d;null!==
+c&&(c._next=a)}return a};(function(a,b,c){Ye=a;yf=b;Ze=c})(Zg,ah,function(){w||0===oa||(Z(oa,!1),oa=0)});var oh={createPortal:ch,findDOMNode:function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;void 0===b&&("function"===typeof a.render?n("188"):n("268",Object.keys(a)));a=tf(b);a=null===a?null:a.stateNode;return a},hydrate:function(a,b,c){ob(b)?void 0:n("200");return Wc(null,a,b,!0,c)},render:function(a,b,c){ob(b)?void 0:n("200");return Wc(null,a,b,!1,c)},unstable_renderSubtreeIntoContainer:function(a,
 b,c,d){ob(c)?void 0:n("200");null==a||void 0===a._reactInternalFiber?n("38"):void 0;return Wc(a,b,c,!1,d)},unmountComponentAtNode:function(a){ob(a)?void 0:n("40");return a._reactRootContainer?($g(function(){Wc(null,null,a,!1,function(){a._reactRootContainer=null})}),!0):!1},unstable_createPortal:function(){return ch.apply(void 0,arguments)},unstable_batchedUpdates:Zg,unstable_interactiveUpdates:ah,flushSync:function(a,b){w?n("187"):void 0;var c=z;z=!0;try{return Tg(a,b)}finally{z=c,Z(1073741823,!1)}},
 unstable_createRoot:function(a,b){ob(a)?void 0:n("299","unstable_createRoot");return new nb(a,!0,null!=b&&!0===b.hydrate)},unstable_flushControlled:function(a){var b=z;z=!0;try{Tg(a)}finally{(z=b)||w||Z(1073741823,!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[Je,Da,dd,Ae.injectEventPluginsByName,Zc,Qa,function(a){ad(a,xh)},Ve,We,oc,cd]}};(function(a){var b=a.findFiberByHostInstance;return ai(B({},a,{overrideProps:null,currentDispatcherRef:Ma.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=
-tf(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:dc,bundleType:0,version:"16.8.3",rendererPackageName:"react-dom"});var ph={default:oh},qh=ph&&oh||ph;return qh.default||qh});
+tf(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:dc,bundleType:0,version:"16.8.6",rendererPackageName:"react-dom"});var ph={default:oh},qh=ph&&oh||ph;return qh.default||qh});
diff --git a/node_modules/react-dom/umd/react-dom.profiling.min.js b/node_modules/react-dom/umd/react-dom.profiling.min.js
index 6b1632f9..941f1dd9 100644
--- a/node_modules/react-dom/umd/react-dom.profiling.min.js
+++ b/node_modules/react-dom/umd/react-dom.profiling.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react-dom.profiling.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -39,16 +39,16 @@ for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.re
 break}var d;for(d=c;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo;if(!d)break;a.ancestors.push(c);c=hc(d)}while(c);for(c=0;c<a.ancestors.length;c++){b=a.ancestors[c];var e=pd(a.nativeEvent);d=a.topLevelType;for(var f=a.nativeEvent,g=null,h=0;h<gc.length;h++){var k=gc[h];k&&(k=k.extractEvents(d,b,f,e))&&(g=Ta(g,k))}hd(g)}}function t(a,b){if(!b)return null;var c=(Cf(a)?Df:sc).bind(null,a);b.addEventListener(a,c,!1)}function tc(a,b){if(!b)return null;var c=(Cf(a)?Df:sc).bind(null,a);
 b.addEventListener(a,c,!0)}function Df(a,b){Ef(sc,a,b)}function sc(a,b){if(uc){var c=pd(b);c=hc(c);null===c||"number"!==typeof c.tag||2===Ab(c)||(c=null);if(vc.length){var d=vc.pop();d.topLevelType=a;d.nativeEvent=b;d.targetInst=c;a=d}else a={topLevelType:a,nativeEvent:b,targetInst:c,ancestors:[]};try{cf($h,a)}finally{a.topLevelType=null,a.nativeEvent=null,a.targetInst=null,a.ancestors.length=0,10>vc.length&&vc.push(a)}}}function Ff(a){Object.prototype.hasOwnProperty.call(a,wc)||(a[wc]=ai++,Gf[a[wc]]=
 {});return Gf[a[wc]]}function Cd(a){a=a||("undefined"!==typeof document?document:void 0);if("undefined"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Hf(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function If(a,b){var c=Hf(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Hf(c)}}function Jf(a,b){return a&&b?a===
-b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Jf(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function Kf(){for(var a=window,b=Cd();b instanceof a.HTMLIFrameElement;){try{a=b.contentDocument.defaultView}catch(c){break}b=Cd(a.document)}return b}function Dd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||"url"===a.type||"password"===a.type)||"textarea"===b||
-"true"===a.contentEditable)}function bi(){var a=Kf();if(Dd(a)){if("selectionStart"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(oj){b=null;break a}var f=0,g=-1,h=-1,k=0,l=0,m=a,n=null;b:for(;;){for(var p;;){m!==b||0!==d&&3!==m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=
-f+c);3===m.nodeType&&(f+=m.nodeValue.length);if(null===(p=m.firstChild))break;n=m;m=p}for(;;){if(m===a)break b;n===b&&++k===d&&(g=f);n===e&&++l===c&&(h=f);if(null!==(p=m.nextSibling))break;m=n;n=m.parentNode}m=p}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}function ci(a){var b=Kf(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Jf(c.ownerDocument.documentElement,c)){if(null!==d&&Dd(c))if(b=d.start,a=d.end,
-void 0===a&&(a=b),"selectionStart"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=If(c,f);var g=If(c,d);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),
-a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});"function"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}function Lf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(Ed||null==ab||ab!==Cd(c))return null;c=ab;"selectionStart"in c&&Dd(c)?c={start:c.selectionStart,
-end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return Bb&&zb(Bb,c)?null:(Bb=c,a=H.getPooled(Mf.select,Fd,a,b),a.type="select",a.target=ab,Ua(a),a)}function di(a){var b="";R.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Gd(a,b){a=z({children:void 0},b);if(b=di(b.children))a.children=b;return a}function bb(a,b,c,d){a=a.options;if(b){b=
-{};for(var e=0;e<c.length;e++)b["$"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty("$"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=""+wa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}function Hd(a,b){null!=b.dangerouslySetInnerHTML?n("91"):void 0;return z({},b,{value:void 0,defaultValue:void 0,children:""+a._wrapperState.initialValue})}
-function Nf(a,b){var c=b.value;null==c&&(c=b.defaultValue,b=b.children,null!=b&&(null!=c?n("92"):void 0,Array.isArray(b)&&(1>=b.length?void 0:n("93"),b=b[0]),c=b),null==c&&(c=""));a._wrapperState={initialValue:wa(c)}}function Of(a,b){var c=wa(b.value),d=wa(b.defaultValue);null!=c&&(c=""+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=""+d)}function Pf(a){switch(a){case "svg":return"http://www.w3.org/2000/svg";case "math":return"http://www.w3.org/1998/Math/MathML";
-default:return"http://www.w3.org/1999/xhtml"}}function Id(a,b){return null==a||"http://www.w3.org/1999/xhtml"===a?Pf(b):"http://www.w3.org/2000/svg"===a&&"foreignObject"===b?"http://www.w3.org/1999/xhtml":a}function Qf(a,b,c){return null==b||"boolean"===typeof b||""===b?"":c||"number"!==typeof b||0===b||Cb.hasOwnProperty(a)&&Cb[a]?(""+b).trim():b+"px"}function Rf(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf("--"),e=Qf(c,b[c],d);"float"===c&&(c="cssFloat");d?a.setProperty(c,
-e):a[c]=e}}function Jd(a,b){b&&(ei[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?n("137",a,""):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?n("60"):void 0,"object"===typeof b.dangerouslySetInnerHTML&&"__html"in b.dangerouslySetInnerHTML?void 0:n("61")),null!=b.style&&"object"!==typeof b.style?n("62",""):void 0)}function Kd(a,b){if(-1===a.indexOf("-"))return"string"===typeof b.is;switch(a){case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":return!1;
+b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Jf(a,b.parentNode):"contains"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function Kf(){for(var a=window,b=Cd();b instanceof a.HTMLIFrameElement;){try{var c="string"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Cd(a.document)}return b}function Dd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&("input"===b&&("text"===a.type||"search"===a.type||"tel"===a.type||
+"url"===a.type||"password"===a.type)||"textarea"===b||"true"===a.contentEditable)}function bi(){var a=Kf();if(Dd(a)){if("selectionStart"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(oj){b=null;break a}var f=0,g=-1,h=-1,k=0,l=0,m=a,n=null;b:for(;;){for(var p;;){m!==b||0!==d&&3!==
+m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=f+c);3===m.nodeType&&(f+=m.nodeValue.length);if(null===(p=m.firstChild))break;n=m;m=p}for(;;){if(m===a)break b;n===b&&++k===d&&(g=f);n===e&&++l===c&&(h=f);if(null!==(p=m.nextSibling))break;m=n;n=m.parentNode}m=p}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}function ci(a){var b=Kf(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Jf(c.ownerDocument.documentElement,
+c)){if(null!==d&&Dd(c))if(b=d.start,a=d.end,void 0===a&&(a=b),"selectionStart"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=If(c,f);var g=If(c,d);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&
+(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});"function"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}function Lf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(Ed||null==ab||ab!==Cd(c))return null;c=
+ab;"selectionStart"in c&&Dd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return Bb&&zb(Bb,c)?null:(Bb=c,a=H.getPooled(Mf.select,Fd,a,b),a.type="select",a.target=ab,Ua(a),a)}function di(a){var b="";R.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function Gd(a,b){a=z({children:void 0},b);if(b=di(b.children))a.children=
+b;return a}function bb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b["$"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty("$"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=""+wa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}function Hd(a,b){null!=b.dangerouslySetInnerHTML?n("91"):void 0;return z({},b,{value:void 0,defaultValue:void 0,
+children:""+a._wrapperState.initialValue})}function Nf(a,b){var c=b.value;null==c&&(c=b.defaultValue,b=b.children,null!=b&&(null!=c?n("92"):void 0,Array.isArray(b)&&(1>=b.length?void 0:n("93"),b=b[0]),c=b),null==c&&(c=""));a._wrapperState={initialValue:wa(c)}}function Of(a,b){var c=wa(b.value),d=wa(b.defaultValue);null!=c&&(c=""+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=""+d)}function Pf(a){switch(a){case "svg":return"http://www.w3.org/2000/svg";
+case "math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Id(a,b){return null==a||"http://www.w3.org/1999/xhtml"===a?Pf(b):"http://www.w3.org/2000/svg"===a&&"foreignObject"===b?"http://www.w3.org/1999/xhtml":a}function Qf(a,b,c){return null==b||"boolean"===typeof b||""===b?"":c||"number"!==typeof b||0===b||Cb.hasOwnProperty(a)&&Cb[a]?(""+b).trim():b+"px"}function Rf(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf("--"),
+e=Qf(c,b[c],d);"float"===c&&(c="cssFloat");d?a.setProperty(c,e):a[c]=e}}function Jd(a,b){b&&(ei[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?n("137",a,""):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?n("60"):void 0,"object"===typeof b.dangerouslySetInnerHTML&&"__html"in b.dangerouslySetInnerHTML?void 0:n("61")),null!=b.style&&"object"!==typeof b.style?n("62",""):void 0)}function Kd(a,b){if(-1===a.indexOf("-"))return"string"===typeof b.is;switch(a){case "annotation-xml":case "color-profile":case "font-face":case "font-face-src":case "font-face-uri":case "font-face-format":case "font-face-name":case "missing-glyph":return!1;
 default:return!0}}function ha(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Ff(a);b=ed[b];for(var d=0;d<b.length;d++){var e=b[d];if(!c.hasOwnProperty(e)||!c[e]){switch(e){case "scroll":tc("scroll",a);break;case "focus":case "blur":tc("focus",a);tc("blur",a);c.blur=!0;c.focus=!0;break;case "cancel":case "close":gf(e)&&tc(e,a);break;case "invalid":case "submit":case "reset":break;default:-1===Db.indexOf(e)&&t(e,a)}c[e]=!0}}}function xc(){}function Sf(a,b){switch(a){case "button":case "input":case "select":case "textarea":return!!b.autoFocus}return!1}
 function Ld(a,b){return"textarea"===a||"option"===a||"noscript"===a||"string"===typeof b.children||"number"===typeof b.children||"object"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}function fi(a,b,c,d,e,f){a[ic]=e;"input"===c&&"radio"===e.type&&null!=e.name&&sf(a,e);Kd(c,d);d=Kd(c,e);for(f=0;f<b.length;f+=2){var g=b[f],h=b[f+1];"style"===g?Rf(a,h):"dangerouslySetInnerHTML"===g?Tf(a,h):"children"===g?Eb(a,h):wd(a,g,h,d)}switch(c){case "input":yd(a,
 e);break;case "textarea":Of(a,e);break;case "select":b=a._wrapperState.wasMultiple,a._wrapperState.wasMultiple=!!e.multiple,c=e.value,null!=c?bb(a,!!e.multiple,c,!1):b!==!!e.multiple&&(null!=e.defaultValue?bb(a,!!e.multiple,e.defaultValue,!0):bb(a,!!e.multiple,e.multiple?[]:"",!1))}}function Md(a){for(a=a.nextSibling;a&&1!==a.nodeType&&3!==a.nodeType;)a=a.nextSibling;return a}function Uf(a){for(a=a.firstChild;a&&1!==a.nodeType&&3!==a.nodeType;)a=a.nextSibling;return a}function B(a,b){0>cb||(a.current=
@@ -79,15 +79,15 @@ P=r.sibling;var $a=p(e,r,q.value,k);if(null===$a){r||(r=P);break}a&&r&&null===$a
 return function(a,d,f,h){var k="object"===typeof f&&null!==f&&f.type===va&&null===f.key;k&&(f=f.props.children);var l="object"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Fc:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===va:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===va?f.props.children:f.props,h);d.ref=Hb(a,k,f);d.return=a;a=d;break a}else{c(a,k);break}else b(a,k);k=k.sibling}f.type===va?(d=ya(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ac(f.type,f.key,f.props,
 null,a.mode,h),h.ref=Hb(a,d,f),h.return=a,a=h)}return g(a);case Za:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Td(f,a.mode,h);d.return=a;a=d}return g(a)}if("string"===typeof f||"number"===typeof f)return f=""+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=Sd(f,a.mode,
 h),d.return=a,a=d),g(a);if(Gc(f))return q(a,d,f,h);if(wb(f))return v(a,d,f,h);l&&Ec(a,f);if("undefined"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type,n("152",h.displayName||h.name||"Component")}return c(a,d)}}function Ja(a){a===Ib?n("174"):void 0;return a}function Vd(a,b){J(Jb,b,a);J(Kb,a,a);J(V,Ib,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Id(null,"");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=Id(b,c)}B(V,a);J(V,b,a)}function eb(a){B(V,
-a);B(Kb,a);B(Jb,a)}function gg(a){Ja(Jb.current);var b=Ja(V.current);var c=Id(b,a.type);b!==c&&(J(Kb,a,a),J(V,c,a))}function Wd(a){Kb.current===a&&(B(V,a),B(Kb,a))}function W(){n("307")}function Xd(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!Ga(a[c],b[c]))return!1;return!0}function Yd(a,b,c,d,e,f){Lb=f;za=b;X=null!==a?a.memoizedState:null;Hc.current=null===X?ni:hg;b=c(d,e);if(Mb){do Mb=!1,Nb+=1,X=null!==a?a.memoizedState:null,fb=gb,Y=E=v=null,Hc.current=hg,b=c(d,e);while(Mb);
+a);B(Kb,a);B(Jb,a)}function gg(a){Ja(Jb.current);var b=Ja(V.current);var c=Id(b,a.type);b!==c&&(J(Kb,a,a),J(V,c,a))}function Wd(a){Kb.current===a&&(B(V,a),B(Kb,a))}function W(){n("321")}function Xd(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!Ga(a[c],b[c]))return!1;return!0}function Yd(a,b,c,d,e,f){Lb=f;za=b;X=null!==a?a.memoizedState:null;Hc.current=null===X?ni:hg;b=c(d,e);if(Mb){do Mb=!1,Nb+=1,X=null!==a?a.memoizedState:null,fb=gb,Y=E=v=null,Hc.current=hg,b=c(d,e);while(Mb);
 ia=null;Nb=0}Hc.current=Zd;a=za;a.memoizedState=gb;a.expirationTime=Ob;a.updateQueue=Y;a.effectTag|=Pb;a=null!==v&&null!==v.next;Lb=0;fb=E=gb=X=v=za=null;Ob=0;Y=null;Pb=0;a?n("300"):void 0;return b}function $d(){Hc.current=Zd;Lb=0;fb=E=gb=X=v=za=null;Ob=0;Y=null;Pb=0;Mb=!1;ia=null;Nb=0}function hb(){var a={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};null===E?gb=E=a:E=E.next=a;return E}function Qb(){if(null!==fb)E=fb,fb=E.next,v=X,X=null!==v?v.next:null;else{null===X?n("310"):
-void 0;v=X;var a={memoizedState:v.memoizedState,baseState:v.baseState,queue:v.queue,baseUpdate:v.baseUpdate,next:null};E=null===E?gb=a:E.next=a;X=v.next}return E}function ig(a,b){return"function"===typeof b?b(a):b}function jg(a,b,c){b=Qb();c=b.queue;null===c?n("311"):void 0;if(0<Nb){var d=c.dispatch;if(null!==ia){var e=ia.get(c);if(void 0!==e){ia.delete(c);var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);Ga(f,b.memoizedState)||(ja=!0);b.memoizedState=f;b.baseUpdate===c.last&&(b.baseState=
-f);c.eagerReducer=a;c.eagerState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==d){var h=e=null,k=d,l=!1;do{var m=k.expirationTime;m<Lb?(l||(l=!0,h=g,e=f),m>Ob&&(Ob=m)):f=k.eagerReducer===a?k.eagerState:a(f,k.action);g=k;k=k.next}while(null!==k&&k!==d);l||(h=g,e=f);Ga(f,b.memoizedState)||(ja=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.eagerReducer=a;c.eagerState=f}return[b.memoizedState,
+void 0;v=X;var a={memoizedState:v.memoizedState,baseState:v.baseState,queue:v.queue,baseUpdate:v.baseUpdate,next:null};E=null===E?gb=a:E.next=a;X=v.next}return E}function ig(a,b){return"function"===typeof b?b(a):b}function jg(a,b,c){b=Qb();c=b.queue;null===c?n("311"):void 0;c.lastRenderedReducer=a;if(0<Nb){var d=c.dispatch;if(null!==ia){var e=ia.get(c);if(void 0!==e){ia.delete(c);var f=b.memoizedState;do f=a(f,e.action),e=e.next;while(null!==e);Ga(f,b.memoizedState)||(ja=!0);b.memoizedState=f;b.baseUpdate===
+c.last&&(b.baseState=f);c.lastRenderedState=f;return[f,d]}}return[b.memoizedState,d]}d=c.last;var g=b.baseUpdate;f=b.baseState;null!==g?(null!==d&&(d.next=null),d=g.next):d=null!==d?d.next:null;if(null!==d){var h=e=null,k=d,l=!1;do{var m=k.expirationTime;m<Lb?(l||(l=!0,h=g,e=f),m>Ob&&(Ob=m)):f=k.eagerReducer===a?k.eagerState:a(f,k.action);g=k;k=k.next}while(null!==k&&k!==d);l||(h=g,e=f);Ga(f,b.memoizedState)||(ja=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,
 c.dispatch]}function ae(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===Y?(Y={lastEffect:null},Y.lastEffect=a.next=a):(b=Y.lastEffect,null===b?Y.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,Y.lastEffect=a));return a}function be(a,b,c,d){var e=hb();Pb|=a;e.memoizedState=ae(b,c,void 0,void 0===d?null:d)}function ce(a,b,c,d){var e=Qb();d=void 0===d?null:d;var f=void 0;if(null!==v){var g=v.memoizedState;f=g.destroy;if(null!==d&&Xd(d,g.deps)){ae(ib,c,f,d);return}}Pb|=a;e.memoizedState=
 ae(b,c,f,d)}function kg(a,b){if("function"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function lg(a,b){}function mg(a,b,c){25>Nb?void 0:n("301");var d=a.alternate;if(a===za||null!==d&&d===za)if(Mb=!0,a={expirationTime:Lb,action:c,eagerReducer:null,eagerState:null,next:null},null===ia&&(ia=new Map),c=ia.get(b),void 0===c)ia.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{jb();var e=ka();e=kb(e,a);var f={expirationTime:e,
-action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===d||0===d.expirationTime)&&(d=b.eagerReducer,null!==d))try{var k=b.eagerState,l=d(k,c);f.eagerReducer=d;f.eagerState=l;if(Ga(l,k))return}catch(m){}finally{}Aa(a,e)}}function Ic(a,b){if(0<=Ka){var c=la()-Ka;a.actualDuration+=c;b&&(a.selfBaseDuration=c);Ka=-1}}function ng(a,b){var c=T(5,null,null,0);c.elementType="DELETED";c.type=
-"DELETED";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function og(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}function pg(a){if(La){var b=lb;if(b){var c=b;if(!og(a,b)){b=Md(c);if(!b||!og(a,
-b)){a.effectTag|=2;La=!1;ma=a;return}ng(ma,c)}ma=a;lb=Uf(b)}else a.effectTag|=2,La=!1,ma=a}}function qg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;ma=a}function de(a){if(a!==ma)return!1;if(!La)return qg(a),La=!0,!1;var b=a.type;if(5!==a.tag||"head"!==b&&"body"!==b&&!Ld(b,a.memoizedProps))for(b=lb;b;)ng(a,b),b=Md(b);qg(a);lb=ma?Md(a.stateNode):null;return!0}function ee(){lb=ma=null;La=!1}function L(a,b,c,d){b.child=null===a?fe(b,null,c,d):mb(b,a.child,c,d)}function rg(a,
+action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===d||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var k=b.lastRenderedState,l=d(k,c);f.eagerReducer=d;f.eagerState=l;if(Ga(l,k))return}catch(m){}finally{}Aa(a,e)}}function Ic(a,b){if(0<=Ka){var c=la()-Ka;a.actualDuration+=c;b&&(a.selfBaseDuration=c);Ka=-1}}function ng(a,b){var c=T(5,null,null,0);c.elementType="DELETED";
+c.type="DELETED";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function og(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=""===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}function pg(a){if(La){var b=lb;if(b){var c=b;if(!og(a,b)){b=Md(c);if(!b||
+!og(a,b)){a.effectTag|=2;La=!1;ma=a;return}ng(ma,c)}ma=a;lb=Uf(b)}else a.effectTag|=2,La=!1,ma=a}}function qg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;ma=a}function de(a){if(a!==ma)return!1;if(!La)return qg(a),La=!0,!1;var b=a.type;if(5!==a.tag||"head"!==b&&"body"!==b&&!Ld(b,a.memoizedProps))for(b=lb;b;)ng(a,b),b=Md(b);qg(a);lb=ma?Md(a.stateNode):null;return!0}function ee(){lb=ma=null;La=!1}function L(a,b,c,d){b.child=null===a?fe(b,null,c,d):mb(b,a.child,c,d)}function rg(a,
 b,c,d,e){c=c.render;var f=b.ref;nb(b,e);d=Yd(a,b,c,d,f,e);if(null!==a&&!ja)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),na(a,b,e);b.effectTag|=1;L(a,b,d,e);return b.child}function sg(a,b,c,d,e,f){if(null===a){var g=c.type;if("function"===typeof g&&!Rd(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,tg(a,b,g,d,e,f);a=Ac(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e<
 f&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:zb,c(e,d)&&a.ref===b.ref))return na(a,b,f);b.effectTag|=1;a=Ia(g,d,f);a.ref=b.ref;a.return=b;return b.child=a}function tg(a,b,c,d,e,f){return null!==a&&zb(a.memoizedProps,d)&&a.ref===b.ref&&(ja=!1,e<f)?na(a,b,f):ge(a,b,c,d,f)}function ug(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.effectTag|=128}function ge(a,b,c,d,e){var f=C(c)?Ha:D.current;f=db(b,f);nb(b,e);c=Yd(a,b,c,d,f,e);if(null!==a&&!ja)return b.updateQueue=a.updateQueue,b.effectTag&=
 -517,a.expirationTime<=e&&(a.expirationTime=0),na(a,b,e);b.effectTag|=1;L(a,b,c,e);return b.child}function vg(a,b,c,d,e){if(C(c)){var f=!0;zc(b)}else f=!1;nb(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2),cg(b,c,d,e),Ud(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;"object"===typeof l&&null!==l?l=U(l):(l=C(c)?Ha:D.current,l=db(b,l));var m=c.getDerivedStateFromProps,n="function"===typeof m||"function"===
@@ -140,13 +140,13 @@ e&&null!==qe){var h=Di.bind(null,a,e);h=me(h);Oc=Rc(Rg,function(){return Gi(h)})
 if(null!==l&&0===a.__count)try{l.onInteractionScheduledWorkCompleted(a)}catch(mi){M||(M=!0,Pa=mi)}}))})}}function Sg(a){for(;;){var b=a.alternate,c=a.return,d=a.sibling;if(0===(a.effectTag&1024)){q=a;if(a.mode&4){var e=a;Ka=la();0>e.actualStartTime&&(e.actualStartTime=la())}a:{var f=b;b=a;var g=F;e=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:C(b.type)&&yc(b);break;case 3:eb(b);Od(b);e=b.stateNode;e.pendingContext&&(e.context=e.pendingContext,e.pendingContext=
 null);if(null===f||null===f.child)de(b),b.effectTag&=-3;we(b);break;case 5:Wd(b);var h=Ja(Jb.current);g=b.type;if(null!==f&&null!=b.stateNode)Tg(f,b,g,e,h),f.ref!==b.ref&&(b.effectTag|=128);else if(e){var k=Ja(V.current);if(de(b)){e=b;f=e.stateNode;var l=e.type,m=e.memoizedProps,p=h;f[ea]=e;f[ic]=m;g=void 0;h=l;switch(h){case "iframe":case "object":t("load",f);break;case "video":case "audio":for(l=0;l<Db.length;l++)t(Db[l],f);break;case "source":t("error",f);break;case "img":case "image":case "link":t("error",
 f);t("load",f);break;case "form":t("reset",f);t("submit",f);break;case "details":t("toggle",f);break;case "input":rf(f,m);t("invalid",f);ha(p,"onChange");break;case "select":f._wrapperState={wasMultiple:!!m.multiple};t("invalid",f);ha(p,"onChange");break;case "textarea":Nf(f,m),t("invalid",f),ha(p,"onChange")}Jd(h,m);l=null;for(g in m)m.hasOwnProperty(g)&&(k=m[g],"children"===g?"string"===typeof k?f.textContent!==k&&(l=["children",k]):"number"===typeof k&&f.textContent!==""+k&&(l=["children",""+k]):
-Sa.hasOwnProperty(g)&&null!=k&&ha(p,g));switch(h){case "input":oc(f);tf(f,m,!0);break;case "textarea":oc(f);g=f.textContent;g===f._wrapperState.initialValue&&(f.value=g);break;case "select":case "option":break;default:"function"===typeof m.onClick&&(f.onclick=xc)}g=l;e.updateQueue=g;e=null!==g?!0:!1;e&&Tb(b)}else{m=b;f=g;p=e;l=9===h.nodeType?h:h.ownerDocument;"http://www.w3.org/1999/xhtml"===k&&(k=Pf(f));"http://www.w3.org/1999/xhtml"===k?"script"===f?(f=l.createElement("div"),f.innerHTML="<script>\x3c/script>",
-l=f.removeChild(f.firstChild)):"string"===typeof p.is?l=l.createElement(f,{is:p.is}):(l=l.createElement(f),"select"===f&&p.multiple&&(l.multiple=!0)):l=l.createElementNS(k,f);f=l;f[ea]=m;f[ic]=e;Ug(f,b,!1,!1);m=f;l=g;p=e;var v=h,x=Kd(l,p);switch(l){case "iframe":case "object":t("load",m);h=p;break;case "video":case "audio":for(h=0;h<Db.length;h++)t(Db[h],m);h=p;break;case "source":t("error",m);h=p;break;case "img":case "image":case "link":t("error",m);t("load",m);h=p;break;case "form":t("reset",m);
-t("submit",m);h=p;break;case "details":t("toggle",m);h=p;break;case "input":rf(m,p);h=xd(m,p);t("invalid",m);ha(v,"onChange");break;case "option":h=Gd(m,p);break;case "select":m._wrapperState={wasMultiple:!!p.multiple};h=z({},p,{value:void 0});t("invalid",m);ha(v,"onChange");break;case "textarea":Nf(m,p);h=Hd(m,p);t("invalid",m);ha(v,"onChange");break;default:h=p}Jd(l,h);k=void 0;var y=l,w=m,u=h;for(k in u)if(u.hasOwnProperty(k)){var r=u[k];"style"===k?Rf(w,r):"dangerouslySetInnerHTML"===k?(r=r?r.__html:
-void 0,null!=r&&Tf(w,r)):"children"===k?"string"===typeof r?("textarea"!==y||""!==r)&&Eb(w,r):"number"===typeof r&&Eb(w,""+r):"suppressContentEditableWarning"!==k&&"suppressHydrationWarning"!==k&&"autoFocus"!==k&&(Sa.hasOwnProperty(k)?null!=r&&ha(v,k):null!=r&&wd(w,k,r,x))}switch(l){case "input":oc(m);tf(m,p,!1);break;case "textarea":oc(m);h=m.textContent;h===m._wrapperState.initialValue&&(m.value=h);break;case "option":null!=p.value&&m.setAttribute("value",""+wa(p.value));break;case "select":h=m;
-m=p;h.multiple=!!m.multiple;p=m.value;null!=p?bb(h,!!m.multiple,p,!1):null!=m.defaultValue&&bb(h,!!m.multiple,m.defaultValue,!0);break;default:"function"===typeof h.onClick&&(m.onclick=xc)}(e=Sf(g,e))&&Tb(b);b.stateNode=f}null!==b.ref&&(b.effectTag|=128)}else null===b.stateNode?n("166"):void 0;break;case 6:f&&null!=b.stateNode?Vg(f,b,f.memoizedProps,e):("string"!==typeof e&&(null===b.stateNode?n("166"):void 0),f=Ja(Jb.current),Ja(V.current),de(b)?(e=b,g=e.stateNode,f=e.memoizedProps,g[ea]=e,(e=g.nodeValue!==
-f)&&Tb(b)):(g=b,e=(9===f.nodeType?f:f.ownerDocument).createTextNode(e),e[ea]=b,g.stateNode=e));break;case 11:break;case 13:e=b.memoizedState;if(0!==(b.effectTag&64)){b.expirationTime=g;q=b;break a}e=null!==e;g=null!==f&&null!==f.memoizedState;null!==f&&!e&&g&&(f=f.child.sibling,null!==f&&(h=b.firstEffect,null!==h?(b.firstEffect=f,f.nextEffect=h):(b.firstEffect=b.lastEffect=f,f.nextEffect=null),f.effectTag=8));if(e||g)b.effectTag|=4;break;case 7:break;case 8:break;case 12:break;case 4:eb(b);we(b);
-break;case 10:je(b);break;case 9:break;case 14:break;case 17:C(b.type)&&yc(b);break;case 18:break;default:n("156")}q=null}a.mode&4&&Ic(a,!1);b=a;if(1===F||1!==b.childExpirationTime){e=0;if(b.mode&4){g=b.actualDuration;f=b.selfBaseDuration;h=null===b.alternate||b.child!==b.alternate.child;for(m=b.child;null!==m;)p=m.expirationTime,l=m.childExpirationTime,p>e&&(e=p),l>e&&(e=l),h&&(g+=m.actualDuration),f+=m.treeBaseDuration,m=m.sibling;b.actualDuration=g;b.treeBaseDuration=f}else for(g=b.child;null!==
+Sa.hasOwnProperty(g)&&null!=k&&ha(p,g));switch(h){case "input":oc(f);tf(f,m,!0);break;case "textarea":oc(f);g=f.textContent;g===f._wrapperState.initialValue&&(f.value=g);break;case "select":case "option":break;default:"function"===typeof m.onClick&&(f.onclick=xc)}g=l;e.updateQueue=g;e=null!==g?!0:!1;e&&Tb(b)}else{m=b;p=g;f=e;l=9===h.nodeType?h:h.ownerDocument;"http://www.w3.org/1999/xhtml"===k&&(k=Pf(p));"http://www.w3.org/1999/xhtml"===k?"script"===p?(f=l.createElement("div"),f.innerHTML="<script>\x3c/script>",
+l=f.removeChild(f.firstChild)):"string"===typeof f.is?l=l.createElement(p,{is:f.is}):(l=l.createElement(p),"select"===p&&(p=l,f.multiple?p.multiple=!0:f.size&&(p.size=f.size))):l=l.createElementNS(k,p);f=l;f[ea]=m;f[ic]=e;Ug(f,b,!1,!1);m=f;l=g;p=e;var v=h,x=Kd(l,p);switch(l){case "iframe":case "object":t("load",m);h=p;break;case "video":case "audio":for(h=0;h<Db.length;h++)t(Db[h],m);h=p;break;case "source":t("error",m);h=p;break;case "img":case "image":case "link":t("error",m);t("load",m);h=p;break;
+case "form":t("reset",m);t("submit",m);h=p;break;case "details":t("toggle",m);h=p;break;case "input":rf(m,p);h=xd(m,p);t("invalid",m);ha(v,"onChange");break;case "option":h=Gd(m,p);break;case "select":m._wrapperState={wasMultiple:!!p.multiple};h=z({},p,{value:void 0});t("invalid",m);ha(v,"onChange");break;case "textarea":Nf(m,p);h=Hd(m,p);t("invalid",m);ha(v,"onChange");break;default:h=p}Jd(l,h);k=void 0;var y=l,w=m,u=h;for(k in u)if(u.hasOwnProperty(k)){var r=u[k];"style"===k?Rf(w,r):"dangerouslySetInnerHTML"===
+k?(r=r?r.__html:void 0,null!=r&&Tf(w,r)):"children"===k?"string"===typeof r?("textarea"!==y||""!==r)&&Eb(w,r):"number"===typeof r&&Eb(w,""+r):"suppressContentEditableWarning"!==k&&"suppressHydrationWarning"!==k&&"autoFocus"!==k&&(Sa.hasOwnProperty(k)?null!=r&&ha(v,k):null!=r&&wd(w,k,r,x))}switch(l){case "input":oc(m);tf(m,p,!1);break;case "textarea":oc(m);h=m.textContent;h===m._wrapperState.initialValue&&(m.value=h);break;case "option":null!=p.value&&m.setAttribute("value",""+wa(p.value));break;case "select":h=
+m;m=p;h.multiple=!!m.multiple;p=m.value;null!=p?bb(h,!!m.multiple,p,!1):null!=m.defaultValue&&bb(h,!!m.multiple,m.defaultValue,!0);break;default:"function"===typeof h.onClick&&(m.onclick=xc)}(e=Sf(g,e))&&Tb(b);b.stateNode=f}null!==b.ref&&(b.effectTag|=128)}else null===b.stateNode?n("166"):void 0;break;case 6:f&&null!=b.stateNode?Vg(f,b,f.memoizedProps,e):("string"!==typeof e&&(null===b.stateNode?n("166"):void 0),f=Ja(Jb.current),Ja(V.current),de(b)?(e=b,g=e.stateNode,f=e.memoizedProps,g[ea]=e,(e=
+g.nodeValue!==f)&&Tb(b)):(g=b,e=(9===f.nodeType?f:f.ownerDocument).createTextNode(e),e[ea]=b,g.stateNode=e));break;case 11:break;case 13:e=b.memoizedState;if(0!==(b.effectTag&64)){b.expirationTime=g;q=b;break a}e=null!==e;g=null!==f&&null!==f.memoizedState;null!==f&&!e&&g&&(f=f.child.sibling,null!==f&&(h=b.firstEffect,null!==h?(b.firstEffect=f,f.nextEffect=h):(b.firstEffect=b.lastEffect=f,f.nextEffect=null),f.effectTag=8));if(e||g)b.effectTag|=4;break;case 7:break;case 8:break;case 12:break;case 4:eb(b);
+we(b);break;case 10:je(b);break;case 9:break;case 14:break;case 17:C(b.type)&&yc(b);break;case 18:break;default:n("156")}q=null}a.mode&4&&Ic(a,!1);b=a;if(1===F||1!==b.childExpirationTime){e=0;if(b.mode&4){g=b.actualDuration;f=b.selfBaseDuration;h=null===b.alternate||b.child!==b.alternate.child;for(m=b.child;null!==m;)p=m.expirationTime,l=m.childExpirationTime,p>e&&(e=p),l>e&&(e=l),h&&(g+=m.actualDuration),f+=m.treeBaseDuration,m=m.sibling;b.actualDuration=g;b.treeBaseDuration=f}else for(g=b.child;null!==
 g;)f=g.expirationTime,h=g.childExpirationTime,f>e&&(e=f),h>e&&(e=h),g=g.sibling;b.childExpirationTime=e}if(null!==q)return q;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1<a.effectTag&&(null!==c.lastEffect?c.lastEffect.nextEffect=a:c.firstEffect=a,c.lastEffect=a))}else{if(a.mode&4){Ic(a,!1);b=a.actualDuration;for(e=a.child;null!==e;)b+=e.actualDuration,
 e=e.sibling;a.actualDuration=b}a=xi(a,F);if(null!==a)return a.effectTag&=1023,a;null!==c&&(c.firstEffect=c.lastEffect=null,c.effectTag|=1024)}if(null!==d)return d;if(null!==c)a=c;else break}return null}function Wg(a){var b=a.alternate;a.mode&4&&(Ka=la(),0>a.actualStartTime&&(a.actualStartTime=la()));b=pi(b,a,F);a.memoizedProps=a.pendingProps;a.mode&4&&Ic(a,!0);null===b&&(b=Sg(a));Qg.current=null;return b}function Xg(a,b){Ea?n("243"):void 0;jb();Ea=!0;var c=xe.current;xe.current=Zd;var d=a.nextExpirationTimeToWorkOn;
 if(d!==F||a!==Z||null===q){Og();Z=a;F=d;q=Ia(Z.current,null,F);a.pendingCommitExpirationTime=0;var e=new Set;a.pendingInteractionMap.forEach(function(a,b){b>=d&&a.forEach(function(a){return e.add(a)})});a.memoizedInteractions=e;if(0<e.size){var f=ve.current;if(null!==f){var g=1E3*d+a.interactionThreadID;try{f.onWorkStarted(e,g)}catch(l){M||(M=!0,Pa=l)}}}}f=null;f=pa.current;pa.current=a.memoizedInteractions;g=!1;do{try{if(b)for(;null!==q&&!Sc();)q=Wg(q);else for(;null!==q;)q=Wg(q)}catch(l){if(Sb=
@@ -207,19 +207,20 @@ source:!0,track:!0,wbr:!0}),Q=R.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIR
 clearTimeout:void 0,Gi=bh,Ei=ah;new Set;var Nd=[],cb=-1,xa={},D={current:xa},K={current:!1},Ha=xa,Pd=null,Qd=null,Si="undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__,T=function(a,b,c,d){return new hi(a,b,c,d)},bd=R.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.SchedulerTracing,pa=bd.__interactionsRef,ve=bd.__subscriberRef,Ti=bd.unstable_getThreadID,me=bd.unstable_wrap,eg=(new R.Component).refs,Dc={isMounted:function(a){return(a=a._reactInternalFiber)?2===Ab(a):!1},enqueueSetState:function(a,
 b,c){a=a._reactInternalFiber;var d=ka();d=kb(d,a);var e=Ca(d);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);jb();oa(a,e);Aa(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=ka();d=kb(d,a);var e=Ca(d);e.tag=Dg;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);jb();oa(a,e);Aa(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=ka();c=kb(c,a);var d=Ca(c);d.tag=Jc;void 0!==b&&null!==b&&(d.callback=b);jb();oa(a,d);Aa(a,c)}},Gc=Array.isArray,mb=fg(!0),fe=fg(!1),
 Ib={},V={current:Ib},Kb={current:Ib},Jb={current:Ib},ib=0,Ai=2,Vb=4,ri=8,Ci=16,Wb=32,se=64,re=128,Hc=Qa.ReactCurrentDispatcher,Lb=0,za=null,v=null,X=null,gb=null,E=null,fb=null,Ob=0,Y=null,Pb=0,Mb=!1,ia=null,Nb=0,Zd={readContext:U,useCallback:W,useContext:W,useEffect:W,useImperativeHandle:W,useLayoutEffect:W,useMemo:W,useReducer:W,useRef:W,useState:W,useDebugValue:W},ni={readContext:U,useCallback:function(a,b){hb().memoizedState=[a,void 0===b?null:b];return a},useContext:U,useEffect:function(a,b){return be(516,
-re|se,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return be(4,Vb|Wb,kg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return be(4,Vb|Wb,a,b)},useMemo:function(a,b){var c=hb();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=hb();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,eagerReducer:a,eagerState:b};a=a.dispatch=mg.bind(null,za,a);return[d.memoizedState,a]},useRef:function(a){var b=
-hb();a={current:a};return b.memoizedState=a},useState:function(a){var b=hb();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,eagerReducer:ig,eagerState:a};a=a.dispatch=mg.bind(null,za,a);return[b.memoizedState,a]},useDebugValue:lg},hg={readContext:U,useCallback:function(a,b){var c=Qb();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Xd(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:U,useEffect:function(a,b){return ce(516,
-re|se,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ce(4,Vb|Wb,kg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ce(4,Vb|Wb,a,b)},useMemo:function(a,b){var c=Qb();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Xd(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:jg,useRef:function(a){return Qb().memoizedState},useState:function(a){return jg(ig,a)},useDebugValue:lg},Pg=0,Ka=-1,ma=null,lb=null,La=!1,oi=Qa.ReactCurrentOwner,
-ja=!1,ie={current:null},Rb=null,Ma=null,Sb=null,zg=0,Dg=1,Jc=2,le=3,Ba=!1,Ug=void 0,we=void 0,Tg=void 0,Vg=void 0;Ug=function(a,b,c,d){for(c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};we=function(a){};Tg=function(a,b,c,d,e){var f=a.memoizedProps;if(f!==d){var g=b.stateNode;
-Ja(V.current);a=null;switch(c){case "input":f=xd(g,f);d=xd(g,d);a=[];break;case "option":f=Gd(g,f);d=Gd(g,d);a=[];break;case "select":f=z({},f,{value:void 0});d=z({},d,{value:void 0});a=[];break;case "textarea":f=Hd(g,f);d=Hd(g,d);a=[];break;default:"function"!==typeof f.onClick&&"function"===typeof d.onClick&&(g.onclick=xc)}Jd(c,d);g=c=void 0;var h=null;for(c in f)if(!d.hasOwnProperty(c)&&f.hasOwnProperty(c)&&null!=f[c])if("style"===c){var k=f[c];for(g in k)k.hasOwnProperty(g)&&(h||(h={}),h[g]="")}else"dangerouslySetInnerHTML"!==
-c&&"children"!==c&&"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(Sa.hasOwnProperty(c)?a||(a=[]):(a=a||[]).push(c,null));for(c in d){var l=d[c];k=null!=f?f[c]:void 0;if(d.hasOwnProperty(c)&&l!==k&&(null!=l||null!=k))if("style"===c)if(k){for(g in k)!k.hasOwnProperty(g)||l&&l.hasOwnProperty(g)||(h||(h={}),h[g]="");for(g in l)l.hasOwnProperty(g)&&k[g]!==l[g]&&(h||(h={}),h[g]=l[g])}else h||(a||(a=[]),a.push(c,h)),h=l;else"dangerouslySetInnerHTML"===c?(l=l?l.__html:
-void 0,k=k?k.__html:void 0,null!=l&&k!==l&&(a=a||[]).push(c,""+l)):"children"===c?k===l||"string"!==typeof l&&"number"!==typeof l||(a=a||[]).push(c,""+l):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&(Sa.hasOwnProperty(c)?(null!=l&&ha(e,c),a||k===l||(a=[])):(a=a||[]).push(c,l))}h&&(a=a||[]).push("style",h);e=a;(b.updateQueue=e)&&Tb(b)}};Vg=function(a,b,c,d){c!==d&&Tb(b)};var si="function"===typeof WeakSet?WeakSet:Set,vi="function"===typeof WeakMap?WeakMap:Map,xe=Qa.ReactCurrentDispatcher,
-Qg=Qa.ReactCurrentOwner;null==pa||null==pa.current?n("302"):void 0;var Fe=1073741822,Ea=!1,q=null,Z=null,F=0,Oa=-1,pe=!1,p=null,Qc=!1,qe=null,Oc=null,Nc=null,Da=null,ca=null,G=null,Tc=0,Uc=void 0,x=!1,da=null,A=0,qa=0,M=!1,Pa=null,y=!1,Wc=!1,pb=null,Be=la(),ba=1073741822-(Be/10|0),ob=ba,Mi=50,Xb=0,Ce=null,Yc=!1;nd=function(a,b,c){switch(b){case "input":yd(a,c);b=c.name;if("radio"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll("input[name="+JSON.stringify(""+b)+'][type="radio"]');
-for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=id(d);e?void 0:n("90");jf(d);yd(d,e)}}}break;case "textarea":Of(a,c);break;case "select":b=c.value,null!=b&&bb(a,!!c.multiple,b,!1)}};Zb.prototype.render=function(a){this._defer?void 0:n("250");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new qb;hh(a,b,null,c,d._onCommit);return d};Zb.prototype.then=function(a){if(this._didComplete)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=
-[]);b.push(a)}};Zb.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:n("251");if(this._hasChildren){var c=this._expirationTime;if(b!==this){this._hasChildren&&(c=this._expirationTime=b._expirationTime,this.render(this._children));for(var d=null,e=b;e!==this;)d=e,e=e._next;null===d?n("251"):void 0;d._next=e._next;this._next=b;a.firstBatch=this}this._defer=!1;ch(a,c);b=this._next;this._next=null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children)}else this._next=
-null,this._defer=!1};Zb.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++)(0,a[b])()}};qb.prototype.then=function(a){if(this._didCommit)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};qb.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++){var c=a[b];"function"!==typeof c?n("191",c):void 0;c()}}};rb.prototype.render=
-function(a,b){var c=this._internalRoot,d=new qb;b=void 0===b?null:b;null!==b&&d.then(b);De(a,c,null,d._onCommit);return d};rb.prototype.unmount=function(a){var b=this._internalRoot,c=new qb;a=void 0===a?null:a;null!==a&&c.then(a);De(null,b,null,c._onCommit);return c};rb.prototype.legacy_renderSubtreeIntoContainer=function(a,b,c){var d=this._internalRoot,e=new qb;c=void 0===c?null:c;null!==c&&e.then(c);De(b,d,a,e._onCommit);return e};rb.prototype.createBatch=function(){var a=new Zb(this),b=a._expirationTime,
-c=this._internalRoot,d=c.firstBatch;if(null===d)c.firstBatch=a,a._next=null;else{for(c=null;null!==d&&d._expirationTime>=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};(function(a,b,c){df=a;Ef=b;ef=c})(eh,gh,function(){x||0===qa||(aa(qa,!1),qa=0)});var uh={createPortal:ih,findDOMNode:function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;void 0===b&&("function"===typeof a.render?n("188"):n("268",Object.keys(a)));a=zf(b);a=null===a?null:a.stateNode;return a},
-hydrate:function(a,b,c){sb(b)?void 0:n("200");return $c(null,a,b,!0,c)},render:function(a,b,c){sb(b)?void 0:n("200");return $c(null,a,b,!1,c)},unstable_renderSubtreeIntoContainer:function(a,b,c,d){sb(c)?void 0:n("200");null==a||void 0===a._reactInternalFiber?n("38"):void 0;return $c(a,b,c,!1,d)},unmountComponentAtNode:function(a){sb(a)?void 0:n("40");return a._reactRootContainer?(fh(function(){$c(null,null,a,!1,function(){a._reactRootContainer=null})}),!0):!1},unstable_createPortal:function(){return ih.apply(void 0,
-arguments)},unstable_batchedUpdates:eh,unstable_interactiveUpdates:gh,flushSync:function(a,b){x?n("187"):void 0;var c=y;y=!0;try{return Zg(a,b)}finally{y=c,aa(1073741823,!1)}},unstable_createRoot:function(a,b){sb(a)?void 0:n("299","unstable_createRoot");return new rb(a,!0,null!=b&&!0===b.hydrate)},unstable_flushControlled:function(a){var b=y;y=!0;try{Zg(a)}finally{(y=b)||x||aa(1073741823,!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[Pe,Fa,id,Ge.injectEventPluginsByName,dd,Ua,function(a){fd(a,
-Dh)},af,bf,sc,hd]}};(function(a){var b=a.findFiberByHostInstance;return gi(z({},a,{overrideProps:null,currentDispatcherRef:Qa.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=zf(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:hc,bundleType:0,version:"16.8.3",rendererPackageName:"react-dom"});var vh={default:uh},wh=vh&&uh||vh;return wh.default||wh});
+re|se,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return be(4,Vb|Wb,kg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return be(4,Vb|Wb,a,b)},useMemo:function(a,b){var c=hb();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=hb();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=mg.bind(null,za,a);return[d.memoizedState,a]},useRef:function(a){var b=
+hb();a={current:a};return b.memoizedState=a},useState:function(a){var b=hb();"function"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,lastRenderedReducer:ig,lastRenderedState:a};a=a.dispatch=mg.bind(null,za,a);return[b.memoizedState,a]},useDebugValue:lg},hg={readContext:U,useCallback:function(a,b){var c=Qb();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Xd(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:U,useEffect:function(a,
+b){return ce(516,re|se,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ce(4,Vb|Wb,kg.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ce(4,Vb|Wb,a,b)},useMemo:function(a,b){var c=Qb();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Xd(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:jg,useRef:function(a){return Qb().memoizedState},useState:function(a){return jg(ig,a)},useDebugValue:lg},Pg=0,Ka=-1,ma=null,lb=null,
+La=!1,oi=Qa.ReactCurrentOwner,ja=!1,ie={current:null},Rb=null,Ma=null,Sb=null,zg=0,Dg=1,Jc=2,le=3,Ba=!1,Ug=void 0,we=void 0,Tg=void 0,Vg=void 0;Ug=function(a,b,c,d){for(c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};we=function(a){};Tg=function(a,b,c,d,e){var f=a.memoizedProps;
+if(f!==d){var g=b.stateNode;Ja(V.current);a=null;switch(c){case "input":f=xd(g,f);d=xd(g,d);a=[];break;case "option":f=Gd(g,f);d=Gd(g,d);a=[];break;case "select":f=z({},f,{value:void 0});d=z({},d,{value:void 0});a=[];break;case "textarea":f=Hd(g,f);d=Hd(g,d);a=[];break;default:"function"!==typeof f.onClick&&"function"===typeof d.onClick&&(g.onclick=xc)}Jd(c,d);g=c=void 0;var h=null;for(c in f)if(!d.hasOwnProperty(c)&&f.hasOwnProperty(c)&&null!=f[c])if("style"===c){var k=f[c];for(g in k)k.hasOwnProperty(g)&&
+(h||(h={}),h[g]="")}else"dangerouslySetInnerHTML"!==c&&"children"!==c&&"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(Sa.hasOwnProperty(c)?a||(a=[]):(a=a||[]).push(c,null));for(c in d){var l=d[c];k=null!=f?f[c]:void 0;if(d.hasOwnProperty(c)&&l!==k&&(null!=l||null!=k))if("style"===c)if(k){for(g in k)!k.hasOwnProperty(g)||l&&l.hasOwnProperty(g)||(h||(h={}),h[g]="");for(g in l)l.hasOwnProperty(g)&&k[g]!==l[g]&&(h||(h={}),h[g]=l[g])}else h||(a||(a=[]),a.push(c,
+h)),h=l;else"dangerouslySetInnerHTML"===c?(l=l?l.__html:void 0,k=k?k.__html:void 0,null!=l&&k!==l&&(a=a||[]).push(c,""+l)):"children"===c?k===l||"string"!==typeof l&&"number"!==typeof l||(a=a||[]).push(c,""+l):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&(Sa.hasOwnProperty(c)?(null!=l&&ha(e,c),a||k===l||(a=[])):(a=a||[]).push(c,l))}h&&(a=a||[]).push("style",h);e=a;(b.updateQueue=e)&&Tb(b)}};Vg=function(a,b,c,d){c!==d&&Tb(b)};var si="function"===typeof WeakSet?WeakSet:Set,
+vi="function"===typeof WeakMap?WeakMap:Map,xe=Qa.ReactCurrentDispatcher,Qg=Qa.ReactCurrentOwner;null==pa||null==pa.current?n("302"):void 0;var Fe=1073741822,Ea=!1,q=null,Z=null,F=0,Oa=-1,pe=!1,p=null,Qc=!1,qe=null,Oc=null,Nc=null,Da=null,ca=null,G=null,Tc=0,Uc=void 0,x=!1,da=null,A=0,qa=0,M=!1,Pa=null,y=!1,Wc=!1,pb=null,Be=la(),ba=1073741822-(Be/10|0),ob=ba,Mi=50,Xb=0,Ce=null,Yc=!1;nd=function(a,b,c){switch(b){case "input":yd(a,c);b=c.name;if("radio"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;
+c=c.querySelectorAll("input[name="+JSON.stringify(""+b)+'][type="radio"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=id(d);e?void 0:n("90");jf(d);yd(d,e)}}}break;case "textarea":Of(a,c);break;case "select":b=c.value,null!=b&&bb(a,!!c.multiple,b,!1)}};Zb.prototype.render=function(a){this._defer?void 0:n("250");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new qb;hh(a,b,null,c,d._onCommit);return d};Zb.prototype.then=function(a){if(this._didComplete)a();
+else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};Zb.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:n("251");if(this._hasChildren){var c=this._expirationTime;if(b!==this){this._hasChildren&&(c=this._expirationTime=b._expirationTime,this.render(this._children));for(var d=null,e=b;e!==this;)d=e,e=e._next;null===d?n("251"):void 0;d._next=e._next;this._next=b;a.firstBatch=this}this._defer=!1;ch(a,c);b=this._next;this._next=
+null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children)}else this._next=null,this._defer=!1};Zb.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b<a.length;b++)(0,a[b])()}};qb.prototype.then=function(a){if(this._didCommit)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};qb.prototype._onCommit=function(){if(!this._didCommit){this._didCommit=!0;var a=this._callbacks;if(null!==a)for(var b=
+0;b<a.length;b++){var c=a[b];"function"!==typeof c?n("191",c):void 0;c()}}};rb.prototype.render=function(a,b){var c=this._internalRoot,d=new qb;b=void 0===b?null:b;null!==b&&d.then(b);De(a,c,null,d._onCommit);return d};rb.prototype.unmount=function(a){var b=this._internalRoot,c=new qb;a=void 0===a?null:a;null!==a&&c.then(a);De(null,b,null,c._onCommit);return c};rb.prototype.legacy_renderSubtreeIntoContainer=function(a,b,c){var d=this._internalRoot,e=new qb;c=void 0===c?null:c;null!==c&&e.then(c);
+De(b,d,a,e._onCommit);return e};rb.prototype.createBatch=function(){var a=new Zb(this),b=a._expirationTime,c=this._internalRoot,d=c.firstBatch;if(null===d)c.firstBatch=a,a._next=null;else{for(c=null;null!==d&&d._expirationTime>=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};(function(a,b,c){df=a;Ef=b;ef=c})(eh,gh,function(){x||0===qa||(aa(qa,!1),qa=0)});var uh={createPortal:ih,findDOMNode:function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternalFiber;void 0===
+b&&("function"===typeof a.render?n("188"):n("268",Object.keys(a)));a=zf(b);a=null===a?null:a.stateNode;return a},hydrate:function(a,b,c){sb(b)?void 0:n("200");return $c(null,a,b,!0,c)},render:function(a,b,c){sb(b)?void 0:n("200");return $c(null,a,b,!1,c)},unstable_renderSubtreeIntoContainer:function(a,b,c,d){sb(c)?void 0:n("200");null==a||void 0===a._reactInternalFiber?n("38"):void 0;return $c(a,b,c,!1,d)},unmountComponentAtNode:function(a){sb(a)?void 0:n("40");return a._reactRootContainer?(fh(function(){$c(null,
+null,a,!1,function(){a._reactRootContainer=null})}),!0):!1},unstable_createPortal:function(){return ih.apply(void 0,arguments)},unstable_batchedUpdates:eh,unstable_interactiveUpdates:gh,flushSync:function(a,b){x?n("187"):void 0;var c=y;y=!0;try{return Zg(a,b)}finally{y=c,aa(1073741823,!1)}},unstable_createRoot:function(a,b){sb(a)?void 0:n("299","unstable_createRoot");return new rb(a,!0,null!=b&&!0===b.hydrate)},unstable_flushControlled:function(a){var b=y;y=!0;try{Zg(a)}finally{(y=b)||x||aa(1073741823,
+!1)}},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{Events:[Pe,Fa,id,Ge.injectEventPluginsByName,dd,Ua,function(a){fd(a,Dh)},af,bf,sc,hd]}};(function(a){var b=a.findFiberByHostInstance;return gi(z({},a,{overrideProps:null,currentDispatcherRef:Qa.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=zf(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:hc,bundleType:0,version:"16.8.6",rendererPackageName:"react-dom"});
+var vh={default:uh},wh=vh&&uh||vh;return wh.default||wh});
diff --git a/node_modules/react-stripe-elements/LICENSE b/node_modules/react-stripe-elements/LICENSE
new file mode 100644
index 00000000..a97e81d3
--- /dev/null
+++ b/node_modules/react-stripe-elements/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 Stripe
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/react-stripe-elements/README.md b/node_modules/react-stripe-elements/README.md
new file mode 100644
index 00000000..202bebf8
--- /dev/null
+++ b/node_modules/react-stripe-elements/README.md
@@ -0,0 +1,779 @@
+# react-stripe-elements
+
+[![build status](https://img.shields.io/travis/stripe/react-stripe-elements/master.svg?style=flat-square)](https://travis-ci.org/stripe/react-stripe-elements)
+[![npm version](https://img.shields.io/npm/v/react-stripe-elements.svg?style=flat-square)](https://www.npmjs.com/package/react-stripe-elements)
+
+> React components for Stripe.js and Stripe Elements
+
+This project is a thin React wrapper around
+[Stripe.js](https://stripe.com/docs/stripe.js) and
+[Stripe Elements](https://stripe.com/docs/elements). It allows you to add
+Elements to any React app, and manages the state and lifecycle of Elements for
+you.
+
+The
+[Stripe.js / Stripe Elements API reference](https://stripe.com/docs/elements/reference)
+goes into more detail on the various customization options for Elements (e.g.
+styles, fonts).
+
+<!-- prettier-ignore-start -->
+<!-- START doctoc generated TOC please keep comment here to allow auto update -->
+<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
+## Table of Contents
+
+- [Demo](#demo)
+- [Installation](#installation)
+  - [First, install `react-stripe-elements`.](#first-install-react-stripe-elements)
+  - [Then, load Stripe.js in your application:](#then-load-stripejs-in-your-application)
+- [Getting started](#getting-started)
+  - [The Stripe context (`StripeProvider`)](#the-stripe-context-stripeprovider)
+  - [Element groups (`Elements`)](#element-groups-elements)
+  - [Setting up your payment form (`injectStripe`)](#setting-up-your-payment-form-injectstripe)
+  - [Using individual `*Element` components](#using-individual-element-components)
+  - [Using the `PaymentRequestButtonElement`](#using-the-paymentrequestbuttonelement)
+- [Advanced integrations](#advanced-integrations)
+  - [Loading Stripe.js asynchronously](#loading-stripejs-asynchronously)
+  - [Server-side rendering (SSR)](#server-side-rendering-ssr)
+  - [Using an existing Stripe instance](#using-an-existing-stripe-instance)
+- [Component reference](#component-reference)
+  - [`<StripeProvider>`](#stripeprovider)
+    - [Props shape](#props-shape)
+  - [`<Elements>`](#elements)
+    - [Props shape](#props-shape-1)
+  - [`<*Element>` components](#element-components)
+    - [Available components](#available-components)
+    - [Props shape](#props-shape-2)
+    - [Using `onReady`](#using-onready)
+  - [`injectStripe` HOC](#injectstripe-hoc)
+    - [Example](#example)
+- [Troubleshooting](#troubleshooting)
+- [Development](#development)
+
+<!-- END doctoc generated TOC please keep comment here to allow auto update -->
+<!-- prettier-ignore-end -->
+
+## Demo
+
+The fastest way to start playing around with `react-stripe-elements` is with
+this JSFiddle: <https://jsfiddle.net/attystripe/xux7qzch/>.
+
+You can also play around with the demo locally. The source code is in
+[demo/](demo/). To run it:
+
+```shell
+git clone https://github.com/stripe/react-stripe-elements
+cd react-stripe-elements
+
+# (make sure you have yarn installed: https://yarnpkg.com/)
+
+yarn install
+yarn run demo
+```
+
+Now go to <http://localhost:8080/> to try it out!
+
+> :warning: `PaymentRequestButtonElement` will not render unless the page is
+> served over HTTPS. To demo `PaymentRequestButtonElement`, you can tunnel over
+> HTTPS to the local server using ngrok or a similar service.
+
+![Screenshot of the demo running](demo/demo.png)
+
+## Installation
+
+### First, install `react-stripe-elements`.
+
+Install with `yarn`:
+
+```
+yarn add react-stripe-elements
+```
+
+OR with `npm`:
+
+```
+npm install --save react-stripe-elements
+```
+
+OR using UMD build (exports a global `ReactStripeElements` object);
+
+```html
+<script src="https://unpkg.com/react-stripe-elements@latest/dist/react-stripe-elements.min.js"></script>
+```
+
+### Then, load Stripe.js in your application:
+
+```html
+<script src="https://js.stripe.com/v3/"></script>
+```
+
+## Getting started
+
+### The Stripe context (`StripeProvider`)
+
+In order for your application to have access to
+[the Stripe object](https://stripe.com/docs/elements/reference#the-stripe-object),
+let's add `StripeProvider` to our root React App component:
+
+```jsx
+// index.js
+import React from 'react';
+import {render} from 'react-dom';
+import {StripeProvider} from 'react-stripe-elements';
+
+import MyStoreCheckout from './MyStoreCheckout';
+
+const App = () => {
+  return (
+    <StripeProvider apiKey="pk_test_12345">
+      <MyStoreCheckout />
+    </StripeProvider>
+  );
+};
+
+render(<App />, document.getElementById('root'));
+```
+
+### Element groups (`Elements`)
+
+Next, when you're building components for your checkout form, you'll want to
+wrap the `Elements` component around your `form`. This groups the set of Stripe
+Elements you're using together, so that we're able to pull data from groups of
+Elements when you're tokenizing.
+
+```jsx
+// MyStoreCheckout.js
+import React from 'react';
+import {Elements} from 'react-stripe-elements';
+
+import InjectedCheckoutForm from './CheckoutForm';
+
+class MyStoreCheckout extends React.Component {
+  render() {
+    return (
+      <Elements>
+        <InjectedCheckoutForm />
+      </Elements>
+    );
+  }
+}
+
+export default MyStoreCheckout;
+```
+
+### Setting up your payment form (`injectStripe`)
+
+Use the `injectStripe` [Higher-Order Component][hoc] (HOC) to build your payment
+form components in the `Elements` tree. The [Higher-Order Component][hoc]
+pattern in React can be unfamiliar to those who've never seen it before, so
+consider reading up before continuing. The `injectStripe` HOC provides the
+`this.props.stripe` property that manages your `Elements` groups. You can call
+`this.props.stripe.createToken` or `this.props.stripe.createSource` within a
+component that has been injected to submit payment data to Stripe.
+
+[hoc]: https://facebook.github.io/react/docs/higher-order-components.html
+
+> :warning: NOTE `injectStripe` cannot be used on the same element that renders
+> the `Elements` component; it must be used on the child component of
+> `Elements`. `injectStripe` _returns a wrapped component_ that needs to sit
+> under `<Elements>` but above any code where you'd like to access
+> `this.props.stripe`.
+
+```jsx
+// CheckoutForm.js
+import React from 'react';
+import {injectStripe} from 'react-stripe-elements';
+
+import AddressSection from './AddressSection';
+import CardSection from './CardSection';
+
+class CheckoutForm extends React.Component {
+  handleSubmit = (ev) => {
+    // We don't want to let default form submission happen here, which would refresh the page.
+    ev.preventDefault();
+
+    // Within the context of `Elements`, this call to createToken knows which Element to
+    // tokenize, since there's only one in this group.
+    this.props.stripe.createToken({name: 'Jenny Rosen'}).then(({token}) => {
+      console.log('Received Stripe token:', token);
+    });
+
+    // However, this line of code will do the same thing:
+    //
+    // this.props.stripe.createToken({type: 'card', name: 'Jenny Rosen'});
+
+    // You can also use createSource to create Sources. See our Sources
+    // documentation for more: https://stripe.com/docs/stripe-js/reference#stripe-create-source
+    //
+    // this.props.stripe.createSource({type: 'card', owner: {
+    //   name: 'Jenny Rosen'
+    // }});
+  };
+
+  render() {
+    return (
+      <form onSubmit={this.handleSubmit}>
+        <AddressSection />
+        <CardSection />
+        <button>Confirm order</button>
+      </form>
+    );
+  }
+}
+
+export default injectStripe(CheckoutForm);
+```
+
+### Using individual `*Element` components
+
+Now, you can use individual `*Element` components, such as `CardElement`, to
+build your form.
+
+```jsx
+// CardSection.js
+import React from 'react';
+import {CardElement} from 'react-stripe-elements';
+
+class CardSection extends React.Component {
+  render() {
+    return (
+      <label>
+        Card details
+        <CardElement style={{base: {fontSize: '18px'}}} />
+      </label>
+    );
+  }
+}
+
+export default CardSection;
+```
+
+### Using the `PaymentRequestButtonElement`
+
+The
+[Payment Request Button](https://stripe.com/docs/elements/payment-request-button)
+lets you collect payment and address information from your customers using Apple
+Pay and the Payment Request API.
+
+To use the `PaymentRequestButtonElement` you need to first create a
+[`PaymentRequest` object](https://stripe.com/docs/stripe.js#the-payment-request-object).
+You can then conditionally render the `PaymentRequestButtonElement` based on the
+result of `paymentRequest.canMakePayment` and pass the `PaymentRequest` Object
+as a prop.
+
+```jsx
+class PaymentRequestForm extends React.Component {
+  constructor(props) {
+    super(props);
+
+    // For full documentation of the available paymentRequest options, see:
+    // https://stripe.com/docs/stripe.js#the-payment-request-object
+    const paymentRequest = props.stripe.paymentRequest({
+      country: 'US',
+      currency: 'usd',
+      total: {
+        label: 'Demo total',
+        amount: 1000,
+      },
+    });
+
+    paymentRequest.on('token', ({complete, token, ...data}) => {
+      console.log('Received Stripe token: ', token);
+      console.log('Received customer information: ', data);
+      complete('success');
+    });
+
+    paymentRequest.canMakePayment().then((result) => {
+      this.setState({canMakePayment: !!result});
+    });
+
+    this.state = {
+      canMakePayment: false,
+      paymentRequest,
+    };
+  }
+
+  render() {
+    return this.state.canMakePayment ? (
+      <PaymentRequestButtonElement
+        paymentRequest={this.state.paymentRequest}
+        className="PaymentRequestButton"
+        style={{
+          // For more details on how to style the Payment Request Button, see:
+          // https://stripe.com/docs/elements/payment-request-button#styling-the-element
+          paymentRequestButton: {
+            theme: 'light',
+            height: '64px',
+          },
+        }}
+      />
+    ) : null;
+  }
+}
+export default injectStripe(PaymentRequestForm);
+```
+
+## Advanced integrations
+
+The above [Getting started](#getting-started) section outlines the most common
+integration, which makes the following assumptions:
+
+- The Stripe.js script is loaded before your application's code.
+- Your code is only run in a browser environment.
+- You don't need fine-grained control over the Stripe instance that
+  `react-stripe-elements` uses under the hood.
+
+When all of these assumptions are true, you can pass the `apiKey` prop to
+`<StripeProvider>` and let `react-stripe-elements` handle the rest.
+
+When one or more of these assumptions doesn't hold true for your integration,
+you have another option: pass a Stripe instance as the `stripe` prop to
+`<StripeProvider>` directly. The `stripe` prop can be either `null` or the
+result of using `Stripe(apiKey, options)` to construct a [Stripe instance].
+
+[stripe-function]: https://stripe.com/docs/stripe-js/reference#stripe-function
+
+We'll now cover a couple of use cases which break at least one of the
+assumptions listed above.
+
+### Loading Stripe.js asynchronously
+
+Loading Stripe.js asynchronously can speed up your initial page load, especially
+if you don't show the payment form until the user interacts with your
+application in some way.
+
+```html
+<html>
+  <head>
+    <!-- ... -->
+
+    <!-- Note the 'id' and 'async' attributes:                         -->
+    <!--    ┌────────────┐                                 ┌───┐       -->
+    <script id="stripe-js" src="https://js.stripe.com/v3/" async></script>
+
+    <!-- ... -->
+  </head>
+  <!-- ... -->
+</html>
+```
+
+Initialize `this.state.stripe` to `null` in the `constructor`, then update it in
+`componentDidMount` when the script tag has loaded.
+
+```jsx
+class App extends React.Component {
+  constructor() {
+    super();
+    this.state = {stripe: null};
+  }
+  componentDidMount() {
+    if (window.Stripe) {
+      this.setState({stripe: window.Stripe('pk_test_12345')});
+    } else {
+      document.querySelector('#stripe-js').addEventListener('load', () => {
+        // Create Stripe instance once Stripe.js loads
+        this.setState({stripe: window.Stripe('pk_test_12345')});
+      });
+    }
+  }
+  render() {
+    // this.state.stripe will either be null or a Stripe instance
+    // depending on whether Stripe.js has loaded.
+    return (
+      <StripeProvider stripe={this.state.stripe}>
+        <Elements>
+          <InjectedCheckoutForm />
+        </Elements>
+      </StripeProvider>
+    );
+  }
+}
+```
+
+When loading Stripe.js asynchronously, the `stripe` prop provided by
+`injectStripe` will initially be `null`, and will update to the Stripe instance
+once you pass it in to your `StripeProvider`. You can find a working demo of
+this strategy in [async.js](demo/async/async.js). If you run the demo locally,
+you can view it at <http://localhost:8080/async/>.
+
+For alternatives to calling `setState`in `componentDidMount`, consider using a
+`setTimeout()`, moving the `if/else` statement to the `constructor`, or
+dynamically injecting a script tag in `componentDidMount`. For more information,
+see [stripe/react-stripe-elements][issue-154].
+
+[issue-154]: https://github.com/stripe/react-stripe-elements/issues/154
+
+### Server-side rendering (SSR)
+
+If you're using `react-stripe-elements` in a non-browser environment
+(`React.renderToString`, etc.), Stripe.js is not available. To use
+`react-stripe-elements` with SSR frameworks, use the following instructions.
+
+The general idea is similar to the async loading snippet from the previous
+section (initialize `this.state.stripe` to `null` in `constructor`, update in
+`componentDidMount`), but this time we don't have to wait for the script tag to
+load in `componentDidMount`; we can use `window.Stripe` directly.
+
+```jsx
+class App extends React.Component {
+  constructor() {
+    super();
+    this.state = {stripe: null};
+  }
+  componentDidMount() {
+    // Create Stripe instance in componentDidMount
+    // (componentDidMount only fires in browser/DOM environment)
+    this.setState({stripe: window.Stripe('pk_test_12345')});
+  }
+  render() {
+    return (
+      <StripeProvider stripe={this.state.stripe}>
+        <Elements>
+          <InjectedCheckoutForm />
+        </Elements>
+      </StripeProvider>
+    );
+  }
+}
+```
+
+Inside your form, `<InjectedCheckoutForm />`, `this.props.stripe` will either be
+`null` or a valid Stripe instance. This means that it will be `null` when
+rendered server-side, but set when rendered in a browser.
+
+### Using an existing Stripe instance
+
+In some projects, part of the project uses React, while another part doesn't.
+For example, maybe you have business logic and view logic separate. Or maybe you
+use `react-stripe-elements` for your credit card form, but use Stripe.js APIs
+directly for tokenizing bank account information.
+
+You can use the `stripe` prop to get more fine-grained control over the Stripe
+instance that `<StripeProvider>` uses. For example, if you have a `stripe`
+instance in a Redux store that you pass to your `<App />` as a prop, you can
+pass that instance directly into `<StripeProvider>`:
+
+```jsx
+class App extends React.Component {
+  render() {
+    return (
+      <StripeProvider stripe={this.props.stripe}>
+        <Elements>
+          <InjectedCheckoutForm />
+        </Elements>
+      </StripeProvider>
+    );
+  }
+}
+```
+
+As long as `<App />` is provided a non-`null` `stripe` prop, `this.props.stripe`
+will always be available within your `InjectedCheckoutForm`.
+
+## Component reference
+
+### `<StripeProvider>`
+
+All applications using `react-stripe-elements` must use the `<StripeProvider>`
+component, which sets up the Stripe context for a component tree.
+`react-stripe-elements` uses the provider pattern (which is also adopted by
+tools like [`react-redux`](https://github.com/reactjs/react-redux) and
+[`react-intl`](https://github.com/yahoo/react-intl)) to scope a Stripe context
+to a tree of components.
+
+This allows configuration like your API key to be provided at the root of a
+component tree. This context is then made available to the `<Elements>`
+component and individual `<*Element>` components that we provide.
+
+An integration usually wraps the `<StripeProvider>` around the application’s
+root component. This way, your entire application has the configured Stripe
+context.
+
+#### Props shape
+
+There are two _distinct_ props shapes you can pass to `<StripeProvider>`.
+
+```jsx
+type StripeProviderProps =
+  | {apiKey: string, ...}
+  | {stripe: StripeObject | null};
+```
+
+See [Advanced integrations](#advanced-integrations) for more information on when
+to use each.
+
+The `...` above represents that this component accepts props for any option that
+can be passed into `Stripe(apiKey, options)`.
+
+### `<Elements>`
+
+The `Elements` component wraps groups of Elements that belong together. In most
+cases, you want to wrap this around your checkout form.
+
+#### Props shape
+
+This component accepts all `options` that can be passed into
+`stripe.elements(options)` as props.
+
+```jsx
+type ElementsProps = {
+  locale?: string,
+  fonts?: Array<Object>,
+  // The full specification for `elements()` options is here: https://stripe.com/docs/elements/reference#elements-options
+};
+```
+
+### `<*Element>` components
+
+These components display the UI for Elements, and must be used within
+`StripeProvider` and `Elements`.
+
+#### Available components
+
+(More to come!)
+
+- `CardElement`
+- `CardNumberElement`
+- `CardExpiryElement`
+- `CardCVCElement`
+- `PostalCodeElement`
+- `PaymentRequestButtonElement`
+- `IbanElement`
+- `IdealBankElement`
+
+#### Props shape
+
+These components accept all `options` that can be passed into
+`elements.create(type, options)` as props.
+
+```jsx
+type ElementProps = {
+  id?: string,
+  className?: string,
+
+  // For full documentation on the events and payloads below, see:
+  // https://stripe.com/docs/elements/reference#element-on
+  onBlur?: () => void,
+  onChange?: (changeObject: Object) => void,
+  onFocus?: () => void,
+  onReady?: (StripeElement) => void,
+};
+```
+
+The props for the `PaymentRequestButtonElement` are:
+
+```jsx
+type PaymentRequestButtonProps = {
+  id?: string,
+  className?: string,
+
+  paymentRequest: StripePaymentRequest,
+
+  onBlur?: () => void,
+  onClick?: () => void,
+  onFocus?: () => void,
+  onReady?: (StripeElement) => void,
+};
+```
+
+#### Using `onReady`
+
+Note that the `onReady` callback gives you access to the underlying [Element]
+created with Stripe.js. You can use this to get access to all the underlying
+methods that a Stripe Element supports.
+
+For example, you can use `onReady` to force your element to focus:
+
+```jsx
+// CardSection.js
+import React from 'react';
+import {CardElement} from 'react-stripe-elements';
+
+class CardSection extends React.Component {
+  render = () => {
+    return (
+      <label>
+        Card details
+        <CardElement onReady={(el) => el.focus()} />
+      </label>
+    );
+  };
+}
+
+export default CardSection;
+```
+
+(Note that this functionality is new as of react-stripe-elements v1.6.0.)
+
+[element]: https://stripe.com/docs/stripe-js/reference#other-methods
+
+### `injectStripe` HOC
+
+```jsx
+function injectStripe(
+  WrappedComponent: ReactClass,
+  options?: {
+    withRef?: boolean = false,
+  }
+): ReactClass;
+```
+
+Use `injectStripe` to wrap a component that needs to interact with `Stripe.js`
+to create sources or tokens.
+
+1.  First, create a component that accepts the `stripe` prop and calls
+    `this.props.stripe.createToken` or `this.props.stripe.createSource` when
+    necessary.
+2.  Wrap that component by passing it to `injectStripe` so that it actually
+    receives the `stripe` prop.
+3.  Render the component that `injectStripe` returns.
+
+### Example
+
+```jsx
+// 1. Create a component that uses this.props.stripe:
+class CheckoutForm extends React.Component {
+  render() {
+    /* ... */
+  }
+  onCompleteCheckout() {
+    this.props.stripe.createSource({type: 'card'}).then(/* ... */);
+  }
+}
+
+// 2. Wrap it in a higher-order component that provides the `stripe` prop:
+const InjectedCheckoutForm = injectStripe(CheckoutForm);
+
+// 3. Render the wrapped component in your app:
+const CheckoutRoute = (props) => (
+  <div>
+    <InjectedCheckoutForm />
+  </div>
+);
+```
+
+`injectStripe` will work with any method of providing the actual Stripe instance
+with `StripeProvider`, whether you just give it an api key,
+[load Stripe.js asynchronously](#loading-stripejs-asynchronously), or
+[pass in an existing instance](#using-an-existing-stripe-instance).
+
+Within the context of `Elements`, `stripe.createToken` and `stripe.createSource`
+wrap methods of the same name in
+[Stripe.js](https://stripe.com/docs/stripe-js/reference#stripe-create-Token).
+Calls to them automatically infer and pass the `Element` object as the first
+argument.
+
+If the `withRef` option is set to `true`, the wrapped component instance will be
+available with the `getWrappedInstance()` method of the wrapper component. This
+feature can not be used if the wrapped component is a stateless function
+component.
+
+Within the wrapped component, the `stripe` prop has the type:
+
+```jsx
+type FactoryProps = {
+  stripe: null | {
+    createToken: (tokenData: {type?: string}) => Promise<{
+      token?: Object,
+      error?: Object,
+    }>,
+    createSource: (sourceData: {type: string}) => Promise<{
+      source?: Object,
+      error?: Object,
+    }>,
+    // and other functions available on the `stripe` object,
+    // as officially documented here: https://stripe.com/docs/elements/reference#the-stripe-object
+  },
+};
+```
+
+The `stripe` prop can only be `null` if you are using one of the
+[Advanced integrations](#advanced-integrations) mentioned above, like loading
+Stripe.js asynchronously or providing an existing instance. If you are using a
+basic integration where you pass in an api key to `<StripeProvider/>`, it will
+always be present.
+
+## Troubleshooting
+
+`react-stripe-elements` may not work properly when used with components that
+implement `shouldComponentUpdate`. `react-stripe-elements` relies heavily on
+React's `context` feature and `shouldComponentUpdate` does not provide a way to
+take context updates into account when deciding whether to allow a re-render.
+These components can block context updates from reaching `react-stripe-element`
+components in the tree.
+
+For example, when using `react-stripe-elements` together with
+[`react-redux`](https://github.com/reactjs/react-redux) doing the following will
+not work:
+
+```jsx
+const Component = connect()(injectStripe(_Component));
+```
+
+In this case, the context updates originating from the `StripeProvider` are not
+reaching the components wrapped inside the `connect` function. Therefore,
+`react-stripe-elements` components deeper in the tree break. The reason is that
+the `connect` function of `react-redux`
+[implements `shouldComponentUpdate`](https://github.com/reactjs/react-redux/blob/master/docs/troubleshooting.md#my-views-arent-updating-when-something-changes-outside-of-redux)
+and blocks re-renders that are triggered by context changes outside of the
+connected component.
+
+There are two ways to prevent this issue:
+
+1.  Change the order of the functions to have `injectStripe` be the outermost
+    one:
+
+    ```jsx
+    const Component = injectStripe(connect()(_CardForm));
+    ```
+
+This works, because `injectStripe` does not implement `shouldComponentUpdate`
+itself, so context updates originating from the `redux` `Provider` will still
+reach all components.
+
+2.  You can use the [`pure: false`][pure-false] option for redux-connect:
+
+    ```jsx
+    const Component = connect(
+      mapStateToProps,
+      mapDispatchToProps,
+      mergeProps,
+      {
+        pure: false,
+      }
+    )(injectStripe(_CardForm));
+    ```
+
+[pure-false]:
+  https://github.com/reactjs/react-redux/blob/master/docs/api.md#connectmapstatetoprops-mapdispatchtoprops-mergeprops-options
+
+## Development
+
+Install dependencies:
+
+    yarn install
+
+Run the demo:
+
+    yarn run demo
+
+Run the tests:
+
+    yarn run test
+
+Build:
+
+    yarn run build
+
+We use [prettier](https://github.com/prettier/prettier) for code formatting:
+
+    yarn run prettier
+
+To update the ToC in the README if any of the headers changed:
+
+    yarn run doctoc
+
+Checks:
+
+    yarn test
+    yarn run lint
+    yarn run flow
diff --git a/node_modules/react-stripe-elements/dist/react-stripe-elements.js b/node_modules/react-stripe-elements/dist/react-stripe-elements.js
new file mode 100644
index 00000000..a6a2d53a
--- /dev/null
+++ b/node_modules/react-stripe-elements/dist/react-stripe-elements.js
@@ -0,0 +1,1905 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+	if(typeof exports === 'object' && typeof module === 'object')
+		module.exports = factory(require("react"));
+	else if(typeof define === 'function' && define.amd)
+		define(["react"], factory);
+	else if(typeof exports === 'object')
+		exports["ReactStripeElements"] = factory(require("react"));
+	else
+		root["ReactStripeElements"] = factory(root["React"]);
+})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, {
+/******/ 				configurable: false,
+/******/ 				enumerable: true,
+/******/ 				get: getter
+/******/ 			});
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 8);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE_0__;
+
+/***/ }),
+/* 1 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/**
+ * Copyright 2013-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+if (true) {
+  var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&
+    Symbol.for &&
+    Symbol.for('react.element')) ||
+    0xeac7;
+
+  var isValidElement = function(object) {
+    return typeof object === 'object' &&
+      object !== null &&
+      object.$$typeof === REACT_ELEMENT_TYPE;
+  };
+
+  // By explicitly using `prop-types` you are opting into new development behavior.
+  // http://fb.me/prop-types-in-prod
+  var throwOnDirectAccess = true;
+  module.exports = __webpack_require__(9)(isValidElement, throwOnDirectAccess);
+} else {
+  // By explicitly using `prop-types` you are opting into new production behavior.
+  // http://fb.me/prop-types-in-prod
+  module.exports = require('./factoryWithThrowingShims')();
+}
+
+
+/***/ }),
+/* 2 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.elementContextTypes = exports.injectContextTypes = undefined;
+
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+
+var _react = __webpack_require__(0);
+
+var _react2 = _interopRequireDefault(_react);
+
+var _propTypes = __webpack_require__(1);
+
+var _propTypes2 = _interopRequireDefault(_propTypes);
+
+var _Provider = __webpack_require__(3);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
+
+function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var injectContextTypes = exports.injectContextTypes = {
+  getRegisteredElements: _propTypes2.default.func.isRequired
+};
+
+var elementContextTypes = exports.elementContextTypes = {
+  addElementsLoadListener: _propTypes2.default.func.isRequired,
+  registerElement: _propTypes2.default.func.isRequired,
+  unregisterElement: _propTypes2.default.func.isRequired
+};
+
+var Elements = function (_React$Component) {
+  _inherits(Elements, _React$Component);
+
+  function Elements(props, context) {
+    _classCallCheck(this, Elements);
+
+    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));
+
+    _this.handleRegisterElement = function (element, impliedTokenType, impliedSourceType) {
+      _this.setState(function (prevState) {
+        return {
+          registeredElements: [].concat(_toConsumableArray(prevState.registeredElements), [_extends({
+            element: element
+          }, impliedTokenType ? { impliedTokenType: impliedTokenType } : {}, impliedSourceType ? { impliedSourceType: impliedSourceType } : {})])
+        };
+      });
+    };
+
+    _this.handleUnregisterElement = function (el) {
+      _this.setState(function (prevState) {
+        return {
+          registeredElements: prevState.registeredElements.filter(function (_ref) {
+            var element = _ref.element;
+            return element !== el;
+          })
+        };
+      });
+    };
+
+    _this.state = {
+      registeredElements: []
+    };
+    return _this;
+  }
+
+  Elements.prototype.getChildContext = function getChildContext() {
+    var _this2 = this;
+
+    return {
+      addElementsLoadListener: function addElementsLoadListener(fn) {
+        // Return the existing elements instance if we already have one.
+        if (_this2._elements) {
+          fn(_this2._elements);
+          return;
+        }
+
+        var _props = _this2.props,
+            children = _props.children,
+            options = _objectWithoutProperties(_props, ['children']);
+
+        if (_this2.context.tag === 'sync') {
+          _this2._elements = _this2.context.stripe.elements(options);
+          fn(_this2._elements);
+        } else {
+          _this2.context.addStripeLoadListener(function (stripe) {
+            if (_this2._elements) {
+              fn(_this2._elements);
+            } else {
+              _this2._elements = stripe.elements(options);
+              fn(_this2._elements);
+            }
+          });
+        }
+      },
+      registerElement: this.handleRegisterElement,
+      unregisterElement: this.handleUnregisterElement,
+      getRegisteredElements: function getRegisteredElements() {
+        return _this2.state.registeredElements;
+      }
+    };
+  };
+
+  Elements.prototype.render = function render() {
+    return _react2.default.Children.only(this.props.children);
+  };
+
+  return Elements;
+}(_react2.default.Component);
+
+Elements.childContextTypes = _extends({}, injectContextTypes, elementContextTypes);
+Elements.contextTypes = _Provider.providerContextTypes;
+Elements.defaultProps = {
+  children: null
+};
+exports.default = Elements;
+
+/***/ }),
+/* 3 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.providerContextTypes = undefined;
+
+var _react = __webpack_require__(0);
+
+var _react2 = _interopRequireDefault(_react);
+
+var _propTypes = __webpack_require__(1);
+
+var _propTypes2 = _interopRequireDefault(_propTypes);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+// TODO(jez) 'sync' and 'async' are bad tag names.
+// TODO(jez) What if redux also uses this.context.tag?
+var providerContextTypes = exports.providerContextTypes = {
+  tag: _propTypes2.default.string.isRequired,
+  stripe: _propTypes2.default.object,
+  addStripeLoadListener: _propTypes2.default.func
+};
+
+var getOrCreateStripe = function getOrCreateStripe(apiKey, options) {
+  /**
+   * Note that this is not meant to be a generic memoization solution.
+   * This is specifically a solution for `StripeProvider`s being initialized
+   * and destroyed regularly (with the same set of props) when users only
+   * use `StripeProvider` for the subtree that contains their checkout form.
+   */
+  window.Stripe.__cachedInstances = window.Stripe.__cachedInstances || {};
+  var cacheKey = 'key=' + apiKey + ' options=' + JSON.stringify(options);
+
+  var stripe = window.Stripe.__cachedInstances[cacheKey] || window.Stripe(apiKey, options);
+  window.Stripe.__cachedInstances[cacheKey] = stripe;
+
+  return stripe;
+};
+
+var ensureStripeShape = function ensureStripeShape(stripe) {
+  if (stripe && stripe.elements && stripe.createSource && stripe.createToken) {
+    return stripe;
+  } else {
+    throw new Error("Please pass a valid Stripe object to StripeProvider. You can obtain a Stripe object by calling 'Stripe(...)' with your publishable key.");
+  }
+};
+
+var Provider = function (_React$Component) {
+  _inherits(Provider, _React$Component);
+
+  // on the other hand: childContextTypes is *required* to use context.
+  function Provider(props) {
+    _classCallCheck(this, Provider);
+
+    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));
+
+    if (_this.props.apiKey && _this.props.stripe) {
+      throw new Error("Please pass either 'apiKey' or 'stripe' to StripeProvider, not both.");
+    } else if (_this.props.apiKey) {
+      if (!window.Stripe) {
+        throw new Error("Please load Stripe.js (https://js.stripe.com/v3/) on this page to use react-stripe-elements. If Stripe.js isn't available yet (it's loading asynchronously, or you're using server-side rendering), see https://github.com/stripe/react-stripe-elements#advanced-integrations");
+      } else {
+        var _this$props = _this.props,
+            _apiKey = _this$props.apiKey,
+            _children = _this$props.children,
+            _stripe = _this$props.stripe,
+            options = _objectWithoutProperties(_this$props, ['apiKey', 'children', 'stripe']);
+
+        _this._meta = {
+          tag: 'sync',
+          stripe: getOrCreateStripe(_apiKey, options)
+        };
+      }
+    } else if (_this.props.stripe) {
+      // If we already have a stripe instance (in the constructor), we can behave synchronously.
+      _this._meta = {
+        tag: 'sync',
+        stripe: ensureStripeShape(_this.props.stripe)
+      };
+    } else if (_this.props.stripe === null) {
+      _this._meta = {
+        tag: 'async',
+        stripe: null
+      };
+    } else {
+      throw new Error("Please pass either 'apiKey' or 'stripe' to StripeProvider. If you're using 'stripe' but don't have a Stripe instance yet, pass 'null' explicitly.");
+    }
+
+    _this._didWarn = false;
+    _this._didWakeUpListeners = false;
+    _this._listeners = [];
+    return _this;
+  }
+  // Even though we're using flow, also use PropTypes so we can take advantage of developer warnings.
+
+
+  Provider.prototype.getChildContext = function getChildContext() {
+    var _this2 = this;
+
+    // getChildContext is run after the constructor, so we WILL have access to
+    // the initial state.
+    //
+    // However, context doesn't update in respnse to state changes like you
+    // might expect: context is pulled by the child, not pushed by the parent.
+    if (this._meta.tag === 'sync') {
+      return {
+        tag: 'sync',
+        stripe: this._meta.stripe
+      };
+    } else {
+      return {
+        tag: 'async',
+        addStripeLoadListener: function addStripeLoadListener(fn) {
+          if (_this2._meta.stripe) {
+            fn(_this2._meta.stripe);
+          } else {
+            _this2._listeners.push(fn);
+          }
+        }
+      };
+    }
+  };
+
+  Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
+    var apiKeyChanged = this.props.apiKey && nextProps.apiKey && this.props.apiKey !== nextProps.apiKey;
+
+    var stripeInstanceChanged = this.props.stripe && nextProps.stripe && this.props.stripe !== nextProps.stripe;
+    if (!this._didWarn && (apiKeyChanged || stripeInstanceChanged) && window.console && window.console.error) {
+      this._didWarn = true;
+      // eslint-disable-next-line no-console
+      console.error('StripeProvider does not support changing the apiKey parameter.');
+      return;
+    }
+
+    if (!this._didWakeUpListeners && nextProps.stripe) {
+      // Wake up the listeners if we've finally been given a StripeShape
+      this._didWakeUpListeners = true;
+      var _stripe2 = ensureStripeShape(nextProps.stripe);
+      this._meta.stripe = _stripe2;
+      this._listeners.forEach(function (fn) {
+        fn(_stripe2);
+      });
+    }
+  };
+
+  Provider.prototype.render = function render() {
+    return _react2.default.Children.only(this.props.children);
+  };
+
+  return Provider;
+}(_react2.default.Component);
+
+Provider.propTypes = {
+  apiKey: _propTypes2.default.string,
+  // PropTypes.object is the only way we can accept a Stripe instance
+  // eslint-disable-next-line react/forbid-prop-types
+  stripe: _propTypes2.default.object,
+  children: _propTypes2.default.node
+};
+Provider.childContextTypes = providerContextTypes;
+Provider.defaultProps = {
+  apiKey: undefined,
+  stripe: undefined,
+  children: null
+};
+exports.default = Provider;
+
+/***/ }),
+/* 4 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+/**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ * 
+ */
+
+function makeEmptyFunction(arg) {
+  return function () {
+    return arg;
+  };
+}
+
+/**
+ * This function accepts and discards inputs; it has no side effects. This is
+ * primarily useful idiomatically for overridable function endpoints which
+ * always need to be callable, since JS lacks a null-call idiom ala Cocoa.
+ */
+var emptyFunction = function emptyFunction() {};
+
+emptyFunction.thatReturns = makeEmptyFunction;
+emptyFunction.thatReturnsFalse = makeEmptyFunction(false);
+emptyFunction.thatReturnsTrue = makeEmptyFunction(true);
+emptyFunction.thatReturnsNull = makeEmptyFunction(null);
+emptyFunction.thatReturnsThis = function () {
+  return this;
+};
+emptyFunction.thatReturnsArgument = function (arg) {
+  return arg;
+};
+
+module.exports = emptyFunction;
+
+/***/ }),
+/* 5 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * Copyright (c) 2013-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ */
+
+
+
+/**
+ * Use invariant() to assert state which your program assumes to be true.
+ *
+ * Provide sprintf-style format (only %s is supported) and arguments
+ * to provide information about what broke and what you were
+ * expecting.
+ *
+ * The invariant message will be stripped in production, but the invariant
+ * will remain to ensure logic does not differ in production.
+ */
+
+var validateFormat = function validateFormat(format) {};
+
+if (true) {
+  validateFormat = function validateFormat(format) {
+    if (format === undefined) {
+      throw new Error('invariant requires an error message argument');
+    }
+  };
+}
+
+function invariant(condition, format, a, b, c, d, e, f) {
+  validateFormat(format);
+
+  if (!condition) {
+    var error;
+    if (format === undefined) {
+      error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');
+    } else {
+      var args = [a, b, c, d, e, f];
+      var argIndex = 0;
+      error = new Error(format.replace(/%s/g, function () {
+        return args[argIndex++];
+      }));
+      error.name = 'Invariant Violation';
+    }
+
+    error.framesToPop = 1; // we don't care about invariant's own frame
+    throw error;
+  }
+}
+
+module.exports = invariant;
+
+/***/ }),
+/* 6 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * Copyright 2014-2015, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ */
+
+
+
+var emptyFunction = __webpack_require__(4);
+
+/**
+ * Similar to invariant but only logs a warning if the condition is not met.
+ * This can be used to log issues in development environments in critical
+ * paths. Removing the logging code for production environments will keep the
+ * same logic and follow the same code paths.
+ */
+
+var warning = emptyFunction;
+
+if (true) {
+  (function () {
+    var printWarning = function printWarning(format) {
+      for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+        args[_key - 1] = arguments[_key];
+      }
+
+      var argIndex = 0;
+      var message = 'Warning: ' + format.replace(/%s/g, function () {
+        return args[argIndex++];
+      });
+      if (typeof console !== 'undefined') {
+        console.error(message);
+      }
+      try {
+        // --- Welcome to debugging React ---
+        // This error was thrown as a convenience so that you can use this stack
+        // to find the callsite that caused this warning to fire.
+        throw new Error(message);
+      } catch (x) {}
+    };
+
+    warning = function warning(condition, format) {
+      if (format === undefined) {
+        throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');
+      }
+
+      if (format.indexOf('Failed Composite propType: ') === 0) {
+        return; // Ignore CompositeComponent proptype check.
+      }
+
+      if (!condition) {
+        for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
+          args[_key2 - 2] = arguments[_key2];
+        }
+
+        printWarning.apply(undefined, [format].concat(args));
+      }
+    };
+  })();
+}
+
+module.exports = warning;
+
+/***/ }),
+/* 7 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * Copyright 2013-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+
+
+var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
+
+module.exports = ReactPropTypesSecret;
+
+
+/***/ }),
+/* 8 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.IdealBankElement = exports.IbanElement = exports.PaymentRequestButtonElement = exports.PostalCodeElement = exports.CardCVCElement = exports.CardExpiryElement = exports.CardNumberElement = exports.CardElement = exports.Elements = exports.injectStripe = exports.StripeProvider = undefined;
+
+var _Provider = __webpack_require__(3);
+
+var _Provider2 = _interopRequireDefault(_Provider);
+
+var _inject = __webpack_require__(11);
+
+var _inject2 = _interopRequireDefault(_inject);
+
+var _Elements = __webpack_require__(2);
+
+var _Elements2 = _interopRequireDefault(_Elements);
+
+var _Element = __webpack_require__(12);
+
+var _Element2 = _interopRequireDefault(_Element);
+
+var _PaymentRequestButtonElement = __webpack_require__(14);
+
+var _PaymentRequestButtonElement2 = _interopRequireDefault(_PaymentRequestButtonElement);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+// Define Elements, and register their implied token / source types for
+// automatic token / source creation.
+
+// Card
+var CardElement = (0, _Element2.default)('card', {
+  impliedTokenType: 'card',
+  impliedSourceType: 'card'
+});
+
+// Split Fields
+// Note: we only register the CardNumberElement for split fields so that we have
+// a unique Element to infer when calling `wrappedCreateToken` or `wrappedCreateSource`.
+
+var CardNumberElement = (0, _Element2.default)('cardNumber', {
+  impliedTokenType: 'card',
+  impliedSourceType: 'card'
+});
+var CardExpiryElement = (0, _Element2.default)('cardExpiry');
+var CardCVCElement = (0, _Element2.default)('cardCvc');
+var PostalCodeElement = (0, _Element2.default)('postalCode');
+
+// IBAN
+var IbanElement = (0, _Element2.default)('iban', {
+  impliedTokenType: 'bank_account',
+  impliedSourceType: 'sepa_debit'
+});
+
+// iDEAL Bank
+var IdealBankElement = (0, _Element2.default)('idealBank', { impliedSourceType: 'ideal' });
+
+exports.StripeProvider = _Provider2.default;
+exports.injectStripe = _inject2.default;
+exports.Elements = _Elements2.default;
+exports.CardElement = CardElement;
+exports.CardNumberElement = CardNumberElement;
+exports.CardExpiryElement = CardExpiryElement;
+exports.CardCVCElement = CardCVCElement;
+exports.PostalCodeElement = PostalCodeElement;
+exports.PaymentRequestButtonElement = _PaymentRequestButtonElement2.default;
+exports.IbanElement = IbanElement;
+exports.IdealBankElement = IdealBankElement;
+
+/***/ }),
+/* 9 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * Copyright 2013-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+
+
+var emptyFunction = __webpack_require__(4);
+var invariant = __webpack_require__(5);
+var warning = __webpack_require__(6);
+
+var ReactPropTypesSecret = __webpack_require__(7);
+var checkPropTypes = __webpack_require__(10);
+
+module.exports = function(isValidElement, throwOnDirectAccess) {
+  /* global Symbol */
+  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
+  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
+
+  /**
+   * Returns the iterator method function contained on the iterable object.
+   *
+   * Be sure to invoke the function with the iterable as context:
+   *
+   *     var iteratorFn = getIteratorFn(myIterable);
+   *     if (iteratorFn) {
+   *       var iterator = iteratorFn.call(myIterable);
+   *       ...
+   *     }
+   *
+   * @param {?object} maybeIterable
+   * @return {?function}
+   */
+  function getIteratorFn(maybeIterable) {
+    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
+    if (typeof iteratorFn === 'function') {
+      return iteratorFn;
+    }
+  }
+
+  /**
+   * Collection of methods that allow declaration and validation of props that are
+   * supplied to React components. Example usage:
+   *
+   *   var Props = require('ReactPropTypes');
+   *   var MyArticle = React.createClass({
+   *     propTypes: {
+   *       // An optional string prop named "description".
+   *       description: Props.string,
+   *
+   *       // A required enum prop named "category".
+   *       category: Props.oneOf(['News','Photos']).isRequired,
+   *
+   *       // A prop named "dialog" that requires an instance of Dialog.
+   *       dialog: Props.instanceOf(Dialog).isRequired
+   *     },
+   *     render: function() { ... }
+   *   });
+   *
+   * A more formal specification of how these methods are used:
+   *
+   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
+   *   decl := ReactPropTypes.{type}(.isRequired)?
+   *
+   * Each and every declaration produces a function with the same signature. This
+   * allows the creation of custom validation functions. For example:
+   *
+   *  var MyLink = React.createClass({
+   *    propTypes: {
+   *      // An optional string or URI prop named "href".
+   *      href: function(props, propName, componentName) {
+   *        var propValue = props[propName];
+   *        if (propValue != null && typeof propValue !== 'string' &&
+   *            !(propValue instanceof URI)) {
+   *          return new Error(
+   *            'Expected a string or an URI for ' + propName + ' in ' +
+   *            componentName
+   *          );
+   *        }
+   *      }
+   *    },
+   *    render: function() {...}
+   *  });
+   *
+   * @internal
+   */
+
+  var ANONYMOUS = '<<anonymous>>';
+
+  // Important!
+  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
+  var ReactPropTypes = {
+    array: createPrimitiveTypeChecker('array'),
+    bool: createPrimitiveTypeChecker('boolean'),
+    func: createPrimitiveTypeChecker('function'),
+    number: createPrimitiveTypeChecker('number'),
+    object: createPrimitiveTypeChecker('object'),
+    string: createPrimitiveTypeChecker('string'),
+    symbol: createPrimitiveTypeChecker('symbol'),
+
+    any: createAnyTypeChecker(),
+    arrayOf: createArrayOfTypeChecker,
+    element: createElementTypeChecker(),
+    instanceOf: createInstanceTypeChecker,
+    node: createNodeChecker(),
+    objectOf: createObjectOfTypeChecker,
+    oneOf: createEnumTypeChecker,
+    oneOfType: createUnionTypeChecker,
+    shape: createShapeTypeChecker
+  };
+
+  /**
+   * inlined Object.is polyfill to avoid requiring consumers ship their own
+   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
+   */
+  /*eslint-disable no-self-compare*/
+  function is(x, y) {
+    // SameValue algorithm
+    if (x === y) {
+      // Steps 1-5, 7-10
+      // Steps 6.b-6.e: +0 != -0
+      return x !== 0 || 1 / x === 1 / y;
+    } else {
+      // Step 6.a: NaN == NaN
+      return x !== x && y !== y;
+    }
+  }
+  /*eslint-enable no-self-compare*/
+
+  /**
+   * We use an Error-like object for backward compatibility as people may call
+   * PropTypes directly and inspect their output. However, we don't use real
+   * Errors anymore. We don't inspect their stack anyway, and creating them
+   * is prohibitively expensive if they are created too often, such as what
+   * happens in oneOfType() for any type before the one that matched.
+   */
+  function PropTypeError(message) {
+    this.message = message;
+    this.stack = '';
+  }
+  // Make `instanceof Error` still work for returned errors.
+  PropTypeError.prototype = Error.prototype;
+
+  function createChainableTypeChecker(validate) {
+    if (true) {
+      var manualPropTypeCallCache = {};
+      var manualPropTypeWarningCount = 0;
+    }
+    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
+      componentName = componentName || ANONYMOUS;
+      propFullName = propFullName || propName;
+
+      if (secret !== ReactPropTypesSecret) {
+        if (throwOnDirectAccess) {
+          // New behavior only for users of `prop-types` package
+          invariant(
+            false,
+            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
+            'Use `PropTypes.checkPropTypes()` to call them. ' +
+            'Read more at http://fb.me/use-check-prop-types'
+          );
+        } else if ("development" !== 'production' && typeof console !== 'undefined') {
+          // Old behavior for people using React.PropTypes
+          var cacheKey = componentName + ':' + propName;
+          if (
+            !manualPropTypeCallCache[cacheKey] &&
+            // Avoid spamming the console because they are often not actionable except for lib authors
+            manualPropTypeWarningCount < 3
+          ) {
+            warning(
+              false,
+              'You are manually calling a React.PropTypes validation ' +
+              'function for the `%s` prop on `%s`. This is deprecated ' +
+              'and will throw in the standalone `prop-types` package. ' +
+              'You may be seeing this warning due to a third-party PropTypes ' +
+              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',
+              propFullName,
+              componentName
+            );
+            manualPropTypeCallCache[cacheKey] = true;
+            manualPropTypeWarningCount++;
+          }
+        }
+      }
+      if (props[propName] == null) {
+        if (isRequired) {
+          if (props[propName] === null) {
+            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
+          }
+          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
+        }
+        return null;
+      } else {
+        return validate(props, propName, componentName, location, propFullName);
+      }
+    }
+
+    var chainedCheckType = checkType.bind(null, false);
+    chainedCheckType.isRequired = checkType.bind(null, true);
+
+    return chainedCheckType;
+  }
+
+  function createPrimitiveTypeChecker(expectedType) {
+    function validate(props, propName, componentName, location, propFullName, secret) {
+      var propValue = props[propName];
+      var propType = getPropType(propValue);
+      if (propType !== expectedType) {
+        // `propValue` being instance of, say, date/regexp, pass the 'object'
+        // check, but we can offer a more precise error message here rather than
+        // 'of type `object`'.
+        var preciseType = getPreciseType(propValue);
+
+        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
+      }
+      return null;
+    }
+    return createChainableTypeChecker(validate);
+  }
+
+  function createAnyTypeChecker() {
+    return createChainableTypeChecker(emptyFunction.thatReturnsNull);
+  }
+
+  function createArrayOfTypeChecker(typeChecker) {
+    function validate(props, propName, componentName, location, propFullName) {
+      if (typeof typeChecker !== 'function') {
+        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
+      }
+      var propValue = props[propName];
+      if (!Array.isArray(propValue)) {
+        var propType = getPropType(propValue);
+        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
+      }
+      for (var i = 0; i < propValue.length; i++) {
+        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
+        if (error instanceof Error) {
+          return error;
+        }
+      }
+      return null;
+    }
+    return createChainableTypeChecker(validate);
+  }
+
+  function createElementTypeChecker() {
+    function validate(props, propName, componentName, location, propFullName) {
+      var propValue = props[propName];
+      if (!isValidElement(propValue)) {
+        var propType = getPropType(propValue);
+        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
+      }
+      return null;
+    }
+    return createChainableTypeChecker(validate);
+  }
+
+  function createInstanceTypeChecker(expectedClass) {
+    function validate(props, propName, componentName, location, propFullName) {
+      if (!(props[propName] instanceof expectedClass)) {
+        var expectedClassName = expectedClass.name || ANONYMOUS;
+        var actualClassName = getClassName(props[propName]);
+        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
+      }
+      return null;
+    }
+    return createChainableTypeChecker(validate);
+  }
+
+  function createEnumTypeChecker(expectedValues) {
+    if (!Array.isArray(expectedValues)) {
+       true ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;
+      return emptyFunction.thatReturnsNull;
+    }
+
+    function validate(props, propName, componentName, location, propFullName) {
+      var propValue = props[propName];
+      for (var i = 0; i < expectedValues.length; i++) {
+        if (is(propValue, expectedValues[i])) {
+          return null;
+        }
+      }
+
+      var valuesString = JSON.stringify(expectedValues);
+      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
+    }
+    return createChainableTypeChecker(validate);
+  }
+
+  function createObjectOfTypeChecker(typeChecker) {
+    function validate(props, propName, componentName, location, propFullName) {
+      if (typeof typeChecker !== 'function') {
+        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
+      }
+      var propValue = props[propName];
+      var propType = getPropType(propValue);
+      if (propType !== 'object') {
+        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
+      }
+      for (var key in propValue) {
+        if (propValue.hasOwnProperty(key)) {
+          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
+          if (error instanceof Error) {
+            return error;
+          }
+        }
+      }
+      return null;
+    }
+    return createChainableTypeChecker(validate);
+  }
+
+  function createUnionTypeChecker(arrayOfTypeCheckers) {
+    if (!Array.isArray(arrayOfTypeCheckers)) {
+       true ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;
+      return emptyFunction.thatReturnsNull;
+    }
+
+    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
+      var checker = arrayOfTypeCheckers[i];
+      if (typeof checker !== 'function') {
+        warning(
+          false,
+          'Invalid argument supplid to oneOfType. Expected an array of check functions, but ' +
+          'received %s at index %s.',
+          getPostfixForTypeWarning(checker),
+          i
+        );
+        return emptyFunction.thatReturnsNull;
+      }
+    }
+
+    function validate(props, propName, componentName, location, propFullName) {
+      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
+        var checker = arrayOfTypeCheckers[i];
+        if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {
+          return null;
+        }
+      }
+
+      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
+    }
+    return createChainableTypeChecker(validate);
+  }
+
+  function createNodeChecker() {
+    function validate(props, propName, componentName, location, propFullName) {
+      if (!isNode(props[propName])) {
+        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
+      }
+      return null;
+    }
+    return createChainableTypeChecker(validate);
+  }
+
+  function createShapeTypeChecker(shapeTypes) {
+    function validate(props, propName, componentName, location, propFullName) {
+      var propValue = props[propName];
+      var propType = getPropType(propValue);
+      if (propType !== 'object') {
+        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
+      }
+      for (var key in shapeTypes) {
+        var checker = shapeTypes[key];
+        if (!checker) {
+          continue;
+        }
+        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
+        if (error) {
+          return error;
+        }
+      }
+      return null;
+    }
+    return createChainableTypeChecker(validate);
+  }
+
+  function isNode(propValue) {
+    switch (typeof propValue) {
+      case 'number':
+      case 'string':
+      case 'undefined':
+        return true;
+      case 'boolean':
+        return !propValue;
+      case 'object':
+        if (Array.isArray(propValue)) {
+          return propValue.every(isNode);
+        }
+        if (propValue === null || isValidElement(propValue)) {
+          return true;
+        }
+
+        var iteratorFn = getIteratorFn(propValue);
+        if (iteratorFn) {
+          var iterator = iteratorFn.call(propValue);
+          var step;
+          if (iteratorFn !== propValue.entries) {
+            while (!(step = iterator.next()).done) {
+              if (!isNode(step.value)) {
+                return false;
+              }
+            }
+          } else {
+            // Iterator will provide entry [k,v] tuples rather than values.
+            while (!(step = iterator.next()).done) {
+              var entry = step.value;
+              if (entry) {
+                if (!isNode(entry[1])) {
+                  return false;
+                }
+              }
+            }
+          }
+        } else {
+          return false;
+        }
+
+        return true;
+      default:
+        return false;
+    }
+  }
+
+  function isSymbol(propType, propValue) {
+    // Native Symbol.
+    if (propType === 'symbol') {
+      return true;
+    }
+
+    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
+    if (propValue['@@toStringTag'] === 'Symbol') {
+      return true;
+    }
+
+    // Fallback for non-spec compliant Symbols which are polyfilled.
+    if (typeof Symbol === 'function' && propValue instanceof Symbol) {
+      return true;
+    }
+
+    return false;
+  }
+
+  // Equivalent of `typeof` but with special handling for array and regexp.
+  function getPropType(propValue) {
+    var propType = typeof propValue;
+    if (Array.isArray(propValue)) {
+      return 'array';
+    }
+    if (propValue instanceof RegExp) {
+      // Old webkits (at least until Android 4.0) return 'function' rather than
+      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
+      // passes PropTypes.object.
+      return 'object';
+    }
+    if (isSymbol(propType, propValue)) {
+      return 'symbol';
+    }
+    return propType;
+  }
+
+  // This handles more types than `getPropType`. Only used for error messages.
+  // See `createPrimitiveTypeChecker`.
+  function getPreciseType(propValue) {
+    if (typeof propValue === 'undefined' || propValue === null) {
+      return '' + propValue;
+    }
+    var propType = getPropType(propValue);
+    if (propType === 'object') {
+      if (propValue instanceof Date) {
+        return 'date';
+      } else if (propValue instanceof RegExp) {
+        return 'regexp';
+      }
+    }
+    return propType;
+  }
+
+  // Returns a string that is postfixed to a warning about an invalid type.
+  // For example, "undefined" or "of type array"
+  function getPostfixForTypeWarning(value) {
+    var type = getPreciseType(value);
+    switch (type) {
+      case 'array':
+      case 'object':
+        return 'an ' + type;
+      case 'boolean':
+      case 'date':
+      case 'regexp':
+        return 'a ' + type;
+      default:
+        return type;
+    }
+  }
+
+  // Returns class name of the object, if any.
+  function getClassName(propValue) {
+    if (!propValue.constructor || !propValue.constructor.name) {
+      return ANONYMOUS;
+    }
+    return propValue.constructor.name;
+  }
+
+  ReactPropTypes.checkPropTypes = checkPropTypes;
+  ReactPropTypes.PropTypes = ReactPropTypes;
+
+  return ReactPropTypes;
+};
+
+
+/***/ }),
+/* 10 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/**
+ * Copyright 2013-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ */
+
+
+
+if (true) {
+  var invariant = __webpack_require__(5);
+  var warning = __webpack_require__(6);
+  var ReactPropTypesSecret = __webpack_require__(7);
+  var loggedTypeFailures = {};
+}
+
+/**
+ * Assert that the values match with the type specs.
+ * Error messages are memorized and will only be shown once.
+ *
+ * @param {object} typeSpecs Map of name to a ReactPropType
+ * @param {object} values Runtime values that need to be type-checked
+ * @param {string} location e.g. "prop", "context", "child context"
+ * @param {string} componentName Name of the component for error messages.
+ * @param {?Function} getStack Returns the component stack.
+ * @private
+ */
+function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
+  if (true) {
+    for (var typeSpecName in typeSpecs) {
+      if (typeSpecs.hasOwnProperty(typeSpecName)) {
+        var error;
+        // Prop type validation may throw. In case they do, we don't want to
+        // fail the render phase where it didn't fail before. So we log it.
+        // After these have been cleaned up, we'll let them throw.
+        try {
+          // This is intentionally an invariant that gets caught. It's the same
+          // behavior as without this statement except with a better message.
+          invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName);
+          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
+        } catch (ex) {
+          error = ex;
+        }
+        warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);
+        if (error instanceof Error && !(error.message in loggedTypeFailures)) {
+          // Only monitor this failure once because there tends to be a lot of the
+          // same error.
+          loggedTypeFailures[error.message] = true;
+
+          var stack = getStack ? getStack() : '';
+
+          warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');
+        }
+      }
+    }
+  }
+}
+
+module.exports = checkPropTypes;
+
+
+/***/ }),
+/* 11 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+var _react = __webpack_require__(0);
+
+var _react2 = _interopRequireDefault(_react);
+
+var _Elements = __webpack_require__(2);
+
+var _Provider = __webpack_require__(3);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+// react-redux does a bunch of stuff with pure components / checking if it needs to re-render.
+// not sure if we need to do the same.
+var inject = function inject(WrappedComponent) {
+  var _class, _temp;
+
+  var componentOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  var _componentOptions$wit = componentOptions.withRef,
+      withRef = _componentOptions$wit === undefined ? false : _componentOptions$wit;
+
+
+  return _temp = _class = function (_React$Component) {
+    _inherits(_class, _React$Component);
+
+    function _class(props, context) {
+      _classCallCheck(this, _class);
+
+      if (!context || !context.getRegisteredElements) {
+        throw new Error('It looks like you are trying to inject Stripe context outside of an Elements context.\nPlease be sure the component that calls createSource or createToken is within an <Elements> component.');
+      }
+
+      var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));
+
+      _this.findElement = function (filterBy, specifiedType) {
+        var allElements = _this.context.getRegisteredElements();
+        var filteredElements = allElements.filter(function (e) {
+          return e[filterBy];
+        });
+        var matchingElements = specifiedType === 'auto' ? filteredElements : filteredElements.filter(function (e) {
+          return e[filterBy] === specifiedType;
+        });
+
+        if (matchingElements.length === 1) {
+          return matchingElements[0].element;
+        } else if (matchingElements.length > 1) {
+          throw new Error('You did not specify the type of Source or Token to create.\n        We could not infer which Element you want to use for this operation.');
+        } else {
+          return null;
+        }
+      };
+
+      _this.requireElement = function (filterBy, specifiedType) {
+        var element = _this.findElement(filterBy, specifiedType);
+        if (element) {
+          return element;
+        } else {
+          throw new Error('You did not specify the type of Source or Token to create.\n        We could not infer which Element you want to use for this operation.');
+        }
+      };
+
+      _this.wrappedCreateToken = function (stripe) {
+        return function () {
+          var tokenTypeOrOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+          var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+          if (tokenTypeOrOptions && (typeof tokenTypeOrOptions === 'undefined' ? 'undefined' : _typeof(tokenTypeOrOptions)) === 'object') {
+            // First argument is options; infer the Element and tokenize
+            var opts = tokenTypeOrOptions;
+
+            var tokenType = opts.type,
+                rest = _objectWithoutProperties(opts, ['type']);
+
+            var specifiedType = typeof tokenType === 'string' ? tokenType : 'auto';
+            // Since only options were passed in, a corresponding Element must exist
+            // for the tokenization to succeed -- thus we call requireElement.
+            var element = _this.requireElement('impliedTokenType', specifiedType);
+            return stripe.createToken(element, rest);
+          } else if (typeof tokenTypeOrOptions === 'string') {
+            // First argument is token type; tokenize with token type and options
+            var _tokenType = tokenTypeOrOptions;
+            return stripe.createToken(_tokenType, options);
+          } else {
+            // If a bad value was passed in for options, throw an error.
+            throw new Error('Invalid options passed to createToken. Expected an object, got ' + (typeof tokenTypeOrOptions === 'undefined' ? 'undefined' : _typeof(tokenTypeOrOptions)) + '.');
+          }
+        };
+      };
+
+      _this.wrappedCreateSource = function (stripe) {
+        return function () {
+          var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+
+          if (options && (typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {
+            if (typeof options.type !== 'string') {
+              throw new Error('Invalid Source type passed to createSource. Expected string, got ' + _typeof(options.type) + '.');
+            }
+
+            var element = _this.findElement('impliedSourceType', options.type);
+            if (element) {
+              // If an Element exists for the source type, use that to create the
+              // corresponding source.
+              //
+              // NOTE: this prevents users from independently creating sources of
+              // type `foo` if an Element that can create `foo` sources exists in
+              // the current <Elements /> context.
+              return stripe.createSource(element, options);
+            } else {
+              // If no Element exists for the source type, directly create a source.
+              return stripe.createSource(options);
+            }
+          } else {
+            // If a bad value was passed in for options, throw an error.
+            throw new Error('Invalid options passed to createSource. Expected an object, got ' + (typeof options === 'undefined' ? 'undefined' : _typeof(options)) + '.');
+          }
+        };
+      };
+
+      if (_this.context.tag === 'sync') {
+        _this.state = {
+          stripe: _this.stripeProps(_this.context.stripe)
+        };
+      } else {
+        _this.state = {
+          stripe: null
+        };
+      }
+      return _this;
+    }
+
+    _class.prototype.componentDidMount = function componentDidMount() {
+      var _this2 = this;
+
+      if (this.context.tag === 'async') {
+        this.context.addStripeLoadListener(function (stripe) {
+          _this2.setState({
+            stripe: _this2.stripeProps(stripe)
+          });
+        });
+      } else {
+        // when 'sync', it's already set in the constructor.
+      }
+    };
+
+    _class.prototype.getWrappedInstance = function getWrappedInstance() {
+      if (!withRef) {
+        throw new Error('To access the wrapped instance, the `{withRef: true}` option must be set when calling `injectStripe()`');
+      }
+      return this.wrappedInstance;
+    };
+
+    _class.prototype.stripeProps = function stripeProps(stripe) {
+      return _extends({}, stripe, {
+        // These are the only functions that take elements.
+        createToken: this.wrappedCreateToken(stripe),
+        createSource: this.wrappedCreateSource(stripe)
+      });
+    };
+
+    // Finds an Element by the specified type, if one exists.
+    // Throws if multiple Elements match.
+
+
+    // Require that exactly one Element is found for the specified type.
+    // Throws if no Element is found.
+
+
+    // Wraps createToken in order to infer the Element that is being tokenized.
+
+
+    // Wraps createSource in order to infer the Element that is being used for
+    // source creation.
+
+
+    _class.prototype.render = function render() {
+      var _this3 = this;
+
+      return _react2.default.createElement(WrappedComponent, _extends({}, this.props, {
+        stripe: this.state.stripe,
+        ref: withRef ? function (c) {
+          _this3.wrappedInstance = c;
+        } : null
+      }));
+    };
+
+    return _class;
+  }(_react2.default.Component), _class.contextTypes = _extends({}, _Provider.providerContextTypes, _Elements.injectContextTypes), _class.displayName = 'InjectStripe(' + (WrappedComponent.displayName || WrappedComponent.name || 'Component') + ')', _temp;
+};
+
+exports.default = inject;
+
+/***/ }),
+/* 12 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _react = __webpack_require__(0);
+
+var _react2 = _interopRequireDefault(_react);
+
+var _propTypes = __webpack_require__(1);
+
+var _propTypes2 = _interopRequireDefault(_propTypes);
+
+var _isEqual = __webpack_require__(13);
+
+var _isEqual2 = _interopRequireDefault(_isEqual);
+
+var _Elements = __webpack_require__(2);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
+
+var noop = function noop() {};
+
+var _extractOptions = function _extractOptions(props) {
+  var id = props.id,
+      className = props.className,
+      onChange = props.onChange,
+      onFocus = props.onFocus,
+      onBlur = props.onBlur,
+      onReady = props.onReady,
+      options = _objectWithoutProperties(props, ['id', 'className', 'onChange', 'onFocus', 'onBlur', 'onReady']);
+
+  return options;
+};
+
+var capitalized = function capitalized(str) {
+  return str.charAt(0).toUpperCase() + str.slice(1);
+};
+
+var Element = function Element(type) {
+  var _class, _temp;
+
+  var hocOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  return _temp = _class = function (_React$Component) {
+    _inherits(_class, _React$Component);
+
+    function _class(props, context) {
+      _classCallCheck(this, _class);
+
+      var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));
+
+      _this.handleRef = function (ref) {
+        _this._ref = ref;
+      };
+
+      _this._element = null;
+
+      var options = _extractOptions(_this.props);
+      // We keep track of the extracted options on this._options to avoid re-rendering.
+      // (We would unnecessarily re-render if we were tracking them with state.)
+      _this._options = options;
+      return _this;
+    }
+
+    _class.prototype.componentDidMount = function componentDidMount() {
+      var _this2 = this;
+
+      this.context.addElementsLoadListener(function (elements) {
+        var element = elements.create(type, _this2._options);
+        _this2._element = element;
+
+        _this2._setupEventListeners(element);
+
+        element.mount(_this2._ref);
+
+        // Register Element for automatic token / source creation
+        if (hocOptions.impliedTokenType || hocOptions.impliedSourceType) {
+          _this2.context.registerElement(element, hocOptions.impliedTokenType, hocOptions.impliedSourceType);
+        }
+      });
+    };
+
+    _class.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
+      var options = _extractOptions(nextProps);
+      if (Object.keys(options).length !== 0 && !(0, _isEqual2.default)(options, this._options)) {
+        this._options = options;
+        if (this._element) {
+          this._element.update(options);
+        }
+      }
+    };
+
+    _class.prototype.componentWillUnmount = function componentWillUnmount() {
+      if (this._element) {
+        var element = this._element;
+        element.destroy();
+        this.context.unregisterElement(element);
+      }
+    };
+
+    _class.prototype._setupEventListeners = function _setupEventListeners(element) {
+      var _this3 = this;
+
+      element.on('ready', function () {
+        _this3.props.onReady(_this3._element);
+      });
+
+      element.on('change', function (change) {
+        _this3.props.onChange(change);
+      });
+
+      element.on('blur', function () {
+        var _props;
+
+        return (_props = _this3.props).onBlur.apply(_props, arguments);
+      });
+      element.on('focus', function () {
+        var _props2;
+
+        return (_props2 = _this3.props).onFocus.apply(_props2, arguments);
+      });
+    };
+
+    _class.prototype.render = function render() {
+      return _react2.default.createElement('div', {
+        id: this.props.id,
+        className: this.props.className,
+        ref: this.handleRef
+      });
+    };
+
+    return _class;
+  }(_react2.default.Component), _class.propTypes = {
+    id: _propTypes2.default.string,
+    className: _propTypes2.default.string,
+    onChange: _propTypes2.default.func,
+    onBlur: _propTypes2.default.func,
+    onFocus: _propTypes2.default.func,
+    onReady: _propTypes2.default.func
+  }, _class.defaultProps = {
+    id: undefined,
+    className: undefined,
+    onChange: noop,
+    onBlur: noop,
+    onFocus: noop,
+    onReady: noop
+  }, _class.contextTypes = _Elements.elementContextTypes, _class.displayName = capitalized(type) + 'Element', _temp;
+};
+
+exports.default = Element;
+
+/***/ }),
+/* 13 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+var PLAIN_OBJECT_STR = '[object Object]';
+
+var isEqual = function isEqual(left, right) {
+  if ((typeof left === 'undefined' ? 'undefined' : _typeof(left)) !== 'object' || (typeof right === 'undefined' ? 'undefined' : _typeof(right)) !== 'object') {
+    return left === right;
+  }
+
+  if (left === null || right === null) return left === right;
+
+  var leftArray = Array.isArray(left);
+  var rightArray = Array.isArray(right);
+
+  if (leftArray !== rightArray) return false;
+
+  var leftPlainObject = Object.prototype.toString.call(left) === PLAIN_OBJECT_STR;
+  var rightPlainObject = Object.prototype.toString.call(right) === PLAIN_OBJECT_STR;
+
+  if (leftPlainObject !== rightPlainObject) return false;
+
+  if (!leftPlainObject && !leftArray) return false;
+
+  var leftKeys = Object.keys(left);
+  var rightKeys = Object.keys(right);
+
+  if (leftKeys.length !== rightKeys.length) return false;
+
+  var keySet = {};
+  for (var i = 0; i < leftKeys.length; i += 1) {
+    keySet[leftKeys[i]] = true;
+  }
+  for (var _i = 0; _i < rightKeys.length; _i += 1) {
+    keySet[rightKeys[_i]] = true;
+  }
+  var allKeys = Object.keys(keySet);
+  if (allKeys.length !== leftKeys.length) {
+    return false;
+  }
+
+  var l = left;
+  var r = right;
+  var pred = function pred(key) {
+    return isEqual(l[key], r[key]);
+  };
+
+  return allKeys.every(pred);
+};
+
+exports.default = isEqual;
+
+/***/ }),
+/* 14 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+
+var _react = __webpack_require__(0);
+
+var _react2 = _interopRequireDefault(_react);
+
+var _propTypes = __webpack_require__(1);
+
+var _propTypes2 = _interopRequireDefault(_propTypes);
+
+var _shallowEqual = __webpack_require__(15);
+
+var _shallowEqual2 = _interopRequireDefault(_shallowEqual);
+
+var _Elements = __webpack_require__(2);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
+
+var noop = function noop() {};
+
+var _extractOptions = function _extractOptions(props) {
+  var id = props.id,
+      className = props.className,
+      onBlur = props.onBlur,
+      onClick = props.onClick,
+      onFocus = props.onFocus,
+      onReady = props.onReady,
+      paymentRequest = props.paymentRequest,
+      options = _objectWithoutProperties(props, ['id', 'className', 'onBlur', 'onClick', 'onFocus', 'onReady', 'paymentRequest']);
+
+  return options;
+};
+
+var PaymentRequestButtonElement = function (_React$Component) {
+  _inherits(PaymentRequestButtonElement, _React$Component);
+
+  function PaymentRequestButtonElement(props, context) {
+    _classCallCheck(this, PaymentRequestButtonElement);
+
+    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));
+
+    _this.handleRef = function (ref) {
+      _this._ref = ref;
+    };
+
+    var options = _extractOptions(props);
+    // We keep track of the extracted options on this._options to avoid re-rendering.
+    // (We would unnecessarily re-render if we were tracking them with state.)
+    _this._options = options;
+    return _this;
+  }
+
+  PaymentRequestButtonElement.prototype.componentDidMount = function componentDidMount() {
+    var _this2 = this;
+
+    this.context.addElementsLoadListener(function (elements) {
+      _this2._element = elements.create('paymentRequestButton', _extends({
+        paymentRequest: _this2.props.paymentRequest
+      }, _this2._options));
+      _this2._element.on('ready', function () {
+        _this2.props.onReady(_this2._element);
+      });
+      _this2._element.on('focus', function () {
+        var _props;
+
+        return (_props = _this2.props).onFocus.apply(_props, arguments);
+      });
+      _this2._element.on('click', function () {
+        var _props2;
+
+        return (_props2 = _this2.props).onClick.apply(_props2, arguments);
+      });
+      _this2._element.on('blur', function () {
+        var _props3;
+
+        return (_props3 = _this2.props).onBlur.apply(_props3, arguments);
+      });
+      _this2._element.mount(_this2._ref);
+    });
+  };
+
+  PaymentRequestButtonElement.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
+    if (this.props.paymentRequest !== nextProps.paymentRequest) {
+      console.warn('Unsupported prop change: paymentRequest is not a customizable property.');
+    }
+    var options = _extractOptions(nextProps);
+    if (Object.keys(options).length !== 0 && !(0, _shallowEqual2.default)(options, this._options)) {
+      this._options = options;
+      this._element.update(options);
+    }
+  };
+
+  PaymentRequestButtonElement.prototype.componentWillUnmount = function componentWillUnmount() {
+    this._element.destroy();
+  };
+
+  PaymentRequestButtonElement.prototype.render = function render() {
+    return _react2.default.createElement('div', {
+      id: this.props.id,
+      className: this.props.className,
+      ref: this.handleRef
+    });
+  };
+
+  return PaymentRequestButtonElement;
+}(_react2.default.Component);
+
+PaymentRequestButtonElement.propTypes = {
+  id: _propTypes2.default.string,
+  className: _propTypes2.default.string,
+  onBlur: _propTypes2.default.func,
+  onClick: _propTypes2.default.func,
+  onFocus: _propTypes2.default.func,
+  onReady: _propTypes2.default.func,
+  paymentRequest: _propTypes2.default.shape({
+    canMakePayment: _propTypes2.default.func.isRequired,
+    on: _propTypes2.default.func.isRequired,
+    show: _propTypes2.default.func.isRequired
+  }).isRequired
+};
+PaymentRequestButtonElement.defaultProps = {
+  id: undefined,
+  className: undefined,
+  onBlur: noop,
+  onClick: noop,
+  onFocus: noop,
+  onReady: noop
+};
+PaymentRequestButtonElement.contextTypes = _Elements.elementContextTypes;
+exports.default = PaymentRequestButtonElement;
+
+/***/ }),
+/* 15 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+var shallowEqual = function shallowEqual(a, b) {
+  var keysA = Object.keys(a);
+  var keysB = Object.keys(b);
+
+  return keysA.length === keysB.length && keysA.every(function (key) {
+    return b.hasOwnProperty(key) && b[key] === a[key];
+  });
+};
+
+exports.default = shallowEqual;
+
+/***/ })
+/******/ ]);
+});
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/dist/react-stripe-elements.min.js b/node_modules/react-stripe-elements/dist/react-stripe-elements.min.js
new file mode 100644
index 00000000..93b8bb30
--- /dev/null
+++ b/node_modules/react-stripe-elements/dist/react-stripe-elements.min.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.ReactStripeElements=t(require("react")):e.ReactStripeElements=t(e.React)}(this,function(e){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=4)}([function(t,n){t.exports=e},function(e,t,n){e.exports=n(5)()},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n={};for(var r in e)0>t.indexOf(r)&&Object.prototype.hasOwnProperty.call(e,r)&&(
 n[r]=e[r]);return n}function i(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);e.length>t;t++)n[t]=e[t];return n}return Array.from(e)}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0}),t.elementContextTypes=t.injectContextTypes=void 0;var p=Object.assign||function(e){for(var t=1;arguments.length>t;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},c=n(0),l=r(c),f=n(
 1),d=r(f),y=n(3),h=t.injectContextTypes={getRegisteredElements:d.default.func.isRequired},m=t.elementContextTypes={addElementsLoadListener:d.default.func.isRequired,registerElement:d.default.func.isRequired,unregisterElement:d.default.func.isRequired},v=function(e){function t(n,r){s(this,t);var o=a(this,e.call(this,n,r));return o.handleRegisterElement=function(e,t,n){o.setState(function(r){return{registeredElements:[].concat(i(r.registeredElements),[p({element:e},t?{impliedTokenType:t}:{},n?{impliedSourceType:n}:{})])}})},o.handleUnregisterElement=function(e){o.setState(function(t){return{registeredElements:t.registeredElements.filter(function(t){return t.element!==e})}})},o.state={registeredElements:[]},o}return u(t,e),t.prototype.getChildContext=function(){var e=this;return{addElementsLoadListener:function(t){if(e._elements)return void t(e._elements);var n=e.props,r=o(n,["children"]);"sync"===e.context.tag?(e._elements=e.context.stripe.elements(r),t(e._elements)):e.context.addStri
 peLoadListener(function(n){e._elements?t(e._elements):(e._elements=n.elements(r),t(e._elements))})},registerElement:this.handleRegisterElement,unregisterElement:this.handleUnregisterElement,getRegisteredElements:function(){return e.state.registeredElements}}},t.prototype.render=function(){return l.default.Children.only(this.props.children)},t}(l.default.Component);v.childContextTypes=p({},h,m),v.contextTypes=y.providerContextTypes,v.defaultProps={children:null},t.default=v},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n={};for(var r in e)0>t.indexOf(r)&&Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new T
 ypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0}),t.providerContextTypes=void 0;var u=n(0),p=r(u),c=n(1),l=r(c),f=t.providerContextTypes={tag:l.default.string.isRequired,stripe:l.default.object,addStripeLoadListener:l.default.func},d=function(e,t){window.Stripe.__cachedInstances=window.Stripe.__cachedInstances||{};var n="key="+e+" options="+JSON.stringify(t),r=window.Stripe.__cachedInstances[n]||window.Stripe(e,t);return window.Stripe.__cachedInstances[n]=r,r},y=function(e){if(e&&e.elements&&e.createSource&&e.createToken)return e;throw Error("Please pass a valid Stripe object to StripeProvider. You can obtain a Stripe object by calling 'Stripe(...)' with your publishable key.")},h=function(e){function t(n){i(this,t);var r=s(this,e.cal
 l(this,n));if(r.props.apiKey&&r.props.stripe)throw Error("Please pass either 'apiKey' or 'stripe' to StripeProvider, not both.");if(r.props.apiKey){if(!window.Stripe)throw Error("Please load Stripe.js (https://js.stripe.com/v3/) on this page to use react-stripe-elements. If Stripe.js isn't available yet (it's loading asynchronously, or you're using server-side rendering), see https://github.com/stripe/react-stripe-elements#advanced-integrations");var a=r.props,u=a.apiKey,p=o(a,["apiKey","children","stripe"]);r._meta={tag:"sync",stripe:d(u,p)}}else if(r.props.stripe)r._meta={tag:"sync",stripe:y(r.props.stripe)};else{if(null!==r.props.stripe)throw Error("Please pass either 'apiKey' or 'stripe' to StripeProvider. If you're using 'stripe' but don't have a Stripe instance yet, pass 'null' explicitly.");r._meta={tag:"async",stripe:null}}return r._didWarn=!1,r._didWakeUpListeners=!1,r._listeners=[],r}return a(t,e),t.prototype.getChildContext=function(){var e=this;return"sync"===this._meta.
 tag?{tag:"sync",stripe:this._meta.stripe}:{tag:"async",addStripeLoadListener:function(t){e._meta.stripe?t(e._meta.stripe):e._listeners.push(t)}}},t.prototype.componentWillReceiveProps=function(e){var t=this.props.apiKey&&e.apiKey&&this.props.apiKey!==e.apiKey,n=this.props.stripe&&e.stripe&&this.props.stripe!==e.stripe;if(!this._didWarn&&(t||n)&&window.console&&window.console.error)return this._didWarn=!0,void console.error("StripeProvider does not support changing the apiKey parameter.");if(!this._didWakeUpListeners&&e.stripe){this._didWakeUpListeners=!0;var r=y(e.stripe);this._meta.stripe=r,this._listeners.forEach(function(e){e(r)})}},t.prototype.render=function(){return p.default.Children.only(this.props.children)},t}(p.default.Component);h.propTypes={apiKey:l.default.string,stripe:l.default.object,children:l.default.node},h.childContextTypes=f,h.defaultProps={apiKey:void 0,stripe:void 0,children:null},t.default=h},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?
 e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.IdealBankElement=t.IbanElement=t.PaymentRequestButtonElement=t.PostalCodeElement=t.CardCVCElement=t.CardExpiryElement=t.CardNumberElement=t.CardElement=t.Elements=t.injectStripe=t.StripeProvider=void 0;var o=n(3),i=r(o),s=n(9),a=r(s),u=n(2),p=r(u),c=n(10),l=r(c),f=n(12),d=r(f),y=(0,l.default)("card",{impliedTokenType:"card",impliedSourceType:"card"}),h=(0,l.default)("cardNumber",{impliedTokenType:"card",impliedSourceType:"card"}),m=(0,l.default)("cardExpiry"),v=(0,l.default)("cardCvc"),b=(0,l.default)("postalCode"),_=(0,l.default)("iban",{impliedTokenType:"bank_account",impliedSourceType:"sepa_debit"}),g=(0,l.default)("idealBank",{impliedSourceType:"ideal"});t.StripeProvider=i.default,t.injectStripe=a.default,t.Elements=p.default,t.CardElement=y,t.CardNumberElement=h,t.CardExpiryElement=m,t.CardCVCElement=v,t.PostalCodeElement=b,t.PaymentRequestButtonElement=d.default,t.IbanElement=_,t.IdealBankElement=g},function(e,t,
 n){"use strict";var r=n(6),o=n(7),i=n(8);e.exports=function(){function e(e,t,n,r,s,a){a!==i&&o(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types")}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t};return n.checkPropTypes=r,n.PropTypes=n,n}},function(e,t,n){"use strict";function r(e){return function(){return e}}var o=function(){};o.thatReturns=r,o.thatReturnsFalse=r(!1),o.thatReturnsTrue=r(!0),o.thatReturnsNull=r(null),o.thatReturnsThis=function(){return this},o.thatReturnsArgument=function(e){return e},e.exports=o},function(e,t,n){"use strict";function r(e,t,n,r,i,s,a,u){if(o(t),!e){var p;if(void 0===t)p=Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional he
 lpful warnings.");else{var c=[n,r,i,s,a,u],l=0;p=Error(t.replace(/%s/g,function(){return c[l++]})),p.name="Invariant Violation"}throw p.framesToPop=1,p}}var o=function(e){};e.exports=r},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";function r(e,t){var n={};for(var r in e)0>t.indexOf(r)&&Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Obj
 ect.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;arguments.length>t;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p=n(0),c=function(e){return e&&e.__esModule?e:{default:e}}(p),l=n(2),f=n(3);t.default=function(e){var t,n,p=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},d=p.withRef,y=void 0!==d&&d;return n=t=function(t){function n(e,s){if(o(this,n),!s||!s.getRegisteredElements)throw Error("It looks like you are trying to inject Stripe context outside of an Elements context.\nPlease be sure the component that calls createSource or createToken is within an <Elements> component.");var a=i(this,t.call(this,e,s));return a.findElement=function(e,t){var n=a.context.getRegisteredElem
 ents(),r=n.filter(function(t){return t[e]}),o="auto"===t?r:r.filter(function(n){return n[e]===t});if(1===o.length)return o[0].element;if(o.length>1)throw Error("You did not specify the type of Source or Token to create.\n        We could not infer which Element you want to use for this operation.");return null},a.requireElement=function(e,t){var n=a.findElement(e,t);if(n)return n;throw Error("You did not specify the type of Source or Token to create.\n        We could not infer which Element you want to use for this operation.")},a.wrappedCreateToken=function(e){return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t&&"object"===(void 0===t?"undefined":u(t))){var o=t,i=o.type,s=r(o,["type"]),p="string"==typeof i?i:"auto",c=a.requireElement("impliedTokenType",p);return e.createToken(c,s)}if("string"==typeof t){return e.createToken(t,n)}throw Error("Invalid options passed to createToken. Expecte
 d an object, got "+(void 0===t?"undefined":u(t))+".")}},a.wrappedCreateSource=function(e){return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t&&"object"===(void 0===t?"undefined":u(t))){if("string"!=typeof t.type)throw Error("Invalid Source type passed to createSource. Expected string, got "+u(t.type)+".");var n=a.findElement("impliedSourceType",t.type);return n?e.createSource(n,t):e.createSource(t)}throw Error("Invalid options passed to createSource. Expected an object, got "+(void 0===t?"undefined":u(t))+".")}},a.state="sync"===a.context.tag?{stripe:a.stripeProps(a.context.stripe)}:{stripe:null},a}return s(n,t),n.prototype.componentDidMount=function(){var e=this;"async"===this.context.tag&&this.context.addStripeLoadListener(function(t){e.setState({stripe:e.stripeProps(t)})})},n.prototype.getWrappedInstance=function(){if(!y)throw Error("To access the wrapped instance, the `{withRef: true}` option must be set when calling `injectStripe()`");return t
 his.wrappedInstance},n.prototype.stripeProps=function(e){return a({},e,{createToken:this.wrappedCreateToken(e),createSource:this.wrappedCreateSource(e)})},n.prototype.render=function(){var t=this;return c.default.createElement(e,a({},this.props,{stripe:this.state.stripe,ref:y?function(e){t.wrappedInstance=e}:null}))},n}(c.default.Component),t.contextTypes=a({},f.providerContextTypes,l.injectContextTypes),t.displayName="InjectStripe("+(e.displayName||e.name||"Component")+")",n}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototy
 pe,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function a(e,t){var n={};for(var r in e)0>t.indexOf(r)&&Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var u=n(0),p=r(u),c=n(1),l=r(c),f=n(11),d=r(f),y=n(2),h=function(){},m=function(e){return a(e,["id","className","onChange","onFocus","onBlur","onReady"])},v=function(e){return e.charAt(0).toUpperCase()+e.slice(1)};t.default=function(e){var t,n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return n=t=function(t){function n(e,r){o(this,n);var s=i(this,t.call(this,e,r));s.handleRef=function(e){s._ref=e},s._element=null;var a=m(s.props);return s._options=a,s}return s(n,t),n.prototype.componentDidMount=function(){var t=this;this.context.addElementsLoadListener(function(n){var o=n.create(e,t._options);t._element=o,t._setupEventListeners(o),o.mount(t._ref),(r.impliedTokenTyp
 e||r.impliedSourceType)&&t.context.registerElement(o,r.impliedTokenType,r.impliedSourceType)})},n.prototype.componentWillReceiveProps=function(e){var t=m(e);0===Object.keys(t).length||(0,d.default)(t,this._options)||(this._options=t,this._element&&this._element.update(t))},n.prototype.componentWillUnmount=function(){if(this._element){var e=this._element;e.destroy(),this.context.unregisterElement(e)}},n.prototype._setupEventListeners=function(e){var t=this;e.on("ready",function(){t.props.onReady(t._element)}),e.on("change",function(e){t.props.onChange(e)}),e.on("blur",function(){var e;return(e=t.props).onBlur.apply(e,arguments)}),e.on("focus",function(){var e;return(e=t.props).onFocus.apply(e,arguments)})},n.prototype.render=function(){return p.default.createElement("div",{id:this.props.id,className:this.props.className,ref:this.handleRef})},n}(p.default.Component),t.propTypes={id:l.default.string,className:l.default.string,onChange:l.default.func,onBlur:l.default.func,onFocus:l.defa
 ult.func,onReady:l.default.func},t.defaultProps={id:void 0,className:void 0,onChange:h,onBlur:h,onFocus:h,onReady:h},t.contextTypes=y.elementContextTypes,t.displayName=v(e)+"Element",n}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.default=function e(t,n){if("object"!==(void 0===t?"undefined":r(t))||"object"!==(void 0===n?"undefined":r(n)))return t===n;if(null===t||null===n)return t===n;var o=Array.isArray(t);if(o!==Array.isArray(n))return!1;var i="[object Object]"===Object.prototype.toString.call(t);if(i!==("[object Object]"===Object.prototype.toString.call(n)))return!1;if(!i&&!o)return!1;var s=Object.keys(t),a=Object.keys(n);if(s.length!==a.length)return!1;for(var u={},p=0;s.length>p;p+=1)u[s[p]]=!0;for(var c=0;a.length>c;c+=1)u[a[c]]=!0;var 
 l=Object.keys(u);if(l.length!==s.length)return!1;var f=t,d=n;return l.every(function(t){return e(f[t],d[t])})}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function a(e,t){var n={};for(var r in e)0>t.indexOf(r)&&Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;arguments.length>t;
 t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p=n(0),c=r(p),l=n(1),f=r(l),d=n(13),y=r(d),h=n(2),m=function(){},v=function(e){return a(e,["id","className","onBlur","onClick","onFocus","onReady","paymentRequest"])},b=function(e){function t(n,r){o(this,t);var s=i(this,e.call(this,n,r));s.handleRef=function(e){s._ref=e};var a=v(n);return s._options=a,s}return s(t,e),t.prototype.componentDidMount=function(){var e=this;this.context.addElementsLoadListener(function(t){e._element=t.create("paymentRequestButton",u({paymentRequest:e.props.paymentRequest},e._options)),e._element.on("ready",function(){e.props.onReady(e._element)}),e._element.on("focus",function(){var t;return(t=e.props).onFocus.apply(t,arguments)}),e._element.on("click",function(){var t;return(t=e.props).onClick.apply(t,arguments)}),e._element.on("blur",function(){var t;return(t=e.props).onBlur.apply(t,arguments)}),e._element.mount(e._ref)})},t.prototype.componentWillRec
 eiveProps=function(e){this.props.paymentRequest!==e.paymentRequest&&console.warn("Unsupported prop change: paymentRequest is not a customizable property.");var t=v(e);0===Object.keys(t).length||(0,y.default)(t,this._options)||(this._options=t,this._element.update(t))},t.prototype.componentWillUnmount=function(){this._element.destroy()},t.prototype.render=function(){return c.default.createElement("div",{id:this.props.id,className:this.props.className,ref:this.handleRef})},t}(c.default.Component);b.propTypes={id:f.default.string,className:f.default.string,onBlur:f.default.func,onClick:f.default.func,onFocus:f.default.func,onReady:f.default.func,paymentRequest:f.default.shape({canMakePayment:f.default.func.isRequired,on:f.default.func.isRequired,show:f.default.func.isRequired}).isRequired},b.defaultProps={id:void 0,className:void 0,onBlur:m,onClick:m,onFocus:m,onReady:m},b.contextTypes=h.elementContextTypes,t.default=b},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",
 {value:!0}),t.default=function(e,t){var n=Object.keys(e);return n.length===Object.keys(t).length&&n.every(function(n){return t.hasOwnProperty(n)&&t[n]===e[n]})}}])});
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/es/components/Element.js b/node_modules/react-stripe-elements/es/components/Element.js
new file mode 100644
index 00000000..8a65e29a
--- /dev/null
+++ b/node_modules/react-stripe-elements/es/components/Element.js
@@ -0,0 +1,159 @@
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _propTypes = require('prop-types');
+
+var _propTypes2 = _interopRequireDefault(_propTypes);
+
+var _isEqual = require('../utils/isEqual');
+
+var _isEqual2 = _interopRequireDefault(_isEqual);
+
+var _Elements = require('./Elements');
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
+
+var noop = function noop() {};
+
+var _extractOptions = function _extractOptions(props) {
+  var id = props.id,
+      className = props.className,
+      onChange = props.onChange,
+      onFocus = props.onFocus,
+      onBlur = props.onBlur,
+      onReady = props.onReady,
+      options = _objectWithoutProperties(props, ['id', 'className', 'onChange', 'onFocus', 'onBlur', 'onReady']);
+
+  return options;
+};
+
+var capitalized = function capitalized(str) {
+  return str.charAt(0).toUpperCase() + str.slice(1);
+};
+
+var Element = function Element(type) {
+  var _class, _temp;
+
+  var hocOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  return _temp = _class = function (_React$Component) {
+    _inherits(_class, _React$Component);
+
+    function _class(props, context) {
+      _classCallCheck(this, _class);
+
+      var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));
+
+      _this.handleRef = function (ref) {
+        _this._ref = ref;
+      };
+
+      _this._element = null;
+
+      var options = _extractOptions(_this.props);
+      // We keep track of the extracted options on this._options to avoid re-rendering.
+      // (We would unnecessarily re-render if we were tracking them with state.)
+      _this._options = options;
+      return _this;
+    }
+
+    _class.prototype.componentDidMount = function componentDidMount() {
+      var _this2 = this;
+
+      this.context.addElementsLoadListener(function (elements) {
+        var element = elements.create(type, _this2._options);
+        _this2._element = element;
+
+        _this2._setupEventListeners(element);
+
+        element.mount(_this2._ref);
+
+        // Register Element for automatic token / source creation
+        if (hocOptions.impliedTokenType || hocOptions.impliedSourceType) {
+          _this2.context.registerElement(element, hocOptions.impliedTokenType, hocOptions.impliedSourceType);
+        }
+      });
+    };
+
+    _class.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
+      var options = _extractOptions(nextProps);
+      if (Object.keys(options).length !== 0 && !(0, _isEqual2.default)(options, this._options)) {
+        this._options = options;
+        if (this._element) {
+          this._element.update(options);
+        }
+      }
+    };
+
+    _class.prototype.componentWillUnmount = function componentWillUnmount() {
+      if (this._element) {
+        var element = this._element;
+        element.destroy();
+        this.context.unregisterElement(element);
+      }
+    };
+
+    _class.prototype._setupEventListeners = function _setupEventListeners(element) {
+      var _this3 = this;
+
+      element.on('ready', function () {
+        _this3.props.onReady(_this3._element);
+      });
+
+      element.on('change', function (change) {
+        _this3.props.onChange(change);
+      });
+
+      element.on('blur', function () {
+        var _props;
+
+        return (_props = _this3.props).onBlur.apply(_props, arguments);
+      });
+      element.on('focus', function () {
+        var _props2;
+
+        return (_props2 = _this3.props).onFocus.apply(_props2, arguments);
+      });
+    };
+
+    _class.prototype.render = function render() {
+      return _react2.default.createElement('div', {
+        id: this.props.id,
+        className: this.props.className,
+        ref: this.handleRef
+      });
+    };
+
+    return _class;
+  }(_react2.default.Component), _class.propTypes = {
+    id: _propTypes2.default.string,
+    className: _propTypes2.default.string,
+    onChange: _propTypes2.default.func,
+    onBlur: _propTypes2.default.func,
+    onFocus: _propTypes2.default.func,
+    onReady: _propTypes2.default.func
+  }, _class.defaultProps = {
+    id: undefined,
+    className: undefined,
+    onChange: noop,
+    onBlur: noop,
+    onFocus: noop,
+    onReady: noop
+  }, _class.contextTypes = _Elements.elementContextTypes, _class.displayName = capitalized(type) + 'Element', _temp;
+};
+
+exports.default = Element;
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/es/components/Element.test.js b/node_modules/react-stripe-elements/es/components/Element.test.js
new file mode 100644
index 00000000..7db707b7
--- /dev/null
+++ b/node_modules/react-stripe-elements/es/components/Element.test.js
@@ -0,0 +1,155 @@
+'use strict';
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _enzyme = require('enzyme');
+
+var _Element = require('./Element');
+
+var _Element2 = _interopRequireDefault(_Element);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+describe('Element', function () {
+  var elementMock = void 0;
+  var elementsMock = void 0;
+  var context = void 0;
+  beforeEach(function () {
+    elementMock = {
+      mount: jest.fn(),
+      destroy: jest.fn(),
+      on: jest.fn(function (event, cb) {
+        if (event === 'ready') {
+          cb();
+        }
+      }),
+      update: jest.fn()
+    };
+    elementsMock = {
+      create: jest.fn().mockReturnValue(elementMock)
+    };
+    context = {
+      addElementsLoadListener: function addElementsLoadListener(fn) {
+        return fn(elementsMock);
+      },
+      registerElement: jest.fn(),
+      unregisterElement: jest.fn()
+    };
+  });
+
+  it('should pass id to the DOM element', function () {
+    var id = 'my-id';
+    var CardElement = (0, _Element2.default)('card', {
+      impliedTokenType: 'card',
+      impliedSourceType: 'card'
+    });
+    var element = (0, _enzyme.shallow)(_react2.default.createElement(CardElement, { id: id }), { context: context });
+    expect(element.find('#my-id').length).toBe(1);
+  });
+
+  it('should pass className to the DOM element', function () {
+    var className = 'my-class';
+    var CardElement = (0, _Element2.default)('card', {
+      impliedTokenType: 'card',
+      impliedSourceType: 'card'
+    });
+    var element = (0, _enzyme.shallow)(_react2.default.createElement(CardElement, { className: className }), { context: context });
+    expect(element.first().hasClass(className)).toBeTruthy();
+  });
+
+  it('should call the right hooks for a registered Element', function () {
+    var TestElement = (0, _Element2.default)('test', {
+      impliedTokenType: 'foo',
+      impliedSourceType: 'bar'
+    });
+    var element = (0, _enzyme.mount)(_react2.default.createElement(TestElement, { onChange: jest.fn() }), { context: context });
+
+    expect(context.registerElement).toHaveBeenCalledTimes(1);
+    expect(context.registerElement).toHaveBeenCalledWith(elementMock, 'foo', 'bar');
+
+    element.unmount();
+    expect(elementMock.destroy).toHaveBeenCalledTimes(1);
+    expect(context.unregisterElement).toHaveBeenCalledTimes(1);
+    expect(context.unregisterElement).toHaveBeenCalledWith(elementMock);
+  });
+
+  it('should call the right hooks for a non-registered Element', function () {
+    var TestElement = (0, _Element2.default)('test');
+    var element = (0, _enzyme.mount)(_react2.default.createElement(TestElement, { onChange: jest.fn() }), { context: context });
+
+    expect(context.registerElement).toHaveBeenCalledTimes(0);
+
+    element.unmount();
+    expect(elementMock.destroy).toHaveBeenCalledTimes(1);
+    expect(context.unregisterElement).toHaveBeenCalledTimes(1);
+    expect(context.unregisterElement).toHaveBeenCalledWith(elementMock);
+  });
+
+  it('should call onReady', function () {
+    var CardElement = (0, _Element2.default)('card', {
+      impliedTokenType: 'card',
+      impliedSourceType: 'card'
+    });
+    var onReadyMock = jest.fn();
+
+    (0, _enzyme.mount)(_react2.default.createElement(CardElement, { onReady: onReadyMock }), {
+      context: context
+    });
+
+    expect(elementMock.on.mock.calls[0][0]).toBe('ready');
+    expect(onReadyMock).toHaveBeenCalledWith(elementMock);
+  });
+
+  it('should update the Element when props change', function () {
+    var style = {
+      base: {
+        fontSize: '16px'
+      }
+    };
+    var TestElement = (0, _Element2.default)('test', {
+      impliedTokenType: 'foo',
+      impliedSourceType: 'bar'
+    });
+    var element = (0, _enzyme.mount)(_react2.default.createElement(TestElement, { onChange: jest.fn(), style: style }), {
+      context: context
+    });
+
+    expect(elementMock.update).toHaveBeenCalledTimes(0);
+    element.setProps({ style: style, onChange: jest.fn() });
+    expect(elementMock.update).toHaveBeenCalledTimes(0);
+
+    element.setProps({
+      style: { base: { fontSize: '20px' } },
+      onChange: jest.fn()
+    });
+    expect(elementMock.update).toHaveBeenCalledTimes(1);
+    expect(elementMock.update).toHaveBeenCalledWith({
+      style: { base: { fontSize: '20px' } }
+    });
+  });
+
+  it("re-rendering with new props should still work if addElementsLoadListener hasn't fired yet", function () {
+    // no-op function so that any registered listeners are never woken up
+    context.addElementsLoadListener = function () {};
+
+    var placeholder = 'hello';
+    var CardElement = (0, _Element2.default)('card', {
+      impliedTokenType: 'card',
+      impliedSourceType: 'card'
+    });
+    var element = (0, _enzyme.shallow)(_react2.default.createElement(CardElement, { placeholder: placeholder }), {
+      context: context
+    });
+
+    expect(function () {
+      return element.setProps({ placeholder: 'placeholder' });
+    }).not.toThrow();
+  });
+
+  it('should have a displayName based on the type argument', function () {
+    var TestElement = (0, _Element2.default)('test');
+    expect(TestElement.displayName).toEqual('TestElement');
+  });
+}); // @noflow
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/es/components/Elements.js b/node_modules/react-stripe-elements/es/components/Elements.js
new file mode 100644
index 00000000..555eae83
--- /dev/null
+++ b/node_modules/react-stripe-elements/es/components/Elements.js
@@ -0,0 +1,126 @@
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.elementContextTypes = exports.injectContextTypes = undefined;
+
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _propTypes = require('prop-types');
+
+var _propTypes2 = _interopRequireDefault(_propTypes);
+
+var _Provider = require('./Provider');
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
+
+function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var injectContextTypes = exports.injectContextTypes = {
+  getRegisteredElements: _propTypes2.default.func.isRequired
+};
+
+var elementContextTypes = exports.elementContextTypes = {
+  addElementsLoadListener: _propTypes2.default.func.isRequired,
+  registerElement: _propTypes2.default.func.isRequired,
+  unregisterElement: _propTypes2.default.func.isRequired
+};
+
+var Elements = function (_React$Component) {
+  _inherits(Elements, _React$Component);
+
+  function Elements(props, context) {
+    _classCallCheck(this, Elements);
+
+    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));
+
+    _this.handleRegisterElement = function (element, impliedTokenType, impliedSourceType) {
+      _this.setState(function (prevState) {
+        return {
+          registeredElements: [].concat(_toConsumableArray(prevState.registeredElements), [_extends({
+            element: element
+          }, impliedTokenType ? { impliedTokenType: impliedTokenType } : {}, impliedSourceType ? { impliedSourceType: impliedSourceType } : {})])
+        };
+      });
+    };
+
+    _this.handleUnregisterElement = function (el) {
+      _this.setState(function (prevState) {
+        return {
+          registeredElements: prevState.registeredElements.filter(function (_ref) {
+            var element = _ref.element;
+            return element !== el;
+          })
+        };
+      });
+    };
+
+    _this.state = {
+      registeredElements: []
+    };
+    return _this;
+  }
+
+  Elements.prototype.getChildContext = function getChildContext() {
+    var _this2 = this;
+
+    return {
+      addElementsLoadListener: function addElementsLoadListener(fn) {
+        // Return the existing elements instance if we already have one.
+        if (_this2._elements) {
+          fn(_this2._elements);
+          return;
+        }
+
+        var _props = _this2.props,
+            children = _props.children,
+            options = _objectWithoutProperties(_props, ['children']);
+
+        if (_this2.context.tag === 'sync') {
+          _this2._elements = _this2.context.stripe.elements(options);
+          fn(_this2._elements);
+        } else {
+          _this2.context.addStripeLoadListener(function (stripe) {
+            if (_this2._elements) {
+              fn(_this2._elements);
+            } else {
+              _this2._elements = stripe.elements(options);
+              fn(_this2._elements);
+            }
+          });
+        }
+      },
+      registerElement: this.handleRegisterElement,
+      unregisterElement: this.handleUnregisterElement,
+      getRegisteredElements: function getRegisteredElements() {
+        return _this2.state.registeredElements;
+      }
+    };
+  };
+
+  Elements.prototype.render = function render() {
+    return _react2.default.Children.only(this.props.children);
+  };
+
+  return Elements;
+}(_react2.default.Component);
+
+Elements.childContextTypes = _extends({}, injectContextTypes, elementContextTypes);
+Elements.contextTypes = _Provider.providerContextTypes;
+Elements.defaultProps = {
+  children: null
+};
+exports.default = Elements;
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/es/components/Elements.test.js b/node_modules/react-stripe-elements/es/components/Elements.test.js
new file mode 100644
index 00000000..cd748d1c
--- /dev/null
+++ b/node_modules/react-stripe-elements/es/components/Elements.test.js
@@ -0,0 +1,93 @@
+'use strict';
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _enzyme = require('enzyme');
+
+var _Elements = require('./Elements');
+
+var _Elements2 = _interopRequireDefault(_Elements);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+describe('Elements', function () {
+  var stripeMock = void 0;
+
+  beforeEach(function () {
+    stripeMock = {
+      elements: jest.fn(function () {
+        throw new Error('elements() should not be called twice in this test.');
+      }).mockReturnValueOnce(true),
+      createToken: jest.fn(),
+      createSource: jest.fn()
+    };
+  });
+
+  it('creates the context', function () {
+    var syncContext = {
+      tag: 'sync',
+      stripe: stripeMock
+    };
+    var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Elements2.default,
+      null,
+      _react2.default.createElement('div', null)
+    ), { context: syncContext });
+    var childContext = wrapper.node.getChildContext();
+    expect(Object.keys(childContext)).toEqual(['addElementsLoadListener', 'registerElement', 'unregisterElement', 'getRegisteredElements']);
+  });
+
+  it('with sync context: addElementsLoadListener returns the same elements instance ', function () {
+    var syncContext = {
+      tag: 'sync',
+      stripe: stripeMock
+    };
+    var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Elements2.default,
+      null,
+      _react2.default.createElement('div', null)
+    ), { context: syncContext });
+    var childContext = wrapper.node.getChildContext();
+
+    var mockCallback = jest.fn();
+    childContext.addElementsLoadListener(mockCallback);
+    expect(mockCallback).toHaveBeenCalledTimes(1);
+    expect(mockCallback).toHaveBeenLastCalledWith(true);
+    childContext.addElementsLoadListener(mockCallback);
+    expect(mockCallback).toHaveBeenCalledTimes(2);
+    expect(mockCallback).toHaveBeenCalledWith(true);
+  });
+
+  it('with async context: addElementsLoadListener returns the same elements instance ', function () {
+    var asyncContext = {
+      tag: 'async',
+      addStripeLoadListener: jest.fn(function (callback) {
+        return setTimeout(function () {
+          return callback(stripeMock);
+        }, 0);
+      })
+    };
+    var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Elements2.default,
+      null,
+      _react2.default.createElement('div', null)
+    ), { context: asyncContext });
+    var childContext = wrapper.node.getChildContext();
+
+    var a = new Promise(function (resolve) {
+      return childContext.addElementsLoadListener(function (first) {
+        expect(first).toEqual(true);
+        resolve();
+      });
+    });
+    var b = new Promise(function (resolve) {
+      return childContext.addElementsLoadListener(function (second) {
+        expect(second).toEqual(true);
+        resolve();
+      });
+    });
+    return Promise.all([a, b]);
+  });
+}); // @noflow
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/es/components/PaymentRequestButtonElement.js b/node_modules/react-stripe-elements/es/components/PaymentRequestButtonElement.js
new file mode 100644
index 00000000..eae757cd
--- /dev/null
+++ b/node_modules/react-stripe-elements/es/components/PaymentRequestButtonElement.js
@@ -0,0 +1,144 @@
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _propTypes = require('prop-types');
+
+var _propTypes2 = _interopRequireDefault(_propTypes);
+
+var _shallowEqual = require('../utils/shallowEqual');
+
+var _shallowEqual2 = _interopRequireDefault(_shallowEqual);
+
+var _Elements = require('./Elements');
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
+
+var noop = function noop() {};
+
+var _extractOptions = function _extractOptions(props) {
+  var id = props.id,
+      className = props.className,
+      onBlur = props.onBlur,
+      onClick = props.onClick,
+      onFocus = props.onFocus,
+      onReady = props.onReady,
+      paymentRequest = props.paymentRequest,
+      options = _objectWithoutProperties(props, ['id', 'className', 'onBlur', 'onClick', 'onFocus', 'onReady', 'paymentRequest']);
+
+  return options;
+};
+
+var PaymentRequestButtonElement = function (_React$Component) {
+  _inherits(PaymentRequestButtonElement, _React$Component);
+
+  function PaymentRequestButtonElement(props, context) {
+    _classCallCheck(this, PaymentRequestButtonElement);
+
+    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));
+
+    _this.handleRef = function (ref) {
+      _this._ref = ref;
+    };
+
+    var options = _extractOptions(props);
+    // We keep track of the extracted options on this._options to avoid re-rendering.
+    // (We would unnecessarily re-render if we were tracking them with state.)
+    _this._options = options;
+    return _this;
+  }
+
+  PaymentRequestButtonElement.prototype.componentDidMount = function componentDidMount() {
+    var _this2 = this;
+
+    this.context.addElementsLoadListener(function (elements) {
+      _this2._element = elements.create('paymentRequestButton', _extends({
+        paymentRequest: _this2.props.paymentRequest
+      }, _this2._options));
+      _this2._element.on('ready', function () {
+        _this2.props.onReady(_this2._element);
+      });
+      _this2._element.on('focus', function () {
+        var _props;
+
+        return (_props = _this2.props).onFocus.apply(_props, arguments);
+      });
+      _this2._element.on('click', function () {
+        var _props2;
+
+        return (_props2 = _this2.props).onClick.apply(_props2, arguments);
+      });
+      _this2._element.on('blur', function () {
+        var _props3;
+
+        return (_props3 = _this2.props).onBlur.apply(_props3, arguments);
+      });
+      _this2._element.mount(_this2._ref);
+    });
+  };
+
+  PaymentRequestButtonElement.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
+    if (this.props.paymentRequest !== nextProps.paymentRequest) {
+      console.warn('Unsupported prop change: paymentRequest is not a customizable property.');
+    }
+    var options = _extractOptions(nextProps);
+    if (Object.keys(options).length !== 0 && !(0, _shallowEqual2.default)(options, this._options)) {
+      this._options = options;
+      this._element.update(options);
+    }
+  };
+
+  PaymentRequestButtonElement.prototype.componentWillUnmount = function componentWillUnmount() {
+    this._element.destroy();
+  };
+
+  PaymentRequestButtonElement.prototype.render = function render() {
+    return _react2.default.createElement('div', {
+      id: this.props.id,
+      className: this.props.className,
+      ref: this.handleRef
+    });
+  };
+
+  return PaymentRequestButtonElement;
+}(_react2.default.Component);
+
+PaymentRequestButtonElement.propTypes = {
+  id: _propTypes2.default.string,
+  className: _propTypes2.default.string,
+  onBlur: _propTypes2.default.func,
+  onClick: _propTypes2.default.func,
+  onFocus: _propTypes2.default.func,
+  onReady: _propTypes2.default.func,
+  paymentRequest: _propTypes2.default.shape({
+    canMakePayment: _propTypes2.default.func.isRequired,
+    on: _propTypes2.default.func.isRequired,
+    show: _propTypes2.default.func.isRequired
+  }).isRequired
+};
+PaymentRequestButtonElement.defaultProps = {
+  id: undefined,
+  className: undefined,
+  onBlur: noop,
+  onClick: noop,
+  onFocus: noop,
+  onReady: noop
+};
+PaymentRequestButtonElement.contextTypes = _Elements.elementContextTypes;
+exports.default = PaymentRequestButtonElement;
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/es/components/PaymentRequestButtonElement.test.js b/node_modules/react-stripe-elements/es/components/PaymentRequestButtonElement.test.js
new file mode 100644
index 00000000..17f8a5a4
--- /dev/null
+++ b/node_modules/react-stripe-elements/es/components/PaymentRequestButtonElement.test.js
@@ -0,0 +1,145 @@
+'use strict';
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _enzyme = require('enzyme');
+
+var _PaymentRequestButtonElement = require('./PaymentRequestButtonElement');
+
+var _PaymentRequestButtonElement2 = _interopRequireDefault(_PaymentRequestButtonElement);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+describe('PaymentRequestButtonElement', function () {
+  var elementMock = void 0;
+  var elementsMock = void 0;
+  var context = void 0;
+  var paymentRequestMock = void 0;
+  beforeEach(function () {
+    elementMock = {
+      mount: jest.fn(),
+      destroy: jest.fn(),
+      on: jest.fn(function (event, cb) {
+        if (event === 'ready') {
+          cb();
+        }
+      }),
+      update: jest.fn()
+    };
+    elementsMock = {
+      create: jest.fn().mockReturnValue(elementMock)
+    };
+    context = {
+      addElementsLoadListener: function addElementsLoadListener(fn) {
+        return fn(elementsMock);
+      },
+      registerElement: jest.fn(),
+      unregisterElement: jest.fn()
+    };
+    paymentRequestMock = {
+      canMakePayment: jest.fn(),
+      on: jest.fn(),
+      show: jest.fn()
+    };
+  });
+
+  it('should pass the id to the DOM element', function () {
+    var id = 'my-id';
+    var element = (0, _enzyme.shallow)(_react2.default.createElement(_PaymentRequestButtonElement2.default, {
+      id: id,
+      paymentRequest: paymentRequestMock
+    }), { context: context });
+    expect(element.find('#' + id)).toBeTruthy();
+  });
+
+  it('should pass the className to the DOM element', function () {
+    var className = 'my-class';
+    var element = (0, _enzyme.shallow)(_react2.default.createElement(_PaymentRequestButtonElement2.default, {
+      className: className,
+      paymentRequest: paymentRequestMock
+    }), { context: context });
+    expect(element.first().hasClass(className)).toBeTruthy();
+  });
+
+  it('should call onReady', function () {
+    var onReadyMock = jest.fn();
+
+    (0, _enzyme.mount)(_react2.default.createElement(_PaymentRequestButtonElement2.default, {
+      onReady: onReadyMock,
+      paymentRequest: paymentRequestMock
+    }), { context: context });
+
+    expect(elementMock.on.mock.calls[0][0]).toBe('ready');
+    expect(onReadyMock).toHaveBeenCalledWith(elementMock);
+  });
+
+  it('should not register the Element', function () {
+    var element = (0, _enzyme.mount)(_react2.default.createElement(_PaymentRequestButtonElement2.default, { paymentRequest: paymentRequestMock }), { context: context });
+
+    expect(context.registerElement).toHaveBeenCalledTimes(0);
+
+    element.unmount();
+    expect(elementMock.destroy).toHaveBeenCalledTimes(1);
+    expect(context.unregisterElement).toHaveBeenCalledTimes(0);
+  });
+
+  it('should update the Element when props change', function () {
+    var style = {
+      paymentRequestButton: {
+        theme: 'dark',
+        height: '64px',
+        type: 'donate'
+      }
+    };
+    var element = (0, _enzyme.mount)(_react2.default.createElement(_PaymentRequestButtonElement2.default, {
+      paymentRequest: paymentRequestMock,
+      style: style
+    }), { context: context });
+
+    expect(elementMock.update).toHaveBeenCalledTimes(0);
+    element.setProps({ style: style });
+    expect(elementMock.update).toHaveBeenCalledTimes(0);
+
+    element.setProps({
+      style: { paymentRequestButton: { height: '64px' } }
+    });
+    expect(elementMock.update).toHaveBeenCalledTimes(1);
+    expect(elementMock.update).toHaveBeenCalledWith({
+      style: { paymentRequestButton: { height: '64px' } }
+    });
+  });
+
+  it('should warn that the paymentRequest prop can not be changed', function () {
+    var style = {
+      paymentRequestButton: {
+        theme: 'dark',
+        height: '64px',
+        type: 'donate'
+      }
+    };
+    var element = (0, _enzyme.mount)(_react2.default.createElement(_PaymentRequestButtonElement2.default, {
+      paymentRequest: paymentRequestMock,
+      style: style
+    }), { context: context });
+
+    expect(elementMock.update).toHaveBeenCalledTimes(0);
+
+    var originalConsoleWarn = global.console.warn;
+    var mockConsoleWarn = jest.fn();
+    global.console.warn = mockConsoleWarn;
+
+    element.setProps({
+      paymentRequest: {
+        canMakePayment: jest.fn(),
+        on: jest.fn(),
+        show: jest.fn()
+      }
+    });
+    expect(elementMock.update).toHaveBeenCalledTimes(0);
+    expect(mockConsoleWarn).toHaveBeenCalledWith('Unsupported prop change: paymentRequest is not a customizable property.');
+
+    global.console.warn = originalConsoleWarn;
+  });
+}); // @noflow
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/es/components/Provider.js b/node_modules/react-stripe-elements/es/components/Provider.js
new file mode 100644
index 00000000..80af168a
--- /dev/null
+++ b/node_modules/react-stripe-elements/es/components/Provider.js
@@ -0,0 +1,176 @@
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.providerContextTypes = undefined;
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _propTypes = require('prop-types');
+
+var _propTypes2 = _interopRequireDefault(_propTypes);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+// TODO(jez) 'sync' and 'async' are bad tag names.
+// TODO(jez) What if redux also uses this.context.tag?
+var providerContextTypes = exports.providerContextTypes = {
+  tag: _propTypes2.default.string.isRequired,
+  stripe: _propTypes2.default.object,
+  addStripeLoadListener: _propTypes2.default.func
+};
+
+var getOrCreateStripe = function getOrCreateStripe(apiKey, options) {
+  /**
+   * Note that this is not meant to be a generic memoization solution.
+   * This is specifically a solution for `StripeProvider`s being initialized
+   * and destroyed regularly (with the same set of props) when users only
+   * use `StripeProvider` for the subtree that contains their checkout form.
+   */
+  window.Stripe.__cachedInstances = window.Stripe.__cachedInstances || {};
+  var cacheKey = 'key=' + apiKey + ' options=' + JSON.stringify(options);
+
+  var stripe = window.Stripe.__cachedInstances[cacheKey] || window.Stripe(apiKey, options);
+  window.Stripe.__cachedInstances[cacheKey] = stripe;
+
+  return stripe;
+};
+
+var ensureStripeShape = function ensureStripeShape(stripe) {
+  if (stripe && stripe.elements && stripe.createSource && stripe.createToken) {
+    return stripe;
+  } else {
+    throw new Error("Please pass a valid Stripe object to StripeProvider. You can obtain a Stripe object by calling 'Stripe(...)' with your publishable key.");
+  }
+};
+
+var Provider = function (_React$Component) {
+  _inherits(Provider, _React$Component);
+
+  // on the other hand: childContextTypes is *required* to use context.
+  function Provider(props) {
+    _classCallCheck(this, Provider);
+
+    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));
+
+    if (_this.props.apiKey && _this.props.stripe) {
+      throw new Error("Please pass either 'apiKey' or 'stripe' to StripeProvider, not both.");
+    } else if (_this.props.apiKey) {
+      if (!window.Stripe) {
+        throw new Error("Please load Stripe.js (https://js.stripe.com/v3/) on this page to use react-stripe-elements. If Stripe.js isn't available yet (it's loading asynchronously, or you're using server-side rendering), see https://github.com/stripe/react-stripe-elements#advanced-integrations");
+      } else {
+        var _this$props = _this.props,
+            _apiKey = _this$props.apiKey,
+            _children = _this$props.children,
+            _stripe = _this$props.stripe,
+            options = _objectWithoutProperties(_this$props, ['apiKey', 'children', 'stripe']);
+
+        _this._meta = {
+          tag: 'sync',
+          stripe: getOrCreateStripe(_apiKey, options)
+        };
+      }
+    } else if (_this.props.stripe) {
+      // If we already have a stripe instance (in the constructor), we can behave synchronously.
+      _this._meta = {
+        tag: 'sync',
+        stripe: ensureStripeShape(_this.props.stripe)
+      };
+    } else if (_this.props.stripe === null) {
+      _this._meta = {
+        tag: 'async',
+        stripe: null
+      };
+    } else {
+      throw new Error("Please pass either 'apiKey' or 'stripe' to StripeProvider. If you're using 'stripe' but don't have a Stripe instance yet, pass 'null' explicitly.");
+    }
+
+    _this._didWarn = false;
+    _this._didWakeUpListeners = false;
+    _this._listeners = [];
+    return _this;
+  }
+  // Even though we're using flow, also use PropTypes so we can take advantage of developer warnings.
+
+
+  Provider.prototype.getChildContext = function getChildContext() {
+    var _this2 = this;
+
+    // getChildContext is run after the constructor, so we WILL have access to
+    // the initial state.
+    //
+    // However, context doesn't update in respnse to state changes like you
+    // might expect: context is pulled by the child, not pushed by the parent.
+    if (this._meta.tag === 'sync') {
+      return {
+        tag: 'sync',
+        stripe: this._meta.stripe
+      };
+    } else {
+      return {
+        tag: 'async',
+        addStripeLoadListener: function addStripeLoadListener(fn) {
+          if (_this2._meta.stripe) {
+            fn(_this2._meta.stripe);
+          } else {
+            _this2._listeners.push(fn);
+          }
+        }
+      };
+    }
+  };
+
+  Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
+    var apiKeyChanged = this.props.apiKey && nextProps.apiKey && this.props.apiKey !== nextProps.apiKey;
+
+    var stripeInstanceChanged = this.props.stripe && nextProps.stripe && this.props.stripe !== nextProps.stripe;
+    if (!this._didWarn && (apiKeyChanged || stripeInstanceChanged) && window.console && window.console.error) {
+      this._didWarn = true;
+      // eslint-disable-next-line no-console
+      console.error('StripeProvider does not support changing the apiKey parameter.');
+      return;
+    }
+
+    if (!this._didWakeUpListeners && nextProps.stripe) {
+      // Wake up the listeners if we've finally been given a StripeShape
+      this._didWakeUpListeners = true;
+      var _stripe2 = ensureStripeShape(nextProps.stripe);
+      this._meta.stripe = _stripe2;
+      this._listeners.forEach(function (fn) {
+        fn(_stripe2);
+      });
+    }
+  };
+
+  Provider.prototype.render = function render() {
+    return _react2.default.Children.only(this.props.children);
+  };
+
+  return Provider;
+}(_react2.default.Component);
+
+Provider.propTypes = {
+  apiKey: _propTypes2.default.string,
+  // PropTypes.object is the only way we can accept a Stripe instance
+  // eslint-disable-next-line react/forbid-prop-types
+  stripe: _propTypes2.default.object,
+  children: _propTypes2.default.node
+};
+Provider.childContextTypes = providerContextTypes;
+Provider.defaultProps = {
+  apiKey: undefined,
+  stripe: undefined,
+  children: null
+};
+exports.default = Provider;
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/es/components/Provider.test.js b/node_modules/react-stripe-elements/es/components/Provider.test.js
new file mode 100644
index 00000000..3b7de79e
--- /dev/null
+++ b/node_modules/react-stripe-elements/es/components/Provider.test.js
@@ -0,0 +1,199 @@
+'use strict';
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _enzyme = require('enzyme');
+
+var _Provider = require('./Provider');
+
+var _Provider2 = _interopRequireDefault(_Provider);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+describe('StripeProvider', function () {
+  var stripeMockFn = void 0;
+  var stripeMockResult = void 0;
+
+  beforeEach(function () {
+    stripeMockResult = {
+      elements: jest.fn(),
+      createToken: jest.fn(),
+      createSource: jest.fn()
+    };
+    stripeMockFn = jest.fn().mockReturnValue(stripeMockResult);
+    window.Stripe = stripeMockFn;
+  });
+
+  it('requires apiKey or stripe prop', function () {
+    expect(function () {
+      (0, _enzyme.shallow)(_react2.default.createElement(
+        _Provider2.default,
+        null,
+        _react2.default.createElement('div', null)
+      ));
+    }).toThrow(/Please pass either 'apiKey' or 'stripe' to StripeProvider./);
+  });
+
+  it('throws without stripe.js loaded if using apiKey', function () {
+    window.Stripe = null;
+    expect(function () {
+      return (0, _enzyme.shallow)(_react2.default.createElement(_Provider2.default, { apiKey: 'made_up_key' }));
+    }).toThrow('Please load Stripe.js (https://js.stripe.com/v3/) on this page to use react-stripe-elements.');
+  });
+
+  it('requires not both apiKey and stripe prop', function () {
+    expect(function () {
+      (0, _enzyme.shallow)(_react2.default.createElement(
+        _Provider2.default,
+        { apiKey: 'made_up_key', stripe: stripeMockResult },
+        _react2.default.createElement('div', null)
+      ));
+    }).toThrow(/Please pass either 'apiKey' or 'stripe' to StripeProvider, not both./);
+  });
+
+  it('throws without children', function () {
+    expect(function () {
+      return (0, _enzyme.shallow)(_react2.default.createElement(_Provider2.default, { apiKey: 'made_up_key' }));
+    }).toThrow('React.Children.only expected to receive a single React element child');
+  });
+
+  it('throws with more than one children', function () {
+    expect(function () {
+      return (0, _enzyme.shallow)(_react2.default.createElement(
+        _Provider2.default,
+        { apiKey: 'made_up_key' },
+        _react2.default.createElement('div', null),
+        _react2.default.createElement('div', null)
+      ));
+    }).toThrow('React.Children.only expected to receive a single React element child');
+  });
+
+  it('renders its single child', function () {
+    var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(
+      _Provider2.default,
+      { apiKey: 'made_up_key' },
+      _react2.default.createElement(
+        'form',
+        null,
+        _react2.default.createElement('input', null)
+      )
+    ));
+
+    expect(wrapper.html()).toBe('<form><input/></form>');
+  });
+
+  it('initializes Stripe with apiKey and empty options', function () {
+    (0, _enzyme.shallow)(_react2.default.createElement(
+      _Provider2.default,
+      { apiKey: 'made_up_key' },
+      _react2.default.createElement('form', null)
+    ));
+    expect(stripeMockFn).toHaveBeenCalledWith('made_up_key', {});
+  });
+
+  it('initializes Stripe with apiKey and arbitrary props as options', function () {
+    (0, _enzyme.shallow)(_react2.default.createElement(
+      _Provider2.default,
+      { apiKey: 'made_up_key', foo: 'bar' },
+      _react2.default.createElement('form', null)
+    ));
+    expect(stripeMockFn).toHaveBeenCalledWith('made_up_key', { foo: 'bar' });
+  });
+
+  it('provides sync context.stripe if using apiKey', function () {
+    var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Provider2.default,
+      { apiKey: 'made_up_key' },
+      _react2.default.createElement('form', null)
+    ));
+    var childContext = wrapper.node.getChildContext();
+    expect(childContext).toEqual({ stripe: stripeMockResult, tag: 'sync' });
+  });
+
+  it('if stripe prop non-null *at mount*, provides sync context', function () {
+    var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Provider2.default,
+      { stripe: stripeMockResult },
+      _react2.default.createElement('form', null)
+    ));
+    var childContext = wrapper.node.getChildContext();
+    expect(childContext).toEqual({ stripe: stripeMockResult, tag: 'sync' });
+  });
+
+  it('if stripe prop null *at mount*, provides async context', function () {
+    var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Provider2.default,
+      { stripe: null },
+      _react2.default.createElement('form', null)
+    ));
+    var childContext = wrapper.node.getChildContext();
+    expect(childContext).toHaveProperty('addStripeLoadListener');
+    expect(childContext).toHaveProperty('tag', 'async');
+  });
+
+  it('addStripeLoadListener is called when stripe goes from null -> non-null', function (done) {
+    var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Provider2.default,
+      { stripe: null },
+      _react2.default.createElement('form', null)
+    ));
+
+    var childContext = wrapper.node.getChildContext();
+    childContext.addStripeLoadListener(function (stripe) {
+      expect(stripe).toEqual(stripeMockResult);
+      done();
+    });
+
+    wrapper.setProps({ stripe: stripeMockResult });
+  });
+
+  it('does not create a new Stripe instance if one exists for the same key', function () {
+    window.Stripe = jest.fn(function () {
+      return {};
+    });
+
+    // First, create the first instance.
+    var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Provider2.default,
+      { apiKey: 'key_one' },
+      _react2.default.createElement('form', null)
+    ));
+    var childContext = wrapper.node.getChildContext();
+    var keyOneInstance = childContext.stripe;
+    expect(keyOneInstance).toBeTruthy();
+
+    // Create another!
+    wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Provider2.default,
+      { apiKey: 'key_one' },
+      _react2.default.createElement('form', null)
+    ));
+    childContext = wrapper.node.getChildContext();
+    expect(childContext.stripe).toBe(keyOneInstance);
+
+    // Create another, but with a different key!
+    wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Provider2.default,
+      { apiKey: 'key_two' },
+      _react2.default.createElement('form', null)
+    ));
+    childContext = wrapper.node.getChildContext();
+    expect(childContext.stripe).not.toBe(keyOneInstance);
+  });
+
+  it('warns when trying to change the API key', function () {
+    var originalConsoleError = global.console.error;
+    var mockConsoleError = jest.fn();
+    global.console.error = mockConsoleError;
+    var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(
+      _Provider2.default,
+      { apiKey: 'made_up_key' },
+      _react2.default.createElement('form', null)
+    ));
+    wrapper.setProps({ apiKey: 'a_new_key' });
+    expect(mockConsoleError).toHaveBeenCalledWith('StripeProvider does not support changing the apiKey parameter.');
+    global.console.error = originalConsoleError;
+  });
+}); // @noflow
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/es/components/inject.js b/node_modules/react-stripe-elements/es/components/inject.js
new file mode 100644
index 00000000..080bc8e8
--- /dev/null
+++ b/node_modules/react-stripe-elements/es/components/inject.js
@@ -0,0 +1,206 @@
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _Elements = require('./Elements');
+
+var _Provider = require('./Provider');
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+// react-redux does a bunch of stuff with pure components / checking if it needs to re-render.
+// not sure if we need to do the same.
+var inject = function inject(WrappedComponent) {
+  var _class, _temp;
+
+  var componentOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  var _componentOptions$wit = componentOptions.withRef,
+      withRef = _componentOptions$wit === undefined ? false : _componentOptions$wit;
+
+
+  return _temp = _class = function (_React$Component) {
+    _inherits(_class, _React$Component);
+
+    function _class(props, context) {
+      _classCallCheck(this, _class);
+
+      if (!context || !context.getRegisteredElements) {
+        throw new Error('It looks like you are trying to inject Stripe context outside of an Elements context.\nPlease be sure the component that calls createSource or createToken is within an <Elements> component.');
+      }
+
+      var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));
+
+      _this.findElement = function (filterBy, specifiedType) {
+        var allElements = _this.context.getRegisteredElements();
+        var filteredElements = allElements.filter(function (e) {
+          return e[filterBy];
+        });
+        var matchingElements = specifiedType === 'auto' ? filteredElements : filteredElements.filter(function (e) {
+          return e[filterBy] === specifiedType;
+        });
+
+        if (matchingElements.length === 1) {
+          return matchingElements[0].element;
+        } else if (matchingElements.length > 1) {
+          throw new Error('You did not specify the type of Source or Token to create.\n        We could not infer which Element you want to use for this operation.');
+        } else {
+          return null;
+        }
+      };
+
+      _this.requireElement = function (filterBy, specifiedType) {
+        var element = _this.findElement(filterBy, specifiedType);
+        if (element) {
+          return element;
+        } else {
+          throw new Error('You did not specify the type of Source or Token to create.\n        We could not infer which Element you want to use for this operation.');
+        }
+      };
+
+      _this.wrappedCreateToken = function (stripe) {
+        return function () {
+          var tokenTypeOrOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+          var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+          if (tokenTypeOrOptions && (typeof tokenTypeOrOptions === 'undefined' ? 'undefined' : _typeof(tokenTypeOrOptions)) === 'object') {
+            // First argument is options; infer the Element and tokenize
+            var opts = tokenTypeOrOptions;
+
+            var tokenType = opts.type,
+                rest = _objectWithoutProperties(opts, ['type']);
+
+            var specifiedType = typeof tokenType === 'string' ? tokenType : 'auto';
+            // Since only options were passed in, a corresponding Element must exist
+            // for the tokenization to succeed -- thus we call requireElement.
+            var element = _this.requireElement('impliedTokenType', specifiedType);
+            return stripe.createToken(element, rest);
+          } else if (typeof tokenTypeOrOptions === 'string') {
+            // First argument is token type; tokenize with token type and options
+            var _tokenType = tokenTypeOrOptions;
+            return stripe.createToken(_tokenType, options);
+          } else {
+            // If a bad value was passed in for options, throw an error.
+            throw new Error('Invalid options passed to createToken. Expected an object, got ' + (typeof tokenTypeOrOptions === 'undefined' ? 'undefined' : _typeof(tokenTypeOrOptions)) + '.');
+          }
+        };
+      };
+
+      _this.wrappedCreateSource = function (stripe) {
+        return function () {
+          var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+
+          if (options && (typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {
+            if (typeof options.type !== 'string') {
+              throw new Error('Invalid Source type passed to createSource. Expected string, got ' + _typeof(options.type) + '.');
+            }
+
+            var element = _this.findElement('impliedSourceType', options.type);
+            if (element) {
+              // If an Element exists for the source type, use that to create the
+              // corresponding source.
+              //
+              // NOTE: this prevents users from independently creating sources of
+              // type `foo` if an Element that can create `foo` sources exists in
+              // the current <Elements /> context.
+              return stripe.createSource(element, options);
+            } else {
+              // If no Element exists for the source type, directly create a source.
+              return stripe.createSource(options);
+            }
+          } else {
+            // If a bad value was passed in for options, throw an error.
+            throw new Error('Invalid options passed to createSource. Expected an object, got ' + (typeof options === 'undefined' ? 'undefined' : _typeof(options)) + '.');
+          }
+        };
+      };
+
+      if (_this.context.tag === 'sync') {
+        _this.state = {
+          stripe: _this.stripeProps(_this.context.stripe)
+        };
+      } else {
+        _this.state = {
+          stripe: null
+        };
+      }
+      return _this;
+    }
+
+    _class.prototype.componentDidMount = function componentDidMount() {
+      var _this2 = this;
+
+      if (this.context.tag === 'async') {
+        this.context.addStripeLoadListener(function (stripe) {
+          _this2.setState({
+            stripe: _this2.stripeProps(stripe)
+          });
+        });
+      } else {
+        // when 'sync', it's already set in the constructor.
+      }
+    };
+
+    _class.prototype.getWrappedInstance = function getWrappedInstance() {
+      if (!withRef) {
+        throw new Error('To access the wrapped instance, the `{withRef: true}` option must be set when calling `injectStripe()`');
+      }
+      return this.wrappedInstance;
+    };
+
+    _class.prototype.stripeProps = function stripeProps(stripe) {
+      return _extends({}, stripe, {
+        // These are the only functions that take elements.
+        createToken: this.wrappedCreateToken(stripe),
+        createSource: this.wrappedCreateSource(stripe)
+      });
+    };
+
+    // Finds an Element by the specified type, if one exists.
+    // Throws if multiple Elements match.
+
+
+    // Require that exactly one Element is found for the specified type.
+    // Throws if no Element is found.
+
+
+    // Wraps createToken in order to infer the Element that is being tokenized.
+
+
+    // Wraps createSource in order to infer the Element that is being used for
+    // source creation.
+
+
+    _class.prototype.render = function render() {
+      var _this3 = this;
+
+      return _react2.default.createElement(WrappedComponent, _extends({}, this.props, {
+        stripe: this.state.stripe,
+        ref: withRef ? function (c) {
+          _this3.wrappedInstance = c;
+        } : null
+      }));
+    };
+
+    return _class;
+  }(_react2.default.Component), _class.contextTypes = _extends({}, _Provider.providerContextTypes, _Elements.injectContextTypes), _class.displayName = 'InjectStripe(' + (WrappedComponent.displayName || WrappedComponent.name || 'Component') + ')', _temp;
+};
+
+exports.default = inject;
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/es/components/inject.test.js b/node_modules/react-stripe-elements/es/components/inject.test.js
new file mode 100644
index 00000000..83a622c2
--- /dev/null
+++ b/node_modules/react-stripe-elements/es/components/inject.test.js
@@ -0,0 +1,358 @@
+'use strict';
+
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; // @noflow
+
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _enzyme = require('enzyme');
+
+var _inject = require('./inject');
+
+var _inject2 = _interopRequireDefault(_inject);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+describe('injectStripe()', function () {
+  var WrappedComponent = void 0;
+  var context = void 0;
+  var createSource = void 0;
+  var createToken = void 0;
+  var elementMock = void 0;
+
+  // Before ALL tests (sync or async)
+  beforeEach(function () {
+    createSource = jest.fn();
+    createToken = jest.fn();
+    elementMock = {
+      element: {
+        on: jest.fn()
+      },
+      impliedTokenType: 'card',
+      impliedSourceType: 'card'
+    };
+    WrappedComponent = function WrappedComponent() {
+      return _react2.default.createElement('div', null);
+    };
+    WrappedComponent.displayName = 'WrappedComponent';
+  });
+
+  describe('[sync]', function () {
+    // Before ONLY sync tests
+    beforeEach(function () {
+      context = {
+        tag: 'sync',
+        stripe: {
+          elements: jest.fn(),
+          createSource: createSource,
+          createToken: createToken
+        },
+        getRegisteredElements: function getRegisteredElements() {
+          return [elementMock];
+        }
+      };
+    });
+
+    it('sets the correct displayName', function () {
+      expect((0, _inject2.default)(WrappedComponent).displayName).toBe('InjectStripe(WrappedComponent)');
+    });
+
+    it("includes the original component's displayName", function () {
+      WrappedComponent.displayName = 'foo';
+      expect((0, _inject2.default)(WrappedComponent).displayName).toBe('InjectStripe(foo)');
+    });
+
+    it("falls back to the original component's name if no displayName is set", function () {
+      WrappedComponent.displayName = undefined;
+      expect((0, _inject2.default)(WrappedComponent).displayName).toBe('InjectStripe(' + WrappedComponent.name + ')');
+    });
+
+    it('throws when StripeProvider is missing from ancestry', function () {
+      // Prevent the expected console.error from react to keep the test output clean
+      var originalConsoleError = global.console.error;
+      global.console.error = function (msg) {
+        if (!msg.startsWith('Warning: Failed context type: The context `tag` is marked as required') && !msg.startsWith('Warning: Failed context type: The context `getRegisteredElements` is marked as required')) {
+          originalConsoleError(msg);
+        }
+      };
+
+      var Injected = (0, _inject2.default)(WrappedComponent());
+
+      expect(function () {
+        return (0, _enzyme.shallow)(_react2.default.createElement(Injected, null));
+      }).toThrow(/It looks like you are trying to inject Stripe context outside of an Elements context/);
+      global.console.error = originalConsoleError;
+    });
+
+    it('renders <WrappedComponent> with `stripe` prop', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      expect(props).toHaveProperty('stripe');
+      expect(props).toHaveProperty('stripe.createSource');
+      expect(props).toHaveProperty('stripe.createToken');
+    });
+
+    it('props.stripe.createToken calls createToken with element and empty options when called with no arguments', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      props.stripe.createToken();
+      expect(createToken).toHaveBeenCalledWith(elementMock.element, {});
+    });
+
+    it('props.stripe.createToken calls createToken with element and options when called with options object', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      props.stripe.createToken({ foo: 'bar' });
+      expect(createToken).toHaveBeenCalledWith(elementMock.element, {
+        foo: 'bar'
+      });
+    });
+
+    it('props.stripe.createToken calls createToken with string as first argument and options object as second', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      props.stripe.createToken('test', { foo: 'bar' });
+      expect(createToken).toHaveBeenCalledWith('test', { foo: 'bar' });
+    });
+
+    it('props.stripe.createToken throws when called with invalid options type', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      expect(function () {
+        return props.stripe.createToken(1);
+      }).toThrow('Invalid options passed to createToken. Expected an object, got number.');
+    });
+
+    it('props.stripe.createToken throws when no element is in the tree', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: _extends({}, context, {
+          getRegisteredElements: function getRegisteredElements() {
+            return [];
+          }
+        })
+      });
+
+      var props = wrapper.props();
+      expect(props.stripe.createToken).toThrow(/We could not infer which Element you want to use for this operation./);
+    });
+
+    it('props.stripe.createSource errors when called without a type', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      expect(props.stripe.createSource).toThrow(/Invalid Source type/);
+    });
+
+    it('props.stripe.createSource calls createSource with element and type when only type is passed in', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      props.stripe.createSource({ type: 'card' });
+      expect(createSource).toHaveBeenCalledWith(elementMock.element, {
+        type: 'card'
+      });
+    });
+
+    it('props.stripe.createSource calls createSource with options', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      props.stripe.createSource({ type: 'card', foo: 'bar' });
+      expect(createSource).toHaveBeenCalledWith(elementMock.element, {
+        type: 'card',
+        foo: 'bar'
+      });
+    });
+
+    it('props.stripe.createSource calls createSource with options when called with unknown type', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      props.stripe.createSource({ type: 'baz', foo: 'bar' });
+      expect(createSource).toHaveBeenCalledWith({ type: 'baz', foo: 'bar' });
+    });
+
+    it('props.stripe.createSource throws when called with invalid options argument', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      expect(function () {
+        return props.stripe.createSource(1);
+      }).toThrow('Invalid options passed to createSource. Expected an object, got number.');
+    });
+
+    it('props.stripe.createSource throws when called with source type that matches multiple elements', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: _extends({}, context, {
+          getRegisteredElements: function getRegisteredElements() {
+            return [{
+              element: {
+                on: jest.fn()
+              },
+              impliedTokenType: 'card',
+              impliedSourceType: 'card'
+            }, {
+              element: {
+                on: jest.fn()
+              },
+              impliedTokenType: 'card',
+              impliedSourceType: 'card'
+            }];
+          }
+        })
+      });
+
+      var props = wrapper.props();
+      expect(function () {
+        return props.stripe.createSource({ type: 'card' });
+      }).toThrow(/We could not infer which Element you want to use for this operation/);
+    });
+
+    it('throws when `getWrappedInstance` is called without `{withRef: true}` option.', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.mount)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      expect(function () {
+        return wrapper.node.getWrappedInstance();
+      }).toThrow('To access the wrapped instance, the `{withRef: true}` option must be set when calling `injectStripe()`');
+    });
+
+    it('`getWrappedInstance` works whith `{withRef: true}` option.', function () {
+      // refs won't work with stateless functional components
+      var WrappedClassComponent = function (_React$Component) {
+        _inherits(WrappedClassComponent, _React$Component);
+
+        function WrappedClassComponent() {
+          _classCallCheck(this, WrappedClassComponent);
+
+          return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));
+        }
+
+        WrappedClassComponent.prototype.render = function render() {
+          return _react2.default.createElement(
+            'div',
+            null,
+            this.foo
+          );
+        };
+
+        return WrappedClassComponent;
+      }(_react2.default.Component);
+
+      WrappedClassComponent.displayName = 'WrappedClassComponent';
+
+
+      var Injected = (0, _inject2.default)(WrappedClassComponent, { withRef: true });
+
+      var wrapper = (0, _enzyme.mount)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      expect(wrapper.node.getWrappedInstance() instanceof WrappedClassComponent).toBe(true);
+    });
+  });
+
+  describe('[async]', function () {
+    it('props.stripe is null if addStripeLoadListener never fires', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+      var wrapper = (0, _enzyme.mount)(_react2.default.createElement(Injected, null), {
+        context: {
+          tag: 'async',
+          // simulate StripeProvider never giving us a StripeShape
+          addStripeLoadListener: function addStripeLoadListener() {},
+          getRegisteredElements: function getRegisteredElements() {
+            return [elementMock];
+          }
+        }
+      });
+
+      var props = wrapper.find(WrappedComponent).props();
+      expect(props).toHaveProperty('stripe', null);
+    });
+
+    it('props.stripe is set when addStripeLoadListener fires', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+      var wrapper = (0, _enzyme.mount)(_react2.default.createElement(Injected, null), {
+        context: {
+          tag: 'async',
+          // simulate StripeProvider eventually giving us a StripeShape
+          addStripeLoadListener: function addStripeLoadListener(fn) {
+            fn({
+              elements: jest.fn(),
+              createSource: createSource,
+              createToken: createToken
+            });
+          },
+          getRegisteredElements: function getRegisteredElements() {
+            return [elementMock];
+          }
+        }
+      });
+
+      var props = wrapper.find(WrappedComponent).props();
+      expect(props).toHaveProperty('stripe');
+      expect(props).toHaveProperty('stripe.createToken');
+      expect(props).toHaveProperty('stripe.createSource');
+    });
+  });
+});
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/es/decls/Stripe.js b/node_modules/react-stripe-elements/es/decls/Stripe.js
new file mode 100644
index 00000000..9a390c31
--- /dev/null
+++ b/node_modules/react-stripe-elements/es/decls/Stripe.js
@@ -0,0 +1 @@
+"use strict";
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/es/index.js b/node_modules/react-stripe-elements/es/index.js
new file mode 100644
index 00000000..5f2e9c40
--- /dev/null
+++ b/node_modules/react-stripe-elements/es/index.js
@@ -0,0 +1,70 @@
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.IdealBankElement = exports.IbanElement = exports.PaymentRequestButtonElement = exports.PostalCodeElement = exports.CardCVCElement = exports.CardExpiryElement = exports.CardNumberElement = exports.CardElement = exports.Elements = exports.injectStripe = exports.StripeProvider = undefined;
+
+var _Provider = require('./components/Provider');
+
+var _Provider2 = _interopRequireDefault(_Provider);
+
+var _inject = require('./components/inject');
+
+var _inject2 = _interopRequireDefault(_inject);
+
+var _Elements = require('./components/Elements');
+
+var _Elements2 = _interopRequireDefault(_Elements);
+
+var _Element = require('./components/Element');
+
+var _Element2 = _interopRequireDefault(_Element);
+
+var _PaymentRequestButtonElement = require('./components/PaymentRequestButtonElement');
+
+var _PaymentRequestButtonElement2 = _interopRequireDefault(_PaymentRequestButtonElement);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+// Define Elements, and register their implied token / source types for
+// automatic token / source creation.
+
+// Card
+var CardElement = (0, _Element2.default)('card', {
+  impliedTokenType: 'card',
+  impliedSourceType: 'card'
+});
+
+// Split Fields
+// Note: we only register the CardNumberElement for split fields so that we have
+// a unique Element to infer when calling `wrappedCreateToken` or `wrappedCreateSource`.
+
+var CardNumberElement = (0, _Element2.default)('cardNumber', {
+  impliedTokenType: 'card',
+  impliedSourceType: 'card'
+});
+var CardExpiryElement = (0, _Element2.default)('cardExpiry');
+var CardCVCElement = (0, _Element2.default)('cardCvc');
+var PostalCodeElement = (0, _Element2.default)('postalCode');
+
+// IBAN
+var IbanElement = (0, _Element2.default)('iban', {
+  impliedTokenType: 'bank_account',
+  impliedSourceType: 'sepa_debit'
+});
+
+// iDEAL Bank
+var IdealBankElement = (0, _Element2.default)('idealBank', { impliedSourceType: 'ideal' });
+
+exports.StripeProvider = _Provider2.default;
+exports.injectStripe = _inject2.default;
+exports.Elements = _Elements2.default;
+exports.CardElement = CardElement;
+exports.CardNumberElement = CardNumberElement;
+exports.CardExpiryElement = CardExpiryElement;
+exports.CardCVCElement = CardCVCElement;
+exports.PostalCodeElement = PostalCodeElement;
+exports.PaymentRequestButtonElement = _PaymentRequestButtonElement2.default;
+exports.IbanElement = IbanElement;
+exports.IdealBankElement = IdealBankElement;
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/es/index.test.js b/node_modules/react-stripe-elements/es/index.test.js
new file mode 100644
index 00000000..687cc622
--- /dev/null
+++ b/node_modules/react-stripe-elements/es/index.test.js
@@ -0,0 +1,411 @@
+'use strict';
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _enzyme = require('enzyme');
+
+var _index = require('./index');
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @noflow
+
+
+var PureWrapper = function (_React$PureComponent) {
+  _inherits(PureWrapper, _React$PureComponent);
+
+  function PureWrapper() {
+    _classCallCheck(this, PureWrapper);
+
+    return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));
+  }
+
+  PureWrapper.prototype.render = function render() {
+    return _react2.default.createElement(
+      'div',
+      null,
+      this.props.children
+    );
+  };
+
+  return PureWrapper;
+}(_react2.default.PureComponent);
+
+describe('index', function () {
+  var elementMock = void 0;
+  var elementsMock = void 0;
+  var stripeMock = void 0;
+  beforeEach(function () {
+    elementMock = {
+      mount: jest.fn(),
+      destroy: jest.fn(),
+      on: jest.fn(),
+      update: jest.fn()
+    };
+    elementsMock = {
+      create: jest.fn().mockReturnValue(elementMock)
+    };
+    stripeMock = {
+      elements: jest.fn().mockReturnValue(elementsMock),
+      createToken: jest.fn(),
+      createSource: jest.fn()
+    };
+
+    window.Stripe = jest.fn().mockReturnValue(stripeMock);
+  });
+
+  var WrappedCheckout = function WrappedCheckout(type, additionalOptions) {
+    var MyCheckout = function MyCheckout(props) {
+      return _react2.default.createElement(
+        'form',
+        {
+          onSubmit: function onSubmit(ev) {
+            ev.preventDefault();
+            if (type === 'token') {
+              props.stripe.createToken(additionalOptions);
+            } else {
+              props.stripe.createSource(additionalOptions);
+            }
+          }
+        },
+        props.children,
+        _react2.default.createElement(
+          'button',
+          null,
+          'Pay'
+        )
+      );
+    };
+    return (0, _index.injectStripe)(MyCheckout);
+  };
+
+  it('smoke test', function () {
+    var Checkout = WrappedCheckout('token');
+    var app = (0, _enzyme.mount)(_react2.default.createElement(
+      _index.StripeProvider,
+      { apiKey: 'pk_test_xxx' },
+      _react2.default.createElement(
+        _index.Elements,
+        null,
+        _react2.default.createElement(
+          Checkout,
+          null,
+          'Hello world',
+          _react2.default.createElement(_index.CardElement, null)
+        )
+      )
+    ));
+    expect(app.text()).toMatch(/Hello world/);
+  });
+
+  it("shouldn't choke on pure components", function () {
+    var Checkout = WrappedCheckout('token');
+    var app = (0, _enzyme.mount)(_react2.default.createElement(
+      _index.StripeProvider,
+      { apiKey: 'pk_test_xxx' },
+      _react2.default.createElement(
+        _index.Elements,
+        null,
+        _react2.default.createElement(
+          PureWrapper,
+          null,
+          _react2.default.createElement(
+            Checkout,
+            null,
+            _react2.default.createElement(_index.CardElement, null)
+          )
+        )
+      )
+    ));
+    expect(function () {
+      return app.find('form').simulate('submit');
+    }).not.toThrow();
+  });
+
+  describe('createToken', function () {
+    it('should be called when set up properly', function () {
+      var Checkout = WrappedCheckout('token');
+      var app = (0, _enzyme.mount)(_react2.default.createElement(
+        _index.StripeProvider,
+        { apiKey: 'pk_test_xxx' },
+        _react2.default.createElement(
+          _index.Elements,
+          null,
+          _react2.default.createElement(
+            Checkout,
+            null,
+            'Hello world',
+            _react2.default.createElement(_index.CardElement, null)
+          )
+        )
+      ));
+      app.find('form').simulate('submit');
+      expect(stripeMock.createToken).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createToken).toHaveBeenCalledWith(elementMock, {});
+    });
+
+    it('should be called when set up properly (split)', function () {
+      var Checkout = WrappedCheckout('token');
+      var app = (0, _enzyme.mount)(_react2.default.createElement(
+        _index.StripeProvider,
+        { apiKey: 'pk_test_xxx' },
+        _react2.default.createElement(
+          _index.Elements,
+          null,
+          _react2.default.createElement(
+            Checkout,
+            null,
+            'Hello world',
+            _react2.default.createElement(_index.CardNumberElement, null),
+            _react2.default.createElement(_index.CardExpiryElement, null),
+            _react2.default.createElement(_index.CardCVCElement, null),
+            _react2.default.createElement(_index.PostalCodeElement, null)
+          )
+        )
+      ));
+      app.find('form').simulate('submit');
+      expect(stripeMock.createToken).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createToken).toHaveBeenCalledWith(elementMock, {});
+    });
+
+    it('should be callable for other token types', function () {
+      var Checkout = (0, _index.injectStripe)(function (props) {
+        return _react2.default.createElement(
+          'form',
+          {
+            onSubmit: function onSubmit(ev) {
+              ev.preventDefault();
+              props.stripe.createToken('bank_account', { some: 'data' });
+            }
+          },
+          props.children,
+          _react2.default.createElement(
+            'button',
+            null,
+            'Pay'
+          )
+        );
+      });
+      var app = (0, _enzyme.mount)(_react2.default.createElement(
+        _index.StripeProvider,
+        { apiKey: 'pk_test_xxx' },
+        _react2.default.createElement(
+          _index.Elements,
+          null,
+          _react2.default.createElement(
+            Checkout,
+            null,
+            'Hello world'
+          )
+        )
+      ));
+      app.find('form').simulate('submit');
+      expect(stripeMock.createToken).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createToken).toHaveBeenCalledWith('bank_account', {
+        some: 'data'
+      });
+    });
+  });
+
+  describe('createSource', function () {
+    it('should be called when set up properly', function () {
+      var Checkout = WrappedCheckout('source', { type: 'card' });
+      var app = (0, _enzyme.mount)(_react2.default.createElement(
+        _index.StripeProvider,
+        { apiKey: 'pk_test_xxx' },
+        _react2.default.createElement(
+          _index.Elements,
+          null,
+          _react2.default.createElement(
+            Checkout,
+            null,
+            'Hello world',
+            _react2.default.createElement(_index.CardElement, null)
+          )
+        )
+      ));
+      app.find('form').simulate('submit');
+      expect(stripeMock.createSource).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createSource).toHaveBeenCalledWith(elementMock, {
+        type: 'card'
+      });
+    });
+
+    it('should take additional parameters', function () {
+      var Checkout = WrappedCheckout('source', {
+        type: 'card',
+        owner: { name: 'Michelle' }
+      });
+      var app = (0, _enzyme.mount)(_react2.default.createElement(
+        _index.StripeProvider,
+        { apiKey: 'pk_test_xxx' },
+        _react2.default.createElement(
+          _index.Elements,
+          null,
+          _react2.default.createElement(
+            Checkout,
+            null,
+            'Hello world',
+            _react2.default.createElement(_index.CardElement, null)
+          )
+        )
+      ));
+      app.find('form').simulate('submit');
+      expect(stripeMock.createSource).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createSource).toHaveBeenCalledWith(elementMock, {
+        type: 'card',
+        owner: { name: 'Michelle' }
+      });
+    });
+
+    it('should be callable when no Element is found', function () {
+      var Checkout = WrappedCheckout('source', {
+        type: 'card',
+        token: 'tok_xxx'
+      });
+      var app = (0, _enzyme.mount)(_react2.default.createElement(
+        _index.StripeProvider,
+        { apiKey: 'pk_test_xxx' },
+        _react2.default.createElement(
+          _index.Elements,
+          null,
+          _react2.default.createElement(
+            Checkout,
+            null,
+            'Hello world'
+          )
+        )
+      ));
+      app.find('form').simulate('submit');
+      expect(stripeMock.createSource).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createSource).toHaveBeenCalledWith({
+        type: 'card',
+        token: 'tok_xxx'
+      });
+    });
+
+    it('should be callable for other source types', function () {
+      var Checkout = (0, _index.injectStripe)(function (props) {
+        return _react2.default.createElement(
+          'form',
+          {
+            onSubmit: function onSubmit(ev) {
+              ev.preventDefault();
+              props.stripe.createSource({
+                type: 'three_d_secure',
+                three_d_secure: { foo: 'bar' }
+              });
+            }
+          },
+          props.children,
+          _react2.default.createElement(
+            'button',
+            null,
+            'Pay'
+          )
+        );
+      });
+      var app = (0, _enzyme.mount)(_react2.default.createElement(
+        _index.StripeProvider,
+        { apiKey: 'pk_test_xxx' },
+        _react2.default.createElement(
+          _index.Elements,
+          null,
+          _react2.default.createElement(
+            Checkout,
+            null,
+            'Hello world'
+          )
+        )
+      ));
+      app.find('form').simulate('submit');
+      expect(stripeMock.createSource).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createSource).toHaveBeenCalledWith({
+        type: 'three_d_secure',
+        three_d_secure: { foo: 'bar' }
+      });
+    });
+  });
+
+  describe('errors', function () {
+    describe('createSource', function () {
+      it('should throw if no source type is specified', function () {
+        var Checkout = WrappedCheckout('source');
+        var app = (0, _enzyme.mount)(_react2.default.createElement(
+          _index.StripeProvider,
+          { apiKey: 'pk_test_xxx' },
+          _react2.default.createElement(
+            _index.Elements,
+            null,
+            _react2.default.createElement(
+              Checkout,
+              null,
+              'Hello world',
+              _react2.default.createElement(_index.CardElement, null)
+            )
+          )
+        ));
+        expect(function () {
+          return app.find('form').simulate('submit');
+        }).toThrowError(/Invalid Source type/);
+      });
+    });
+
+    describe('createToken', function () {
+      it('should throw when not in Elements', function () {
+        // Prevent the expected console.error from react to keep the test output clean
+        var originalConsoleError = global.console.error;
+        global.console.error = function (msg) {
+          if (!msg.startsWith('Warning: Failed context type: The context `getRegisteredElements` is marked as required')) {
+            originalConsoleError(msg);
+          }
+        };
+
+        var Checkout = WrappedCheckout('token');
+        expect(function () {
+          return (0, _enzyme.mount)(_react2.default.createElement(
+            _index.StripeProvider,
+            { apiKey: 'pk_test_xxx' },
+            _react2.default.createElement(
+              Checkout,
+              null,
+              _react2.default.createElement(
+                _index.Elements,
+                null,
+                _react2.default.createElement(_index.CardElement, null)
+              )
+            )
+          ));
+        }).toThrowError('Elements context');
+
+        global.console.error = originalConsoleError;
+      });
+
+      it('should throw when no Element found', function () {
+        var Checkout = WrappedCheckout('token');
+        var app = (0, _enzyme.mount)(_react2.default.createElement(
+          _index.StripeProvider,
+          { apiKey: 'pk_test_xxx' },
+          _react2.default.createElement(
+            _index.Elements,
+            null,
+            _react2.default.createElement(
+              Checkout,
+              null,
+              'Hello world'
+            )
+          )
+        ));
+        expect(function () {
+          return app.find('form').simulate('submit');
+        }).toThrowError(/did not specify/);
+      });
+    });
+  });
+});
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/es/utils/isEqual.js b/node_modules/react-stripe-elements/es/utils/isEqual.js
new file mode 100644
index 00000000..d182777a
--- /dev/null
+++ b/node_modules/react-stripe-elements/es/utils/isEqual.js
@@ -0,0 +1,56 @@
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+var PLAIN_OBJECT_STR = '[object Object]';
+
+var isEqual = function isEqual(left, right) {
+  if ((typeof left === 'undefined' ? 'undefined' : _typeof(left)) !== 'object' || (typeof right === 'undefined' ? 'undefined' : _typeof(right)) !== 'object') {
+    return left === right;
+  }
+
+  if (left === null || right === null) return left === right;
+
+  var leftArray = Array.isArray(left);
+  var rightArray = Array.isArray(right);
+
+  if (leftArray !== rightArray) return false;
+
+  var leftPlainObject = Object.prototype.toString.call(left) === PLAIN_OBJECT_STR;
+  var rightPlainObject = Object.prototype.toString.call(right) === PLAIN_OBJECT_STR;
+
+  if (leftPlainObject !== rightPlainObject) return false;
+
+  if (!leftPlainObject && !leftArray) return false;
+
+  var leftKeys = Object.keys(left);
+  var rightKeys = Object.keys(right);
+
+  if (leftKeys.length !== rightKeys.length) return false;
+
+  var keySet = {};
+  for (var i = 0; i < leftKeys.length; i += 1) {
+    keySet[leftKeys[i]] = true;
+  }
+  for (var _i = 0; _i < rightKeys.length; _i += 1) {
+    keySet[rightKeys[_i]] = true;
+  }
+  var allKeys = Object.keys(keySet);
+  if (allKeys.length !== leftKeys.length) {
+    return false;
+  }
+
+  var l = left;
+  var r = right;
+  var pred = function pred(key) {
+    return isEqual(l[key], r[key]);
+  };
+
+  return allKeys.every(pred);
+};
+
+exports.default = isEqual;
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/es/utils/isEqual.test.js b/node_modules/react-stripe-elements/es/utils/isEqual.test.js
new file mode 100644
index 00000000..af68e204
--- /dev/null
+++ b/node_modules/react-stripe-elements/es/utils/isEqual.test.js
@@ -0,0 +1,34 @@
+'use strict';
+
+var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); // @noflow
+
+
+var _isEqual = require('./isEqual');
+
+var _isEqual2 = _interopRequireDefault(_isEqual);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+describe('isEqual', function () {
+  [['a', 'a'], [100, 100], [false, false], [undefined, undefined], [null, null], [{}, {}], [{ a: 10 }, { a: 10 }], [{ a: null }, { a: null }], [{ a: undefined }, { a: undefined }], [[], []], [['a', 'b', 'c'], ['a', 'b', 'c']], [['a', { inner: [12] }, 'c'], ['a', { inner: [12] }, 'c']], [{ a: { nested: { more: [1, 2, 3] } } }, { a: { nested: { more: [1, 2, 3] } } }]].forEach(function (_ref) {
+    var _ref2 = _slicedToArray(_ref, 2),
+        left = _ref2[0],
+        right = _ref2[1];
+
+    it('should should return true for isEqual(' + JSON.stringify(left) + ', ' + JSON.stringify(right) + ')', function () {
+      expect((0, _isEqual2.default)(left, right)).toBe(true);
+      expect((0, _isEqual2.default)(right, left)).toBe(true);
+    });
+  });
+
+  [['a', 'b'], ['0', 0], [new Date(1), {}], [false, ''], [false, true], [null, undefined], [{}, []], [/foo/, /foo/], [new Date(1), new Date(1)], [{ a: 10 }, { a: 11 }], [['a', 'b', 'c'], ['a', 'b', 'c', 'd']], [['a', 'b', 'c', 'd'], ['a', 'b', 'c']], [['a', { inner: [12] }, 'c'], ['a', { inner: [null] }, 'c']], [{ a: { nested: { more: [1, 2, 3] } } }, { b: { nested: { more: [1, 2, 3] } } }]].forEach(function (_ref3) {
+    var _ref4 = _slicedToArray(_ref3, 2),
+        left = _ref4[0],
+        right = _ref4[1];
+
+    it('should should return false for isEqual(' + JSON.stringify(left) + ', ' + JSON.stringify(right) + ')', function () {
+      expect((0, _isEqual2.default)(left, right)).toBe(false);
+      expect((0, _isEqual2.default)(right, left)).toBe(false);
+    });
+  });
+});
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/es/utils/shallowEqual.js b/node_modules/react-stripe-elements/es/utils/shallowEqual.js
new file mode 100644
index 00000000..ef02a909
--- /dev/null
+++ b/node_modules/react-stripe-elements/es/utils/shallowEqual.js
@@ -0,0 +1,15 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+var shallowEqual = function shallowEqual(a, b) {
+  var keysA = Object.keys(a);
+  var keysB = Object.keys(b);
+
+  return keysA.length === keysB.length && keysA.every(function (key) {
+    return b.hasOwnProperty(key) && b[key] === a[key];
+  });
+};
+
+exports.default = shallowEqual;
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/es/utils/shallowEqual.test.js b/node_modules/react-stripe-elements/es/utils/shallowEqual.test.js
new file mode 100644
index 00000000..ec967c0a
--- /dev/null
+++ b/node_modules/react-stripe-elements/es/utils/shallowEqual.test.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var _shallowEqual = require('./shallowEqual');
+
+var _shallowEqual2 = _interopRequireDefault(_shallowEqual);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+describe('shallowEqual', function () {
+  it('should work', function () {
+    expect((0, _shallowEqual2.default)({}, {})).toBe(true);
+    expect((0, _shallowEqual2.default)({ a: 1 }, { a: 1 })).toBe(true);
+
+    expect((0, _shallowEqual2.default)({ a: 1, b: 2 }, { a: 1 })).toBe(false);
+    expect((0, _shallowEqual2.default)({ a: {} }, { a: {} })).toBe(false);
+    expect((0, _shallowEqual2.default)({ a: undefined }, { b: undefined })).toBe(false);
+  });
+}); // @noflow
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/lib/components/Element.js b/node_modules/react-stripe-elements/lib/components/Element.js
new file mode 100644
index 00000000..8a65e29a
--- /dev/null
+++ b/node_modules/react-stripe-elements/lib/components/Element.js
@@ -0,0 +1,159 @@
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _propTypes = require('prop-types');
+
+var _propTypes2 = _interopRequireDefault(_propTypes);
+
+var _isEqual = require('../utils/isEqual');
+
+var _isEqual2 = _interopRequireDefault(_isEqual);
+
+var _Elements = require('./Elements');
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
+
+var noop = function noop() {};
+
+var _extractOptions = function _extractOptions(props) {
+  var id = props.id,
+      className = props.className,
+      onChange = props.onChange,
+      onFocus = props.onFocus,
+      onBlur = props.onBlur,
+      onReady = props.onReady,
+      options = _objectWithoutProperties(props, ['id', 'className', 'onChange', 'onFocus', 'onBlur', 'onReady']);
+
+  return options;
+};
+
+var capitalized = function capitalized(str) {
+  return str.charAt(0).toUpperCase() + str.slice(1);
+};
+
+var Element = function Element(type) {
+  var _class, _temp;
+
+  var hocOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  return _temp = _class = function (_React$Component) {
+    _inherits(_class, _React$Component);
+
+    function _class(props, context) {
+      _classCallCheck(this, _class);
+
+      var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));
+
+      _this.handleRef = function (ref) {
+        _this._ref = ref;
+      };
+
+      _this._element = null;
+
+      var options = _extractOptions(_this.props);
+      // We keep track of the extracted options on this._options to avoid re-rendering.
+      // (We would unnecessarily re-render if we were tracking them with state.)
+      _this._options = options;
+      return _this;
+    }
+
+    _class.prototype.componentDidMount = function componentDidMount() {
+      var _this2 = this;
+
+      this.context.addElementsLoadListener(function (elements) {
+        var element = elements.create(type, _this2._options);
+        _this2._element = element;
+
+        _this2._setupEventListeners(element);
+
+        element.mount(_this2._ref);
+
+        // Register Element for automatic token / source creation
+        if (hocOptions.impliedTokenType || hocOptions.impliedSourceType) {
+          _this2.context.registerElement(element, hocOptions.impliedTokenType, hocOptions.impliedSourceType);
+        }
+      });
+    };
+
+    _class.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
+      var options = _extractOptions(nextProps);
+      if (Object.keys(options).length !== 0 && !(0, _isEqual2.default)(options, this._options)) {
+        this._options = options;
+        if (this._element) {
+          this._element.update(options);
+        }
+      }
+    };
+
+    _class.prototype.componentWillUnmount = function componentWillUnmount() {
+      if (this._element) {
+        var element = this._element;
+        element.destroy();
+        this.context.unregisterElement(element);
+      }
+    };
+
+    _class.prototype._setupEventListeners = function _setupEventListeners(element) {
+      var _this3 = this;
+
+      element.on('ready', function () {
+        _this3.props.onReady(_this3._element);
+      });
+
+      element.on('change', function (change) {
+        _this3.props.onChange(change);
+      });
+
+      element.on('blur', function () {
+        var _props;
+
+        return (_props = _this3.props).onBlur.apply(_props, arguments);
+      });
+      element.on('focus', function () {
+        var _props2;
+
+        return (_props2 = _this3.props).onFocus.apply(_props2, arguments);
+      });
+    };
+
+    _class.prototype.render = function render() {
+      return _react2.default.createElement('div', {
+        id: this.props.id,
+        className: this.props.className,
+        ref: this.handleRef
+      });
+    };
+
+    return _class;
+  }(_react2.default.Component), _class.propTypes = {
+    id: _propTypes2.default.string,
+    className: _propTypes2.default.string,
+    onChange: _propTypes2.default.func,
+    onBlur: _propTypes2.default.func,
+    onFocus: _propTypes2.default.func,
+    onReady: _propTypes2.default.func
+  }, _class.defaultProps = {
+    id: undefined,
+    className: undefined,
+    onChange: noop,
+    onBlur: noop,
+    onFocus: noop,
+    onReady: noop
+  }, _class.contextTypes = _Elements.elementContextTypes, _class.displayName = capitalized(type) + 'Element', _temp;
+};
+
+exports.default = Element;
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/lib/components/Element.test.js b/node_modules/react-stripe-elements/lib/components/Element.test.js
new file mode 100644
index 00000000..7db707b7
--- /dev/null
+++ b/node_modules/react-stripe-elements/lib/components/Element.test.js
@@ -0,0 +1,155 @@
+'use strict';
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _enzyme = require('enzyme');
+
+var _Element = require('./Element');
+
+var _Element2 = _interopRequireDefault(_Element);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+describe('Element', function () {
+  var elementMock = void 0;
+  var elementsMock = void 0;
+  var context = void 0;
+  beforeEach(function () {
+    elementMock = {
+      mount: jest.fn(),
+      destroy: jest.fn(),
+      on: jest.fn(function (event, cb) {
+        if (event === 'ready') {
+          cb();
+        }
+      }),
+      update: jest.fn()
+    };
+    elementsMock = {
+      create: jest.fn().mockReturnValue(elementMock)
+    };
+    context = {
+      addElementsLoadListener: function addElementsLoadListener(fn) {
+        return fn(elementsMock);
+      },
+      registerElement: jest.fn(),
+      unregisterElement: jest.fn()
+    };
+  });
+
+  it('should pass id to the DOM element', function () {
+    var id = 'my-id';
+    var CardElement = (0, _Element2.default)('card', {
+      impliedTokenType: 'card',
+      impliedSourceType: 'card'
+    });
+    var element = (0, _enzyme.shallow)(_react2.default.createElement(CardElement, { id: id }), { context: context });
+    expect(element.find('#my-id').length).toBe(1);
+  });
+
+  it('should pass className to the DOM element', function () {
+    var className = 'my-class';
+    var CardElement = (0, _Element2.default)('card', {
+      impliedTokenType: 'card',
+      impliedSourceType: 'card'
+    });
+    var element = (0, _enzyme.shallow)(_react2.default.createElement(CardElement, { className: className }), { context: context });
+    expect(element.first().hasClass(className)).toBeTruthy();
+  });
+
+  it('should call the right hooks for a registered Element', function () {
+    var TestElement = (0, _Element2.default)('test', {
+      impliedTokenType: 'foo',
+      impliedSourceType: 'bar'
+    });
+    var element = (0, _enzyme.mount)(_react2.default.createElement(TestElement, { onChange: jest.fn() }), { context: context });
+
+    expect(context.registerElement).toHaveBeenCalledTimes(1);
+    expect(context.registerElement).toHaveBeenCalledWith(elementMock, 'foo', 'bar');
+
+    element.unmount();
+    expect(elementMock.destroy).toHaveBeenCalledTimes(1);
+    expect(context.unregisterElement).toHaveBeenCalledTimes(1);
+    expect(context.unregisterElement).toHaveBeenCalledWith(elementMock);
+  });
+
+  it('should call the right hooks for a non-registered Element', function () {
+    var TestElement = (0, _Element2.default)('test');
+    var element = (0, _enzyme.mount)(_react2.default.createElement(TestElement, { onChange: jest.fn() }), { context: context });
+
+    expect(context.registerElement).toHaveBeenCalledTimes(0);
+
+    element.unmount();
+    expect(elementMock.destroy).toHaveBeenCalledTimes(1);
+    expect(context.unregisterElement).toHaveBeenCalledTimes(1);
+    expect(context.unregisterElement).toHaveBeenCalledWith(elementMock);
+  });
+
+  it('should call onReady', function () {
+    var CardElement = (0, _Element2.default)('card', {
+      impliedTokenType: 'card',
+      impliedSourceType: 'card'
+    });
+    var onReadyMock = jest.fn();
+
+    (0, _enzyme.mount)(_react2.default.createElement(CardElement, { onReady: onReadyMock }), {
+      context: context
+    });
+
+    expect(elementMock.on.mock.calls[0][0]).toBe('ready');
+    expect(onReadyMock).toHaveBeenCalledWith(elementMock);
+  });
+
+  it('should update the Element when props change', function () {
+    var style = {
+      base: {
+        fontSize: '16px'
+      }
+    };
+    var TestElement = (0, _Element2.default)('test', {
+      impliedTokenType: 'foo',
+      impliedSourceType: 'bar'
+    });
+    var element = (0, _enzyme.mount)(_react2.default.createElement(TestElement, { onChange: jest.fn(), style: style }), {
+      context: context
+    });
+
+    expect(elementMock.update).toHaveBeenCalledTimes(0);
+    element.setProps({ style: style, onChange: jest.fn() });
+    expect(elementMock.update).toHaveBeenCalledTimes(0);
+
+    element.setProps({
+      style: { base: { fontSize: '20px' } },
+      onChange: jest.fn()
+    });
+    expect(elementMock.update).toHaveBeenCalledTimes(1);
+    expect(elementMock.update).toHaveBeenCalledWith({
+      style: { base: { fontSize: '20px' } }
+    });
+  });
+
+  it("re-rendering with new props should still work if addElementsLoadListener hasn't fired yet", function () {
+    // no-op function so that any registered listeners are never woken up
+    context.addElementsLoadListener = function () {};
+
+    var placeholder = 'hello';
+    var CardElement = (0, _Element2.default)('card', {
+      impliedTokenType: 'card',
+      impliedSourceType: 'card'
+    });
+    var element = (0, _enzyme.shallow)(_react2.default.createElement(CardElement, { placeholder: placeholder }), {
+      context: context
+    });
+
+    expect(function () {
+      return element.setProps({ placeholder: 'placeholder' });
+    }).not.toThrow();
+  });
+
+  it('should have a displayName based on the type argument', function () {
+    var TestElement = (0, _Element2.default)('test');
+    expect(TestElement.displayName).toEqual('TestElement');
+  });
+}); // @noflow
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/lib/components/Elements.js b/node_modules/react-stripe-elements/lib/components/Elements.js
new file mode 100644
index 00000000..555eae83
--- /dev/null
+++ b/node_modules/react-stripe-elements/lib/components/Elements.js
@@ -0,0 +1,126 @@
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.elementContextTypes = exports.injectContextTypes = undefined;
+
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _propTypes = require('prop-types');
+
+var _propTypes2 = _interopRequireDefault(_propTypes);
+
+var _Provider = require('./Provider');
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
+
+function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+var injectContextTypes = exports.injectContextTypes = {
+  getRegisteredElements: _propTypes2.default.func.isRequired
+};
+
+var elementContextTypes = exports.elementContextTypes = {
+  addElementsLoadListener: _propTypes2.default.func.isRequired,
+  registerElement: _propTypes2.default.func.isRequired,
+  unregisterElement: _propTypes2.default.func.isRequired
+};
+
+var Elements = function (_React$Component) {
+  _inherits(Elements, _React$Component);
+
+  function Elements(props, context) {
+    _classCallCheck(this, Elements);
+
+    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));
+
+    _this.handleRegisterElement = function (element, impliedTokenType, impliedSourceType) {
+      _this.setState(function (prevState) {
+        return {
+          registeredElements: [].concat(_toConsumableArray(prevState.registeredElements), [_extends({
+            element: element
+          }, impliedTokenType ? { impliedTokenType: impliedTokenType } : {}, impliedSourceType ? { impliedSourceType: impliedSourceType } : {})])
+        };
+      });
+    };
+
+    _this.handleUnregisterElement = function (el) {
+      _this.setState(function (prevState) {
+        return {
+          registeredElements: prevState.registeredElements.filter(function (_ref) {
+            var element = _ref.element;
+            return element !== el;
+          })
+        };
+      });
+    };
+
+    _this.state = {
+      registeredElements: []
+    };
+    return _this;
+  }
+
+  Elements.prototype.getChildContext = function getChildContext() {
+    var _this2 = this;
+
+    return {
+      addElementsLoadListener: function addElementsLoadListener(fn) {
+        // Return the existing elements instance if we already have one.
+        if (_this2._elements) {
+          fn(_this2._elements);
+          return;
+        }
+
+        var _props = _this2.props,
+            children = _props.children,
+            options = _objectWithoutProperties(_props, ['children']);
+
+        if (_this2.context.tag === 'sync') {
+          _this2._elements = _this2.context.stripe.elements(options);
+          fn(_this2._elements);
+        } else {
+          _this2.context.addStripeLoadListener(function (stripe) {
+            if (_this2._elements) {
+              fn(_this2._elements);
+            } else {
+              _this2._elements = stripe.elements(options);
+              fn(_this2._elements);
+            }
+          });
+        }
+      },
+      registerElement: this.handleRegisterElement,
+      unregisterElement: this.handleUnregisterElement,
+      getRegisteredElements: function getRegisteredElements() {
+        return _this2.state.registeredElements;
+      }
+    };
+  };
+
+  Elements.prototype.render = function render() {
+    return _react2.default.Children.only(this.props.children);
+  };
+
+  return Elements;
+}(_react2.default.Component);
+
+Elements.childContextTypes = _extends({}, injectContextTypes, elementContextTypes);
+Elements.contextTypes = _Provider.providerContextTypes;
+Elements.defaultProps = {
+  children: null
+};
+exports.default = Elements;
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/lib/components/Elements.test.js b/node_modules/react-stripe-elements/lib/components/Elements.test.js
new file mode 100644
index 00000000..cd748d1c
--- /dev/null
+++ b/node_modules/react-stripe-elements/lib/components/Elements.test.js
@@ -0,0 +1,93 @@
+'use strict';
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _enzyme = require('enzyme');
+
+var _Elements = require('./Elements');
+
+var _Elements2 = _interopRequireDefault(_Elements);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+describe('Elements', function () {
+  var stripeMock = void 0;
+
+  beforeEach(function () {
+    stripeMock = {
+      elements: jest.fn(function () {
+        throw new Error('elements() should not be called twice in this test.');
+      }).mockReturnValueOnce(true),
+      createToken: jest.fn(),
+      createSource: jest.fn()
+    };
+  });
+
+  it('creates the context', function () {
+    var syncContext = {
+      tag: 'sync',
+      stripe: stripeMock
+    };
+    var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Elements2.default,
+      null,
+      _react2.default.createElement('div', null)
+    ), { context: syncContext });
+    var childContext = wrapper.node.getChildContext();
+    expect(Object.keys(childContext)).toEqual(['addElementsLoadListener', 'registerElement', 'unregisterElement', 'getRegisteredElements']);
+  });
+
+  it('with sync context: addElementsLoadListener returns the same elements instance ', function () {
+    var syncContext = {
+      tag: 'sync',
+      stripe: stripeMock
+    };
+    var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Elements2.default,
+      null,
+      _react2.default.createElement('div', null)
+    ), { context: syncContext });
+    var childContext = wrapper.node.getChildContext();
+
+    var mockCallback = jest.fn();
+    childContext.addElementsLoadListener(mockCallback);
+    expect(mockCallback).toHaveBeenCalledTimes(1);
+    expect(mockCallback).toHaveBeenLastCalledWith(true);
+    childContext.addElementsLoadListener(mockCallback);
+    expect(mockCallback).toHaveBeenCalledTimes(2);
+    expect(mockCallback).toHaveBeenCalledWith(true);
+  });
+
+  it('with async context: addElementsLoadListener returns the same elements instance ', function () {
+    var asyncContext = {
+      tag: 'async',
+      addStripeLoadListener: jest.fn(function (callback) {
+        return setTimeout(function () {
+          return callback(stripeMock);
+        }, 0);
+      })
+    };
+    var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Elements2.default,
+      null,
+      _react2.default.createElement('div', null)
+    ), { context: asyncContext });
+    var childContext = wrapper.node.getChildContext();
+
+    var a = new Promise(function (resolve) {
+      return childContext.addElementsLoadListener(function (first) {
+        expect(first).toEqual(true);
+        resolve();
+      });
+    });
+    var b = new Promise(function (resolve) {
+      return childContext.addElementsLoadListener(function (second) {
+        expect(second).toEqual(true);
+        resolve();
+      });
+    });
+    return Promise.all([a, b]);
+  });
+}); // @noflow
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/lib/components/PaymentRequestButtonElement.js b/node_modules/react-stripe-elements/lib/components/PaymentRequestButtonElement.js
new file mode 100644
index 00000000..eae757cd
--- /dev/null
+++ b/node_modules/react-stripe-elements/lib/components/PaymentRequestButtonElement.js
@@ -0,0 +1,144 @@
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _propTypes = require('prop-types');
+
+var _propTypes2 = _interopRequireDefault(_propTypes);
+
+var _shallowEqual = require('../utils/shallowEqual');
+
+var _shallowEqual2 = _interopRequireDefault(_shallowEqual);
+
+var _Elements = require('./Elements');
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
+
+var noop = function noop() {};
+
+var _extractOptions = function _extractOptions(props) {
+  var id = props.id,
+      className = props.className,
+      onBlur = props.onBlur,
+      onClick = props.onClick,
+      onFocus = props.onFocus,
+      onReady = props.onReady,
+      paymentRequest = props.paymentRequest,
+      options = _objectWithoutProperties(props, ['id', 'className', 'onBlur', 'onClick', 'onFocus', 'onReady', 'paymentRequest']);
+
+  return options;
+};
+
+var PaymentRequestButtonElement = function (_React$Component) {
+  _inherits(PaymentRequestButtonElement, _React$Component);
+
+  function PaymentRequestButtonElement(props, context) {
+    _classCallCheck(this, PaymentRequestButtonElement);
+
+    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));
+
+    _this.handleRef = function (ref) {
+      _this._ref = ref;
+    };
+
+    var options = _extractOptions(props);
+    // We keep track of the extracted options on this._options to avoid re-rendering.
+    // (We would unnecessarily re-render if we were tracking them with state.)
+    _this._options = options;
+    return _this;
+  }
+
+  PaymentRequestButtonElement.prototype.componentDidMount = function componentDidMount() {
+    var _this2 = this;
+
+    this.context.addElementsLoadListener(function (elements) {
+      _this2._element = elements.create('paymentRequestButton', _extends({
+        paymentRequest: _this2.props.paymentRequest
+      }, _this2._options));
+      _this2._element.on('ready', function () {
+        _this2.props.onReady(_this2._element);
+      });
+      _this2._element.on('focus', function () {
+        var _props;
+
+        return (_props = _this2.props).onFocus.apply(_props, arguments);
+      });
+      _this2._element.on('click', function () {
+        var _props2;
+
+        return (_props2 = _this2.props).onClick.apply(_props2, arguments);
+      });
+      _this2._element.on('blur', function () {
+        var _props3;
+
+        return (_props3 = _this2.props).onBlur.apply(_props3, arguments);
+      });
+      _this2._element.mount(_this2._ref);
+    });
+  };
+
+  PaymentRequestButtonElement.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
+    if (this.props.paymentRequest !== nextProps.paymentRequest) {
+      console.warn('Unsupported prop change: paymentRequest is not a customizable property.');
+    }
+    var options = _extractOptions(nextProps);
+    if (Object.keys(options).length !== 0 && !(0, _shallowEqual2.default)(options, this._options)) {
+      this._options = options;
+      this._element.update(options);
+    }
+  };
+
+  PaymentRequestButtonElement.prototype.componentWillUnmount = function componentWillUnmount() {
+    this._element.destroy();
+  };
+
+  PaymentRequestButtonElement.prototype.render = function render() {
+    return _react2.default.createElement('div', {
+      id: this.props.id,
+      className: this.props.className,
+      ref: this.handleRef
+    });
+  };
+
+  return PaymentRequestButtonElement;
+}(_react2.default.Component);
+
+PaymentRequestButtonElement.propTypes = {
+  id: _propTypes2.default.string,
+  className: _propTypes2.default.string,
+  onBlur: _propTypes2.default.func,
+  onClick: _propTypes2.default.func,
+  onFocus: _propTypes2.default.func,
+  onReady: _propTypes2.default.func,
+  paymentRequest: _propTypes2.default.shape({
+    canMakePayment: _propTypes2.default.func.isRequired,
+    on: _propTypes2.default.func.isRequired,
+    show: _propTypes2.default.func.isRequired
+  }).isRequired
+};
+PaymentRequestButtonElement.defaultProps = {
+  id: undefined,
+  className: undefined,
+  onBlur: noop,
+  onClick: noop,
+  onFocus: noop,
+  onReady: noop
+};
+PaymentRequestButtonElement.contextTypes = _Elements.elementContextTypes;
+exports.default = PaymentRequestButtonElement;
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/lib/components/PaymentRequestButtonElement.test.js b/node_modules/react-stripe-elements/lib/components/PaymentRequestButtonElement.test.js
new file mode 100644
index 00000000..17f8a5a4
--- /dev/null
+++ b/node_modules/react-stripe-elements/lib/components/PaymentRequestButtonElement.test.js
@@ -0,0 +1,145 @@
+'use strict';
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _enzyme = require('enzyme');
+
+var _PaymentRequestButtonElement = require('./PaymentRequestButtonElement');
+
+var _PaymentRequestButtonElement2 = _interopRequireDefault(_PaymentRequestButtonElement);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+describe('PaymentRequestButtonElement', function () {
+  var elementMock = void 0;
+  var elementsMock = void 0;
+  var context = void 0;
+  var paymentRequestMock = void 0;
+  beforeEach(function () {
+    elementMock = {
+      mount: jest.fn(),
+      destroy: jest.fn(),
+      on: jest.fn(function (event, cb) {
+        if (event === 'ready') {
+          cb();
+        }
+      }),
+      update: jest.fn()
+    };
+    elementsMock = {
+      create: jest.fn().mockReturnValue(elementMock)
+    };
+    context = {
+      addElementsLoadListener: function addElementsLoadListener(fn) {
+        return fn(elementsMock);
+      },
+      registerElement: jest.fn(),
+      unregisterElement: jest.fn()
+    };
+    paymentRequestMock = {
+      canMakePayment: jest.fn(),
+      on: jest.fn(),
+      show: jest.fn()
+    };
+  });
+
+  it('should pass the id to the DOM element', function () {
+    var id = 'my-id';
+    var element = (0, _enzyme.shallow)(_react2.default.createElement(_PaymentRequestButtonElement2.default, {
+      id: id,
+      paymentRequest: paymentRequestMock
+    }), { context: context });
+    expect(element.find('#' + id)).toBeTruthy();
+  });
+
+  it('should pass the className to the DOM element', function () {
+    var className = 'my-class';
+    var element = (0, _enzyme.shallow)(_react2.default.createElement(_PaymentRequestButtonElement2.default, {
+      className: className,
+      paymentRequest: paymentRequestMock
+    }), { context: context });
+    expect(element.first().hasClass(className)).toBeTruthy();
+  });
+
+  it('should call onReady', function () {
+    var onReadyMock = jest.fn();
+
+    (0, _enzyme.mount)(_react2.default.createElement(_PaymentRequestButtonElement2.default, {
+      onReady: onReadyMock,
+      paymentRequest: paymentRequestMock
+    }), { context: context });
+
+    expect(elementMock.on.mock.calls[0][0]).toBe('ready');
+    expect(onReadyMock).toHaveBeenCalledWith(elementMock);
+  });
+
+  it('should not register the Element', function () {
+    var element = (0, _enzyme.mount)(_react2.default.createElement(_PaymentRequestButtonElement2.default, { paymentRequest: paymentRequestMock }), { context: context });
+
+    expect(context.registerElement).toHaveBeenCalledTimes(0);
+
+    element.unmount();
+    expect(elementMock.destroy).toHaveBeenCalledTimes(1);
+    expect(context.unregisterElement).toHaveBeenCalledTimes(0);
+  });
+
+  it('should update the Element when props change', function () {
+    var style = {
+      paymentRequestButton: {
+        theme: 'dark',
+        height: '64px',
+        type: 'donate'
+      }
+    };
+    var element = (0, _enzyme.mount)(_react2.default.createElement(_PaymentRequestButtonElement2.default, {
+      paymentRequest: paymentRequestMock,
+      style: style
+    }), { context: context });
+
+    expect(elementMock.update).toHaveBeenCalledTimes(0);
+    element.setProps({ style: style });
+    expect(elementMock.update).toHaveBeenCalledTimes(0);
+
+    element.setProps({
+      style: { paymentRequestButton: { height: '64px' } }
+    });
+    expect(elementMock.update).toHaveBeenCalledTimes(1);
+    expect(elementMock.update).toHaveBeenCalledWith({
+      style: { paymentRequestButton: { height: '64px' } }
+    });
+  });
+
+  it('should warn that the paymentRequest prop can not be changed', function () {
+    var style = {
+      paymentRequestButton: {
+        theme: 'dark',
+        height: '64px',
+        type: 'donate'
+      }
+    };
+    var element = (0, _enzyme.mount)(_react2.default.createElement(_PaymentRequestButtonElement2.default, {
+      paymentRequest: paymentRequestMock,
+      style: style
+    }), { context: context });
+
+    expect(elementMock.update).toHaveBeenCalledTimes(0);
+
+    var originalConsoleWarn = global.console.warn;
+    var mockConsoleWarn = jest.fn();
+    global.console.warn = mockConsoleWarn;
+
+    element.setProps({
+      paymentRequest: {
+        canMakePayment: jest.fn(),
+        on: jest.fn(),
+        show: jest.fn()
+      }
+    });
+    expect(elementMock.update).toHaveBeenCalledTimes(0);
+    expect(mockConsoleWarn).toHaveBeenCalledWith('Unsupported prop change: paymentRequest is not a customizable property.');
+
+    global.console.warn = originalConsoleWarn;
+  });
+}); // @noflow
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/lib/components/Provider.js b/node_modules/react-stripe-elements/lib/components/Provider.js
new file mode 100644
index 00000000..80af168a
--- /dev/null
+++ b/node_modules/react-stripe-elements/lib/components/Provider.js
@@ -0,0 +1,176 @@
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.providerContextTypes = undefined;
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _propTypes = require('prop-types');
+
+var _propTypes2 = _interopRequireDefault(_propTypes);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+// TODO(jez) 'sync' and 'async' are bad tag names.
+// TODO(jez) What if redux also uses this.context.tag?
+var providerContextTypes = exports.providerContextTypes = {
+  tag: _propTypes2.default.string.isRequired,
+  stripe: _propTypes2.default.object,
+  addStripeLoadListener: _propTypes2.default.func
+};
+
+var getOrCreateStripe = function getOrCreateStripe(apiKey, options) {
+  /**
+   * Note that this is not meant to be a generic memoization solution.
+   * This is specifically a solution for `StripeProvider`s being initialized
+   * and destroyed regularly (with the same set of props) when users only
+   * use `StripeProvider` for the subtree that contains their checkout form.
+   */
+  window.Stripe.__cachedInstances = window.Stripe.__cachedInstances || {};
+  var cacheKey = 'key=' + apiKey + ' options=' + JSON.stringify(options);
+
+  var stripe = window.Stripe.__cachedInstances[cacheKey] || window.Stripe(apiKey, options);
+  window.Stripe.__cachedInstances[cacheKey] = stripe;
+
+  return stripe;
+};
+
+var ensureStripeShape = function ensureStripeShape(stripe) {
+  if (stripe && stripe.elements && stripe.createSource && stripe.createToken) {
+    return stripe;
+  } else {
+    throw new Error("Please pass a valid Stripe object to StripeProvider. You can obtain a Stripe object by calling 'Stripe(...)' with your publishable key.");
+  }
+};
+
+var Provider = function (_React$Component) {
+  _inherits(Provider, _React$Component);
+
+  // on the other hand: childContextTypes is *required* to use context.
+  function Provider(props) {
+    _classCallCheck(this, Provider);
+
+    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));
+
+    if (_this.props.apiKey && _this.props.stripe) {
+      throw new Error("Please pass either 'apiKey' or 'stripe' to StripeProvider, not both.");
+    } else if (_this.props.apiKey) {
+      if (!window.Stripe) {
+        throw new Error("Please load Stripe.js (https://js.stripe.com/v3/) on this page to use react-stripe-elements. If Stripe.js isn't available yet (it's loading asynchronously, or you're using server-side rendering), see https://github.com/stripe/react-stripe-elements#advanced-integrations");
+      } else {
+        var _this$props = _this.props,
+            _apiKey = _this$props.apiKey,
+            _children = _this$props.children,
+            _stripe = _this$props.stripe,
+            options = _objectWithoutProperties(_this$props, ['apiKey', 'children', 'stripe']);
+
+        _this._meta = {
+          tag: 'sync',
+          stripe: getOrCreateStripe(_apiKey, options)
+        };
+      }
+    } else if (_this.props.stripe) {
+      // If we already have a stripe instance (in the constructor), we can behave synchronously.
+      _this._meta = {
+        tag: 'sync',
+        stripe: ensureStripeShape(_this.props.stripe)
+      };
+    } else if (_this.props.stripe === null) {
+      _this._meta = {
+        tag: 'async',
+        stripe: null
+      };
+    } else {
+      throw new Error("Please pass either 'apiKey' or 'stripe' to StripeProvider. If you're using 'stripe' but don't have a Stripe instance yet, pass 'null' explicitly.");
+    }
+
+    _this._didWarn = false;
+    _this._didWakeUpListeners = false;
+    _this._listeners = [];
+    return _this;
+  }
+  // Even though we're using flow, also use PropTypes so we can take advantage of developer warnings.
+
+
+  Provider.prototype.getChildContext = function getChildContext() {
+    var _this2 = this;
+
+    // getChildContext is run after the constructor, so we WILL have access to
+    // the initial state.
+    //
+    // However, context doesn't update in respnse to state changes like you
+    // might expect: context is pulled by the child, not pushed by the parent.
+    if (this._meta.tag === 'sync') {
+      return {
+        tag: 'sync',
+        stripe: this._meta.stripe
+      };
+    } else {
+      return {
+        tag: 'async',
+        addStripeLoadListener: function addStripeLoadListener(fn) {
+          if (_this2._meta.stripe) {
+            fn(_this2._meta.stripe);
+          } else {
+            _this2._listeners.push(fn);
+          }
+        }
+      };
+    }
+  };
+
+  Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
+    var apiKeyChanged = this.props.apiKey && nextProps.apiKey && this.props.apiKey !== nextProps.apiKey;
+
+    var stripeInstanceChanged = this.props.stripe && nextProps.stripe && this.props.stripe !== nextProps.stripe;
+    if (!this._didWarn && (apiKeyChanged || stripeInstanceChanged) && window.console && window.console.error) {
+      this._didWarn = true;
+      // eslint-disable-next-line no-console
+      console.error('StripeProvider does not support changing the apiKey parameter.');
+      return;
+    }
+
+    if (!this._didWakeUpListeners && nextProps.stripe) {
+      // Wake up the listeners if we've finally been given a StripeShape
+      this._didWakeUpListeners = true;
+      var _stripe2 = ensureStripeShape(nextProps.stripe);
+      this._meta.stripe = _stripe2;
+      this._listeners.forEach(function (fn) {
+        fn(_stripe2);
+      });
+    }
+  };
+
+  Provider.prototype.render = function render() {
+    return _react2.default.Children.only(this.props.children);
+  };
+
+  return Provider;
+}(_react2.default.Component);
+
+Provider.propTypes = {
+  apiKey: _propTypes2.default.string,
+  // PropTypes.object is the only way we can accept a Stripe instance
+  // eslint-disable-next-line react/forbid-prop-types
+  stripe: _propTypes2.default.object,
+  children: _propTypes2.default.node
+};
+Provider.childContextTypes = providerContextTypes;
+Provider.defaultProps = {
+  apiKey: undefined,
+  stripe: undefined,
+  children: null
+};
+exports.default = Provider;
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/lib/components/Provider.test.js b/node_modules/react-stripe-elements/lib/components/Provider.test.js
new file mode 100644
index 00000000..3b7de79e
--- /dev/null
+++ b/node_modules/react-stripe-elements/lib/components/Provider.test.js
@@ -0,0 +1,199 @@
+'use strict';
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _enzyme = require('enzyme');
+
+var _Provider = require('./Provider');
+
+var _Provider2 = _interopRequireDefault(_Provider);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+describe('StripeProvider', function () {
+  var stripeMockFn = void 0;
+  var stripeMockResult = void 0;
+
+  beforeEach(function () {
+    stripeMockResult = {
+      elements: jest.fn(),
+      createToken: jest.fn(),
+      createSource: jest.fn()
+    };
+    stripeMockFn = jest.fn().mockReturnValue(stripeMockResult);
+    window.Stripe = stripeMockFn;
+  });
+
+  it('requires apiKey or stripe prop', function () {
+    expect(function () {
+      (0, _enzyme.shallow)(_react2.default.createElement(
+        _Provider2.default,
+        null,
+        _react2.default.createElement('div', null)
+      ));
+    }).toThrow(/Please pass either 'apiKey' or 'stripe' to StripeProvider./);
+  });
+
+  it('throws without stripe.js loaded if using apiKey', function () {
+    window.Stripe = null;
+    expect(function () {
+      return (0, _enzyme.shallow)(_react2.default.createElement(_Provider2.default, { apiKey: 'made_up_key' }));
+    }).toThrow('Please load Stripe.js (https://js.stripe.com/v3/) on this page to use react-stripe-elements.');
+  });
+
+  it('requires not both apiKey and stripe prop', function () {
+    expect(function () {
+      (0, _enzyme.shallow)(_react2.default.createElement(
+        _Provider2.default,
+        { apiKey: 'made_up_key', stripe: stripeMockResult },
+        _react2.default.createElement('div', null)
+      ));
+    }).toThrow(/Please pass either 'apiKey' or 'stripe' to StripeProvider, not both./);
+  });
+
+  it('throws without children', function () {
+    expect(function () {
+      return (0, _enzyme.shallow)(_react2.default.createElement(_Provider2.default, { apiKey: 'made_up_key' }));
+    }).toThrow('React.Children.only expected to receive a single React element child');
+  });
+
+  it('throws with more than one children', function () {
+    expect(function () {
+      return (0, _enzyme.shallow)(_react2.default.createElement(
+        _Provider2.default,
+        { apiKey: 'made_up_key' },
+        _react2.default.createElement('div', null),
+        _react2.default.createElement('div', null)
+      ));
+    }).toThrow('React.Children.only expected to receive a single React element child');
+  });
+
+  it('renders its single child', function () {
+    var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(
+      _Provider2.default,
+      { apiKey: 'made_up_key' },
+      _react2.default.createElement(
+        'form',
+        null,
+        _react2.default.createElement('input', null)
+      )
+    ));
+
+    expect(wrapper.html()).toBe('<form><input/></form>');
+  });
+
+  it('initializes Stripe with apiKey and empty options', function () {
+    (0, _enzyme.shallow)(_react2.default.createElement(
+      _Provider2.default,
+      { apiKey: 'made_up_key' },
+      _react2.default.createElement('form', null)
+    ));
+    expect(stripeMockFn).toHaveBeenCalledWith('made_up_key', {});
+  });
+
+  it('initializes Stripe with apiKey and arbitrary props as options', function () {
+    (0, _enzyme.shallow)(_react2.default.createElement(
+      _Provider2.default,
+      { apiKey: 'made_up_key', foo: 'bar' },
+      _react2.default.createElement('form', null)
+    ));
+    expect(stripeMockFn).toHaveBeenCalledWith('made_up_key', { foo: 'bar' });
+  });
+
+  it('provides sync context.stripe if using apiKey', function () {
+    var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Provider2.default,
+      { apiKey: 'made_up_key' },
+      _react2.default.createElement('form', null)
+    ));
+    var childContext = wrapper.node.getChildContext();
+    expect(childContext).toEqual({ stripe: stripeMockResult, tag: 'sync' });
+  });
+
+  it('if stripe prop non-null *at mount*, provides sync context', function () {
+    var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Provider2.default,
+      { stripe: stripeMockResult },
+      _react2.default.createElement('form', null)
+    ));
+    var childContext = wrapper.node.getChildContext();
+    expect(childContext).toEqual({ stripe: stripeMockResult, tag: 'sync' });
+  });
+
+  it('if stripe prop null *at mount*, provides async context', function () {
+    var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Provider2.default,
+      { stripe: null },
+      _react2.default.createElement('form', null)
+    ));
+    var childContext = wrapper.node.getChildContext();
+    expect(childContext).toHaveProperty('addStripeLoadListener');
+    expect(childContext).toHaveProperty('tag', 'async');
+  });
+
+  it('addStripeLoadListener is called when stripe goes from null -> non-null', function (done) {
+    var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Provider2.default,
+      { stripe: null },
+      _react2.default.createElement('form', null)
+    ));
+
+    var childContext = wrapper.node.getChildContext();
+    childContext.addStripeLoadListener(function (stripe) {
+      expect(stripe).toEqual(stripeMockResult);
+      done();
+    });
+
+    wrapper.setProps({ stripe: stripeMockResult });
+  });
+
+  it('does not create a new Stripe instance if one exists for the same key', function () {
+    window.Stripe = jest.fn(function () {
+      return {};
+    });
+
+    // First, create the first instance.
+    var wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Provider2.default,
+      { apiKey: 'key_one' },
+      _react2.default.createElement('form', null)
+    ));
+    var childContext = wrapper.node.getChildContext();
+    var keyOneInstance = childContext.stripe;
+    expect(keyOneInstance).toBeTruthy();
+
+    // Create another!
+    wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Provider2.default,
+      { apiKey: 'key_one' },
+      _react2.default.createElement('form', null)
+    ));
+    childContext = wrapper.node.getChildContext();
+    expect(childContext.stripe).toBe(keyOneInstance);
+
+    // Create another, but with a different key!
+    wrapper = (0, _enzyme.mount)(_react2.default.createElement(
+      _Provider2.default,
+      { apiKey: 'key_two' },
+      _react2.default.createElement('form', null)
+    ));
+    childContext = wrapper.node.getChildContext();
+    expect(childContext.stripe).not.toBe(keyOneInstance);
+  });
+
+  it('warns when trying to change the API key', function () {
+    var originalConsoleError = global.console.error;
+    var mockConsoleError = jest.fn();
+    global.console.error = mockConsoleError;
+    var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(
+      _Provider2.default,
+      { apiKey: 'made_up_key' },
+      _react2.default.createElement('form', null)
+    ));
+    wrapper.setProps({ apiKey: 'a_new_key' });
+    expect(mockConsoleError).toHaveBeenCalledWith('StripeProvider does not support changing the apiKey parameter.');
+    global.console.error = originalConsoleError;
+  });
+}); // @noflow
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/lib/components/inject.js b/node_modules/react-stripe-elements/lib/components/inject.js
new file mode 100644
index 00000000..080bc8e8
--- /dev/null
+++ b/node_modules/react-stripe-elements/lib/components/inject.js
@@ -0,0 +1,206 @@
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _Elements = require('./Elements');
+
+var _Provider = require('./Provider');
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+// react-redux does a bunch of stuff with pure components / checking if it needs to re-render.
+// not sure if we need to do the same.
+var inject = function inject(WrappedComponent) {
+  var _class, _temp;
+
+  var componentOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  var _componentOptions$wit = componentOptions.withRef,
+      withRef = _componentOptions$wit === undefined ? false : _componentOptions$wit;
+
+
+  return _temp = _class = function (_React$Component) {
+    _inherits(_class, _React$Component);
+
+    function _class(props, context) {
+      _classCallCheck(this, _class);
+
+      if (!context || !context.getRegisteredElements) {
+        throw new Error('It looks like you are trying to inject Stripe context outside of an Elements context.\nPlease be sure the component that calls createSource or createToken is within an <Elements> component.');
+      }
+
+      var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));
+
+      _this.findElement = function (filterBy, specifiedType) {
+        var allElements = _this.context.getRegisteredElements();
+        var filteredElements = allElements.filter(function (e) {
+          return e[filterBy];
+        });
+        var matchingElements = specifiedType === 'auto' ? filteredElements : filteredElements.filter(function (e) {
+          return e[filterBy] === specifiedType;
+        });
+
+        if (matchingElements.length === 1) {
+          return matchingElements[0].element;
+        } else if (matchingElements.length > 1) {
+          throw new Error('You did not specify the type of Source or Token to create.\n        We could not infer which Element you want to use for this operation.');
+        } else {
+          return null;
+        }
+      };
+
+      _this.requireElement = function (filterBy, specifiedType) {
+        var element = _this.findElement(filterBy, specifiedType);
+        if (element) {
+          return element;
+        } else {
+          throw new Error('You did not specify the type of Source or Token to create.\n        We could not infer which Element you want to use for this operation.');
+        }
+      };
+
+      _this.wrappedCreateToken = function (stripe) {
+        return function () {
+          var tokenTypeOrOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+          var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+          if (tokenTypeOrOptions && (typeof tokenTypeOrOptions === 'undefined' ? 'undefined' : _typeof(tokenTypeOrOptions)) === 'object') {
+            // First argument is options; infer the Element and tokenize
+            var opts = tokenTypeOrOptions;
+
+            var tokenType = opts.type,
+                rest = _objectWithoutProperties(opts, ['type']);
+
+            var specifiedType = typeof tokenType === 'string' ? tokenType : 'auto';
+            // Since only options were passed in, a corresponding Element must exist
+            // for the tokenization to succeed -- thus we call requireElement.
+            var element = _this.requireElement('impliedTokenType', specifiedType);
+            return stripe.createToken(element, rest);
+          } else if (typeof tokenTypeOrOptions === 'string') {
+            // First argument is token type; tokenize with token type and options
+            var _tokenType = tokenTypeOrOptions;
+            return stripe.createToken(_tokenType, options);
+          } else {
+            // If a bad value was passed in for options, throw an error.
+            throw new Error('Invalid options passed to createToken. Expected an object, got ' + (typeof tokenTypeOrOptions === 'undefined' ? 'undefined' : _typeof(tokenTypeOrOptions)) + '.');
+          }
+        };
+      };
+
+      _this.wrappedCreateSource = function (stripe) {
+        return function () {
+          var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+
+          if (options && (typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {
+            if (typeof options.type !== 'string') {
+              throw new Error('Invalid Source type passed to createSource. Expected string, got ' + _typeof(options.type) + '.');
+            }
+
+            var element = _this.findElement('impliedSourceType', options.type);
+            if (element) {
+              // If an Element exists for the source type, use that to create the
+              // corresponding source.
+              //
+              // NOTE: this prevents users from independently creating sources of
+              // type `foo` if an Element that can create `foo` sources exists in
+              // the current <Elements /> context.
+              return stripe.createSource(element, options);
+            } else {
+              // If no Element exists for the source type, directly create a source.
+              return stripe.createSource(options);
+            }
+          } else {
+            // If a bad value was passed in for options, throw an error.
+            throw new Error('Invalid options passed to createSource. Expected an object, got ' + (typeof options === 'undefined' ? 'undefined' : _typeof(options)) + '.');
+          }
+        };
+      };
+
+      if (_this.context.tag === 'sync') {
+        _this.state = {
+          stripe: _this.stripeProps(_this.context.stripe)
+        };
+      } else {
+        _this.state = {
+          stripe: null
+        };
+      }
+      return _this;
+    }
+
+    _class.prototype.componentDidMount = function componentDidMount() {
+      var _this2 = this;
+
+      if (this.context.tag === 'async') {
+        this.context.addStripeLoadListener(function (stripe) {
+          _this2.setState({
+            stripe: _this2.stripeProps(stripe)
+          });
+        });
+      } else {
+        // when 'sync', it's already set in the constructor.
+      }
+    };
+
+    _class.prototype.getWrappedInstance = function getWrappedInstance() {
+      if (!withRef) {
+        throw new Error('To access the wrapped instance, the `{withRef: true}` option must be set when calling `injectStripe()`');
+      }
+      return this.wrappedInstance;
+    };
+
+    _class.prototype.stripeProps = function stripeProps(stripe) {
+      return _extends({}, stripe, {
+        // These are the only functions that take elements.
+        createToken: this.wrappedCreateToken(stripe),
+        createSource: this.wrappedCreateSource(stripe)
+      });
+    };
+
+    // Finds an Element by the specified type, if one exists.
+    // Throws if multiple Elements match.
+
+
+    // Require that exactly one Element is found for the specified type.
+    // Throws if no Element is found.
+
+
+    // Wraps createToken in order to infer the Element that is being tokenized.
+
+
+    // Wraps createSource in order to infer the Element that is being used for
+    // source creation.
+
+
+    _class.prototype.render = function render() {
+      var _this3 = this;
+
+      return _react2.default.createElement(WrappedComponent, _extends({}, this.props, {
+        stripe: this.state.stripe,
+        ref: withRef ? function (c) {
+          _this3.wrappedInstance = c;
+        } : null
+      }));
+    };
+
+    return _class;
+  }(_react2.default.Component), _class.contextTypes = _extends({}, _Provider.providerContextTypes, _Elements.injectContextTypes), _class.displayName = 'InjectStripe(' + (WrappedComponent.displayName || WrappedComponent.name || 'Component') + ')', _temp;
+};
+
+exports.default = inject;
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/lib/components/inject.test.js b/node_modules/react-stripe-elements/lib/components/inject.test.js
new file mode 100644
index 00000000..83a622c2
--- /dev/null
+++ b/node_modules/react-stripe-elements/lib/components/inject.test.js
@@ -0,0 +1,358 @@
+'use strict';
+
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; // @noflow
+
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _enzyme = require('enzyme');
+
+var _inject = require('./inject');
+
+var _inject2 = _interopRequireDefault(_inject);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
+
+describe('injectStripe()', function () {
+  var WrappedComponent = void 0;
+  var context = void 0;
+  var createSource = void 0;
+  var createToken = void 0;
+  var elementMock = void 0;
+
+  // Before ALL tests (sync or async)
+  beforeEach(function () {
+    createSource = jest.fn();
+    createToken = jest.fn();
+    elementMock = {
+      element: {
+        on: jest.fn()
+      },
+      impliedTokenType: 'card',
+      impliedSourceType: 'card'
+    };
+    WrappedComponent = function WrappedComponent() {
+      return _react2.default.createElement('div', null);
+    };
+    WrappedComponent.displayName = 'WrappedComponent';
+  });
+
+  describe('[sync]', function () {
+    // Before ONLY sync tests
+    beforeEach(function () {
+      context = {
+        tag: 'sync',
+        stripe: {
+          elements: jest.fn(),
+          createSource: createSource,
+          createToken: createToken
+        },
+        getRegisteredElements: function getRegisteredElements() {
+          return [elementMock];
+        }
+      };
+    });
+
+    it('sets the correct displayName', function () {
+      expect((0, _inject2.default)(WrappedComponent).displayName).toBe('InjectStripe(WrappedComponent)');
+    });
+
+    it("includes the original component's displayName", function () {
+      WrappedComponent.displayName = 'foo';
+      expect((0, _inject2.default)(WrappedComponent).displayName).toBe('InjectStripe(foo)');
+    });
+
+    it("falls back to the original component's name if no displayName is set", function () {
+      WrappedComponent.displayName = undefined;
+      expect((0, _inject2.default)(WrappedComponent).displayName).toBe('InjectStripe(' + WrappedComponent.name + ')');
+    });
+
+    it('throws when StripeProvider is missing from ancestry', function () {
+      // Prevent the expected console.error from react to keep the test output clean
+      var originalConsoleError = global.console.error;
+      global.console.error = function (msg) {
+        if (!msg.startsWith('Warning: Failed context type: The context `tag` is marked as required') && !msg.startsWith('Warning: Failed context type: The context `getRegisteredElements` is marked as required')) {
+          originalConsoleError(msg);
+        }
+      };
+
+      var Injected = (0, _inject2.default)(WrappedComponent());
+
+      expect(function () {
+        return (0, _enzyme.shallow)(_react2.default.createElement(Injected, null));
+      }).toThrow(/It looks like you are trying to inject Stripe context outside of an Elements context/);
+      global.console.error = originalConsoleError;
+    });
+
+    it('renders <WrappedComponent> with `stripe` prop', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      expect(props).toHaveProperty('stripe');
+      expect(props).toHaveProperty('stripe.createSource');
+      expect(props).toHaveProperty('stripe.createToken');
+    });
+
+    it('props.stripe.createToken calls createToken with element and empty options when called with no arguments', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      props.stripe.createToken();
+      expect(createToken).toHaveBeenCalledWith(elementMock.element, {});
+    });
+
+    it('props.stripe.createToken calls createToken with element and options when called with options object', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      props.stripe.createToken({ foo: 'bar' });
+      expect(createToken).toHaveBeenCalledWith(elementMock.element, {
+        foo: 'bar'
+      });
+    });
+
+    it('props.stripe.createToken calls createToken with string as first argument and options object as second', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      props.stripe.createToken('test', { foo: 'bar' });
+      expect(createToken).toHaveBeenCalledWith('test', { foo: 'bar' });
+    });
+
+    it('props.stripe.createToken throws when called with invalid options type', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      expect(function () {
+        return props.stripe.createToken(1);
+      }).toThrow('Invalid options passed to createToken. Expected an object, got number.');
+    });
+
+    it('props.stripe.createToken throws when no element is in the tree', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: _extends({}, context, {
+          getRegisteredElements: function getRegisteredElements() {
+            return [];
+          }
+        })
+      });
+
+      var props = wrapper.props();
+      expect(props.stripe.createToken).toThrow(/We could not infer which Element you want to use for this operation./);
+    });
+
+    it('props.stripe.createSource errors when called without a type', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      expect(props.stripe.createSource).toThrow(/Invalid Source type/);
+    });
+
+    it('props.stripe.createSource calls createSource with element and type when only type is passed in', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      props.stripe.createSource({ type: 'card' });
+      expect(createSource).toHaveBeenCalledWith(elementMock.element, {
+        type: 'card'
+      });
+    });
+
+    it('props.stripe.createSource calls createSource with options', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      props.stripe.createSource({ type: 'card', foo: 'bar' });
+      expect(createSource).toHaveBeenCalledWith(elementMock.element, {
+        type: 'card',
+        foo: 'bar'
+      });
+    });
+
+    it('props.stripe.createSource calls createSource with options when called with unknown type', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      props.stripe.createSource({ type: 'baz', foo: 'bar' });
+      expect(createSource).toHaveBeenCalledWith({ type: 'baz', foo: 'bar' });
+    });
+
+    it('props.stripe.createSource throws when called with invalid options argument', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      var props = wrapper.props();
+      expect(function () {
+        return props.stripe.createSource(1);
+      }).toThrow('Invalid options passed to createSource. Expected an object, got number.');
+    });
+
+    it('props.stripe.createSource throws when called with source type that matches multiple elements', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(Injected, null), {
+        context: _extends({}, context, {
+          getRegisteredElements: function getRegisteredElements() {
+            return [{
+              element: {
+                on: jest.fn()
+              },
+              impliedTokenType: 'card',
+              impliedSourceType: 'card'
+            }, {
+              element: {
+                on: jest.fn()
+              },
+              impliedTokenType: 'card',
+              impliedSourceType: 'card'
+            }];
+          }
+        })
+      });
+
+      var props = wrapper.props();
+      expect(function () {
+        return props.stripe.createSource({ type: 'card' });
+      }).toThrow(/We could not infer which Element you want to use for this operation/);
+    });
+
+    it('throws when `getWrappedInstance` is called without `{withRef: true}` option.', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+
+      var wrapper = (0, _enzyme.mount)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      expect(function () {
+        return wrapper.node.getWrappedInstance();
+      }).toThrow('To access the wrapped instance, the `{withRef: true}` option must be set when calling `injectStripe()`');
+    });
+
+    it('`getWrappedInstance` works whith `{withRef: true}` option.', function () {
+      // refs won't work with stateless functional components
+      var WrappedClassComponent = function (_React$Component) {
+        _inherits(WrappedClassComponent, _React$Component);
+
+        function WrappedClassComponent() {
+          _classCallCheck(this, WrappedClassComponent);
+
+          return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));
+        }
+
+        WrappedClassComponent.prototype.render = function render() {
+          return _react2.default.createElement(
+            'div',
+            null,
+            this.foo
+          );
+        };
+
+        return WrappedClassComponent;
+      }(_react2.default.Component);
+
+      WrappedClassComponent.displayName = 'WrappedClassComponent';
+
+
+      var Injected = (0, _inject2.default)(WrappedClassComponent, { withRef: true });
+
+      var wrapper = (0, _enzyme.mount)(_react2.default.createElement(Injected, null), {
+        context: context
+      });
+
+      expect(wrapper.node.getWrappedInstance() instanceof WrappedClassComponent).toBe(true);
+    });
+  });
+
+  describe('[async]', function () {
+    it('props.stripe is null if addStripeLoadListener never fires', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+      var wrapper = (0, _enzyme.mount)(_react2.default.createElement(Injected, null), {
+        context: {
+          tag: 'async',
+          // simulate StripeProvider never giving us a StripeShape
+          addStripeLoadListener: function addStripeLoadListener() {},
+          getRegisteredElements: function getRegisteredElements() {
+            return [elementMock];
+          }
+        }
+      });
+
+      var props = wrapper.find(WrappedComponent).props();
+      expect(props).toHaveProperty('stripe', null);
+    });
+
+    it('props.stripe is set when addStripeLoadListener fires', function () {
+      var Injected = (0, _inject2.default)(WrappedComponent);
+      var wrapper = (0, _enzyme.mount)(_react2.default.createElement(Injected, null), {
+        context: {
+          tag: 'async',
+          // simulate StripeProvider eventually giving us a StripeShape
+          addStripeLoadListener: function addStripeLoadListener(fn) {
+            fn({
+              elements: jest.fn(),
+              createSource: createSource,
+              createToken: createToken
+            });
+          },
+          getRegisteredElements: function getRegisteredElements() {
+            return [elementMock];
+          }
+        }
+      });
+
+      var props = wrapper.find(WrappedComponent).props();
+      expect(props).toHaveProperty('stripe');
+      expect(props).toHaveProperty('stripe.createToken');
+      expect(props).toHaveProperty('stripe.createSource');
+    });
+  });
+});
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/lib/decls/Stripe.js b/node_modules/react-stripe-elements/lib/decls/Stripe.js
new file mode 100644
index 00000000..9a390c31
--- /dev/null
+++ b/node_modules/react-stripe-elements/lib/decls/Stripe.js
@@ -0,0 +1 @@
+"use strict";
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/lib/index.js b/node_modules/react-stripe-elements/lib/index.js
new file mode 100644
index 00000000..5f2e9c40
--- /dev/null
+++ b/node_modules/react-stripe-elements/lib/index.js
@@ -0,0 +1,70 @@
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.IdealBankElement = exports.IbanElement = exports.PaymentRequestButtonElement = exports.PostalCodeElement = exports.CardCVCElement = exports.CardExpiryElement = exports.CardNumberElement = exports.CardElement = exports.Elements = exports.injectStripe = exports.StripeProvider = undefined;
+
+var _Provider = require('./components/Provider');
+
+var _Provider2 = _interopRequireDefault(_Provider);
+
+var _inject = require('./components/inject');
+
+var _inject2 = _interopRequireDefault(_inject);
+
+var _Elements = require('./components/Elements');
+
+var _Elements2 = _interopRequireDefault(_Elements);
+
+var _Element = require('./components/Element');
+
+var _Element2 = _interopRequireDefault(_Element);
+
+var _PaymentRequestButtonElement = require('./components/PaymentRequestButtonElement');
+
+var _PaymentRequestButtonElement2 = _interopRequireDefault(_PaymentRequestButtonElement);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+// Define Elements, and register their implied token / source types for
+// automatic token / source creation.
+
+// Card
+var CardElement = (0, _Element2.default)('card', {
+  impliedTokenType: 'card',
+  impliedSourceType: 'card'
+});
+
+// Split Fields
+// Note: we only register the CardNumberElement for split fields so that we have
+// a unique Element to infer when calling `wrappedCreateToken` or `wrappedCreateSource`.
+
+var CardNumberElement = (0, _Element2.default)('cardNumber', {
+  impliedTokenType: 'card',
+  impliedSourceType: 'card'
+});
+var CardExpiryElement = (0, _Element2.default)('cardExpiry');
+var CardCVCElement = (0, _Element2.default)('cardCvc');
+var PostalCodeElement = (0, _Element2.default)('postalCode');
+
+// IBAN
+var IbanElement = (0, _Element2.default)('iban', {
+  impliedTokenType: 'bank_account',
+  impliedSourceType: 'sepa_debit'
+});
+
+// iDEAL Bank
+var IdealBankElement = (0, _Element2.default)('idealBank', { impliedSourceType: 'ideal' });
+
+exports.StripeProvider = _Provider2.default;
+exports.injectStripe = _inject2.default;
+exports.Elements = _Elements2.default;
+exports.CardElement = CardElement;
+exports.CardNumberElement = CardNumberElement;
+exports.CardExpiryElement = CardExpiryElement;
+exports.CardCVCElement = CardCVCElement;
+exports.PostalCodeElement = PostalCodeElement;
+exports.PaymentRequestButtonElement = _PaymentRequestButtonElement2.default;
+exports.IbanElement = IbanElement;
+exports.IdealBankElement = IdealBankElement;
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/lib/index.test.js b/node_modules/react-stripe-elements/lib/index.test.js
new file mode 100644
index 00000000..687cc622
--- /dev/null
+++ b/node_modules/react-stripe-elements/lib/index.test.js
@@ -0,0 +1,411 @@
+'use strict';
+
+var _react = require('react');
+
+var _react2 = _interopRequireDefault(_react);
+
+var _enzyme = require('enzyme');
+
+var _index = require('./index');
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @noflow
+
+
+var PureWrapper = function (_React$PureComponent) {
+  _inherits(PureWrapper, _React$PureComponent);
+
+  function PureWrapper() {
+    _classCallCheck(this, PureWrapper);
+
+    return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));
+  }
+
+  PureWrapper.prototype.render = function render() {
+    return _react2.default.createElement(
+      'div',
+      null,
+      this.props.children
+    );
+  };
+
+  return PureWrapper;
+}(_react2.default.PureComponent);
+
+describe('index', function () {
+  var elementMock = void 0;
+  var elementsMock = void 0;
+  var stripeMock = void 0;
+  beforeEach(function () {
+    elementMock = {
+      mount: jest.fn(),
+      destroy: jest.fn(),
+      on: jest.fn(),
+      update: jest.fn()
+    };
+    elementsMock = {
+      create: jest.fn().mockReturnValue(elementMock)
+    };
+    stripeMock = {
+      elements: jest.fn().mockReturnValue(elementsMock),
+      createToken: jest.fn(),
+      createSource: jest.fn()
+    };
+
+    window.Stripe = jest.fn().mockReturnValue(stripeMock);
+  });
+
+  var WrappedCheckout = function WrappedCheckout(type, additionalOptions) {
+    var MyCheckout = function MyCheckout(props) {
+      return _react2.default.createElement(
+        'form',
+        {
+          onSubmit: function onSubmit(ev) {
+            ev.preventDefault();
+            if (type === 'token') {
+              props.stripe.createToken(additionalOptions);
+            } else {
+              props.stripe.createSource(additionalOptions);
+            }
+          }
+        },
+        props.children,
+        _react2.default.createElement(
+          'button',
+          null,
+          'Pay'
+        )
+      );
+    };
+    return (0, _index.injectStripe)(MyCheckout);
+  };
+
+  it('smoke test', function () {
+    var Checkout = WrappedCheckout('token');
+    var app = (0, _enzyme.mount)(_react2.default.createElement(
+      _index.StripeProvider,
+      { apiKey: 'pk_test_xxx' },
+      _react2.default.createElement(
+        _index.Elements,
+        null,
+        _react2.default.createElement(
+          Checkout,
+          null,
+          'Hello world',
+          _react2.default.createElement(_index.CardElement, null)
+        )
+      )
+    ));
+    expect(app.text()).toMatch(/Hello world/);
+  });
+
+  it("shouldn't choke on pure components", function () {
+    var Checkout = WrappedCheckout('token');
+    var app = (0, _enzyme.mount)(_react2.default.createElement(
+      _index.StripeProvider,
+      { apiKey: 'pk_test_xxx' },
+      _react2.default.createElement(
+        _index.Elements,
+        null,
+        _react2.default.createElement(
+          PureWrapper,
+          null,
+          _react2.default.createElement(
+            Checkout,
+            null,
+            _react2.default.createElement(_index.CardElement, null)
+          )
+        )
+      )
+    ));
+    expect(function () {
+      return app.find('form').simulate('submit');
+    }).not.toThrow();
+  });
+
+  describe('createToken', function () {
+    it('should be called when set up properly', function () {
+      var Checkout = WrappedCheckout('token');
+      var app = (0, _enzyme.mount)(_react2.default.createElement(
+        _index.StripeProvider,
+        { apiKey: 'pk_test_xxx' },
+        _react2.default.createElement(
+          _index.Elements,
+          null,
+          _react2.default.createElement(
+            Checkout,
+            null,
+            'Hello world',
+            _react2.default.createElement(_index.CardElement, null)
+          )
+        )
+      ));
+      app.find('form').simulate('submit');
+      expect(stripeMock.createToken).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createToken).toHaveBeenCalledWith(elementMock, {});
+    });
+
+    it('should be called when set up properly (split)', function () {
+      var Checkout = WrappedCheckout('token');
+      var app = (0, _enzyme.mount)(_react2.default.createElement(
+        _index.StripeProvider,
+        { apiKey: 'pk_test_xxx' },
+        _react2.default.createElement(
+          _index.Elements,
+          null,
+          _react2.default.createElement(
+            Checkout,
+            null,
+            'Hello world',
+            _react2.default.createElement(_index.CardNumberElement, null),
+            _react2.default.createElement(_index.CardExpiryElement, null),
+            _react2.default.createElement(_index.CardCVCElement, null),
+            _react2.default.createElement(_index.PostalCodeElement, null)
+          )
+        )
+      ));
+      app.find('form').simulate('submit');
+      expect(stripeMock.createToken).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createToken).toHaveBeenCalledWith(elementMock, {});
+    });
+
+    it('should be callable for other token types', function () {
+      var Checkout = (0, _index.injectStripe)(function (props) {
+        return _react2.default.createElement(
+          'form',
+          {
+            onSubmit: function onSubmit(ev) {
+              ev.preventDefault();
+              props.stripe.createToken('bank_account', { some: 'data' });
+            }
+          },
+          props.children,
+          _react2.default.createElement(
+            'button',
+            null,
+            'Pay'
+          )
+        );
+      });
+      var app = (0, _enzyme.mount)(_react2.default.createElement(
+        _index.StripeProvider,
+        { apiKey: 'pk_test_xxx' },
+        _react2.default.createElement(
+          _index.Elements,
+          null,
+          _react2.default.createElement(
+            Checkout,
+            null,
+            'Hello world'
+          )
+        )
+      ));
+      app.find('form').simulate('submit');
+      expect(stripeMock.createToken).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createToken).toHaveBeenCalledWith('bank_account', {
+        some: 'data'
+      });
+    });
+  });
+
+  describe('createSource', function () {
+    it('should be called when set up properly', function () {
+      var Checkout = WrappedCheckout('source', { type: 'card' });
+      var app = (0, _enzyme.mount)(_react2.default.createElement(
+        _index.StripeProvider,
+        { apiKey: 'pk_test_xxx' },
+        _react2.default.createElement(
+          _index.Elements,
+          null,
+          _react2.default.createElement(
+            Checkout,
+            null,
+            'Hello world',
+            _react2.default.createElement(_index.CardElement, null)
+          )
+        )
+      ));
+      app.find('form').simulate('submit');
+      expect(stripeMock.createSource).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createSource).toHaveBeenCalledWith(elementMock, {
+        type: 'card'
+      });
+    });
+
+    it('should take additional parameters', function () {
+      var Checkout = WrappedCheckout('source', {
+        type: 'card',
+        owner: { name: 'Michelle' }
+      });
+      var app = (0, _enzyme.mount)(_react2.default.createElement(
+        _index.StripeProvider,
+        { apiKey: 'pk_test_xxx' },
+        _react2.default.createElement(
+          _index.Elements,
+          null,
+          _react2.default.createElement(
+            Checkout,
+            null,
+            'Hello world',
+            _react2.default.createElement(_index.CardElement, null)
+          )
+        )
+      ));
+      app.find('form').simulate('submit');
+      expect(stripeMock.createSource).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createSource).toHaveBeenCalledWith(elementMock, {
+        type: 'card',
+        owner: { name: 'Michelle' }
+      });
+    });
+
+    it('should be callable when no Element is found', function () {
+      var Checkout = WrappedCheckout('source', {
+        type: 'card',
+        token: 'tok_xxx'
+      });
+      var app = (0, _enzyme.mount)(_react2.default.createElement(
+        _index.StripeProvider,
+        { apiKey: 'pk_test_xxx' },
+        _react2.default.createElement(
+          _index.Elements,
+          null,
+          _react2.default.createElement(
+            Checkout,
+            null,
+            'Hello world'
+          )
+        )
+      ));
+      app.find('form').simulate('submit');
+      expect(stripeMock.createSource).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createSource).toHaveBeenCalledWith({
+        type: 'card',
+        token: 'tok_xxx'
+      });
+    });
+
+    it('should be callable for other source types', function () {
+      var Checkout = (0, _index.injectStripe)(function (props) {
+        return _react2.default.createElement(
+          'form',
+          {
+            onSubmit: function onSubmit(ev) {
+              ev.preventDefault();
+              props.stripe.createSource({
+                type: 'three_d_secure',
+                three_d_secure: { foo: 'bar' }
+              });
+            }
+          },
+          props.children,
+          _react2.default.createElement(
+            'button',
+            null,
+            'Pay'
+          )
+        );
+      });
+      var app = (0, _enzyme.mount)(_react2.default.createElement(
+        _index.StripeProvider,
+        { apiKey: 'pk_test_xxx' },
+        _react2.default.createElement(
+          _index.Elements,
+          null,
+          _react2.default.createElement(
+            Checkout,
+            null,
+            'Hello world'
+          )
+        )
+      ));
+      app.find('form').simulate('submit');
+      expect(stripeMock.createSource).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createSource).toHaveBeenCalledWith({
+        type: 'three_d_secure',
+        three_d_secure: { foo: 'bar' }
+      });
+    });
+  });
+
+  describe('errors', function () {
+    describe('createSource', function () {
+      it('should throw if no source type is specified', function () {
+        var Checkout = WrappedCheckout('source');
+        var app = (0, _enzyme.mount)(_react2.default.createElement(
+          _index.StripeProvider,
+          { apiKey: 'pk_test_xxx' },
+          _react2.default.createElement(
+            _index.Elements,
+            null,
+            _react2.default.createElement(
+              Checkout,
+              null,
+              'Hello world',
+              _react2.default.createElement(_index.CardElement, null)
+            )
+          )
+        ));
+        expect(function () {
+          return app.find('form').simulate('submit');
+        }).toThrowError(/Invalid Source type/);
+      });
+    });
+
+    describe('createToken', function () {
+      it('should throw when not in Elements', function () {
+        // Prevent the expected console.error from react to keep the test output clean
+        var originalConsoleError = global.console.error;
+        global.console.error = function (msg) {
+          if (!msg.startsWith('Warning: Failed context type: The context `getRegisteredElements` is marked as required')) {
+            originalConsoleError(msg);
+          }
+        };
+
+        var Checkout = WrappedCheckout('token');
+        expect(function () {
+          return (0, _enzyme.mount)(_react2.default.createElement(
+            _index.StripeProvider,
+            { apiKey: 'pk_test_xxx' },
+            _react2.default.createElement(
+              Checkout,
+              null,
+              _react2.default.createElement(
+                _index.Elements,
+                null,
+                _react2.default.createElement(_index.CardElement, null)
+              )
+            )
+          ));
+        }).toThrowError('Elements context');
+
+        global.console.error = originalConsoleError;
+      });
+
+      it('should throw when no Element found', function () {
+        var Checkout = WrappedCheckout('token');
+        var app = (0, _enzyme.mount)(_react2.default.createElement(
+          _index.StripeProvider,
+          { apiKey: 'pk_test_xxx' },
+          _react2.default.createElement(
+            _index.Elements,
+            null,
+            _react2.default.createElement(
+              Checkout,
+              null,
+              'Hello world'
+            )
+          )
+        ));
+        expect(function () {
+          return app.find('form').simulate('submit');
+        }).toThrowError(/did not specify/);
+      });
+    });
+  });
+});
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/lib/utils/isEqual.js b/node_modules/react-stripe-elements/lib/utils/isEqual.js
new file mode 100644
index 00000000..d182777a
--- /dev/null
+++ b/node_modules/react-stripe-elements/lib/utils/isEqual.js
@@ -0,0 +1,56 @@
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+var PLAIN_OBJECT_STR = '[object Object]';
+
+var isEqual = function isEqual(left, right) {
+  if ((typeof left === 'undefined' ? 'undefined' : _typeof(left)) !== 'object' || (typeof right === 'undefined' ? 'undefined' : _typeof(right)) !== 'object') {
+    return left === right;
+  }
+
+  if (left === null || right === null) return left === right;
+
+  var leftArray = Array.isArray(left);
+  var rightArray = Array.isArray(right);
+
+  if (leftArray !== rightArray) return false;
+
+  var leftPlainObject = Object.prototype.toString.call(left) === PLAIN_OBJECT_STR;
+  var rightPlainObject = Object.prototype.toString.call(right) === PLAIN_OBJECT_STR;
+
+  if (leftPlainObject !== rightPlainObject) return false;
+
+  if (!leftPlainObject && !leftArray) return false;
+
+  var leftKeys = Object.keys(left);
+  var rightKeys = Object.keys(right);
+
+  if (leftKeys.length !== rightKeys.length) return false;
+
+  var keySet = {};
+  for (var i = 0; i < leftKeys.length; i += 1) {
+    keySet[leftKeys[i]] = true;
+  }
+  for (var _i = 0; _i < rightKeys.length; _i += 1) {
+    keySet[rightKeys[_i]] = true;
+  }
+  var allKeys = Object.keys(keySet);
+  if (allKeys.length !== leftKeys.length) {
+    return false;
+  }
+
+  var l = left;
+  var r = right;
+  var pred = function pred(key) {
+    return isEqual(l[key], r[key]);
+  };
+
+  return allKeys.every(pred);
+};
+
+exports.default = isEqual;
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/lib/utils/isEqual.test.js b/node_modules/react-stripe-elements/lib/utils/isEqual.test.js
new file mode 100644
index 00000000..af68e204
--- /dev/null
+++ b/node_modules/react-stripe-elements/lib/utils/isEqual.test.js
@@ -0,0 +1,34 @@
+'use strict';
+
+var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); // @noflow
+
+
+var _isEqual = require('./isEqual');
+
+var _isEqual2 = _interopRequireDefault(_isEqual);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+describe('isEqual', function () {
+  [['a', 'a'], [100, 100], [false, false], [undefined, undefined], [null, null], [{}, {}], [{ a: 10 }, { a: 10 }], [{ a: null }, { a: null }], [{ a: undefined }, { a: undefined }], [[], []], [['a', 'b', 'c'], ['a', 'b', 'c']], [['a', { inner: [12] }, 'c'], ['a', { inner: [12] }, 'c']], [{ a: { nested: { more: [1, 2, 3] } } }, { a: { nested: { more: [1, 2, 3] } } }]].forEach(function (_ref) {
+    var _ref2 = _slicedToArray(_ref, 2),
+        left = _ref2[0],
+        right = _ref2[1];
+
+    it('should should return true for isEqual(' + JSON.stringify(left) + ', ' + JSON.stringify(right) + ')', function () {
+      expect((0, _isEqual2.default)(left, right)).toBe(true);
+      expect((0, _isEqual2.default)(right, left)).toBe(true);
+    });
+  });
+
+  [['a', 'b'], ['0', 0], [new Date(1), {}], [false, ''], [false, true], [null, undefined], [{}, []], [/foo/, /foo/], [new Date(1), new Date(1)], [{ a: 10 }, { a: 11 }], [['a', 'b', 'c'], ['a', 'b', 'c', 'd']], [['a', 'b', 'c', 'd'], ['a', 'b', 'c']], [['a', { inner: [12] }, 'c'], ['a', { inner: [null] }, 'c']], [{ a: { nested: { more: [1, 2, 3] } } }, { b: { nested: { more: [1, 2, 3] } } }]].forEach(function (_ref3) {
+    var _ref4 = _slicedToArray(_ref3, 2),
+        left = _ref4[0],
+        right = _ref4[1];
+
+    it('should should return false for isEqual(' + JSON.stringify(left) + ', ' + JSON.stringify(right) + ')', function () {
+      expect((0, _isEqual2.default)(left, right)).toBe(false);
+      expect((0, _isEqual2.default)(right, left)).toBe(false);
+    });
+  });
+});
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/lib/utils/shallowEqual.js b/node_modules/react-stripe-elements/lib/utils/shallowEqual.js
new file mode 100644
index 00000000..ef02a909
--- /dev/null
+++ b/node_modules/react-stripe-elements/lib/utils/shallowEqual.js
@@ -0,0 +1,15 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+var shallowEqual = function shallowEqual(a, b) {
+  var keysA = Object.keys(a);
+  var keysB = Object.keys(b);
+
+  return keysA.length === keysB.length && keysA.every(function (key) {
+    return b.hasOwnProperty(key) && b[key] === a[key];
+  });
+};
+
+exports.default = shallowEqual;
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/lib/utils/shallowEqual.test.js b/node_modules/react-stripe-elements/lib/utils/shallowEqual.test.js
new file mode 100644
index 00000000..ec967c0a
--- /dev/null
+++ b/node_modules/react-stripe-elements/lib/utils/shallowEqual.test.js
@@ -0,0 +1,18 @@
+'use strict';
+
+var _shallowEqual = require('./shallowEqual');
+
+var _shallowEqual2 = _interopRequireDefault(_shallowEqual);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+describe('shallowEqual', function () {
+  it('should work', function () {
+    expect((0, _shallowEqual2.default)({}, {})).toBe(true);
+    expect((0, _shallowEqual2.default)({ a: 1 }, { a: 1 })).toBe(true);
+
+    expect((0, _shallowEqual2.default)({ a: 1, b: 2 }, { a: 1 })).toBe(false);
+    expect((0, _shallowEqual2.default)({ a: {} }, { a: {} })).toBe(false);
+    expect((0, _shallowEqual2.default)({ a: undefined }, { b: undefined })).toBe(false);
+  });
+}); // @noflow
\ No newline at end of file
diff --git a/node_modules/react-stripe-elements/package.json b/node_modules/react-stripe-elements/package.json
new file mode 100644
index 00000000..9d650ac4
--- /dev/null
+++ b/node_modules/react-stripe-elements/package.json
@@ -0,0 +1,77 @@
+{
+  "name": "react-stripe-elements",
+  "version": "2.0.3",
+  "description": "React components for Stripe.js and Stripe Elements",
+  "main": "./lib/index.js",
+  "module": "es/index.js",
+  "jsnext:main": "es/index.js",
+  "scripts": {
+    "test": "node_modules/.bin/jest",
+    "build:commonjs": "cross-env BABEL_ENV=commonjs babel src --out-dir lib",
+    "build:es": "cross-env BABEL_ENV=es babel src --out-dir es",
+    "build:umd": "cross-env BABEL_ENV=commonjs NODE_ENV=development webpack src/index.js dist/react-stripe-elements.js --config webpack.config.prod.js",
+    "build:umd:min": "cross-env BABEL_ENV=commonjs NODE_ENV=production webpack src/index.js dist/react-stripe-elements.min.js --config webpack.config.prod.js",
+    "lint": "eslint src demo",
+    "flow": "flow",
+    "build": "yarn run lint && yarn run flow && yarn run build:commonjs && yarn run build:es && yarn run build:umd && yarn run build:umd:min",
+    "clean": "rimraf lib dist es",
+    "prettier": "prettier './**/*.js' './**/*.css' './**/*.md' --write",
+    "prettier-list-different": "prettier './**/*.js' './**/*.css' './**/*.md' --list-different",
+    "prepublish": "yarn run clean && yarn run build",
+    "demo": "webpack-dev-server --content-base dist",
+    "doctoc": "doctoc README.md"
+  },
+  "keywords": [],
+  "author": "Stripe (https://www.stripe.com)",
+  "license": "MIT",
+  "dependencies": {
+    "prop-types": "^15.5.10"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/stripe/react-stripe-elements.git"
+  },
+  "files": [
+    "dist",
+    "lib",
+    "src",
+    "es"
+  ],
+  "devDependencies": {
+    "babel-cli": "^6.26.0",
+    "babel-core": "^6.26.0",
+    "babel-eslint": "^8.0.0",
+    "babel-jest": "^23.6.0",
+    "babel-loader": "^7.1.2",
+    "babel-plugin-transform-class-properties": "^6.24.1",
+    "babel-plugin-transform-es2015-classes": "^6.24.1",
+    "babel-plugin-transform-object-rest-spread": "^6.26.0",
+    "babel-preset-env": "^1.6.1",
+    "babel-preset-react": "^6.24.1",
+    "cross-env": "^5.0.5",
+    "doctoc": "^1.3.0",
+    "enzyme": "^2.9.1",
+    "eslint": "^4.6.1",
+    "eslint-config-prettier": "2.9.0",
+    "eslint-config-stripe": "^1.0.13",
+    "eslint-plugin-flowtype": "^2.35.1",
+    "eslint-plugin-import": "^2.7.0",
+    "eslint-plugin-jest": "21.17.0",
+    "eslint-plugin-jsx-a11y": "^6.0.2",
+    "eslint-plugin-react": "^7.4.0",
+    "flow-bin": "^0.90.0",
+    "html-webpack-plugin": "^2.30.1",
+    "jest": "23.6.0",
+    "prettier": "1.15.3",
+    "react": "^15.6.1",
+    "react-dom": "^15.6.1",
+    "react-test-renderer": "^15.6.1",
+    "rimraf": "^2.6.2",
+    "webpack": "^3.5.6",
+    "webpack-dev-server": "2.7.1"
+  },
+  "peerDependencies": {
+    "react": "^15.5.4 || ^16.0.0-0",
+    "react-dom": "^15.5.4 || ^16.0.0-0"
+  }
+}
diff --git a/node_modules/react-stripe-elements/src/components/Element.js b/node_modules/react-stripe-elements/src/components/Element.js
new file mode 100644
index 00000000..7f0cb9dc
--- /dev/null
+++ b/node_modules/react-stripe-elements/src/components/Element.js
@@ -0,0 +1,138 @@
+// @flow
+import React from 'react';
+import PropTypes from 'prop-types';
+import isEqual from '../utils/isEqual';
+import {type ElementContext, elementContextTypes} from './Elements';
+
+type Props = {
+  id?: string,
+  className?: string,
+  onChange: Function,
+  onBlur: Function,
+  onFocus: Function,
+  onReady: Function,
+};
+
+const noop = () => {};
+
+const _extractOptions = (props: Props): Object => {
+  const {id, className, onChange, onFocus, onBlur, onReady, ...options} = props;
+  return options;
+};
+
+const capitalized = (str: string) => {
+  return str.charAt(0).toUpperCase() + str.slice(1);
+};
+
+const Element = (
+  type: string,
+  hocOptions: {impliedTokenType?: string, impliedSourceType?: string} = {}
+) =>
+  class extends React.Component<Props> {
+    static propTypes = {
+      id: PropTypes.string,
+      className: PropTypes.string,
+      onChange: PropTypes.func,
+      onBlur: PropTypes.func,
+      onFocus: PropTypes.func,
+      onReady: PropTypes.func,
+    };
+    static defaultProps = {
+      id: undefined,
+      className: undefined,
+      onChange: noop,
+      onBlur: noop,
+      onFocus: noop,
+      onReady: noop,
+    };
+
+    static contextTypes = elementContextTypes;
+
+    static displayName = `${capitalized(type)}Element`;
+
+    constructor(props: Props, context: ElementContext) {
+      super(props, context);
+
+      this._element = null;
+
+      const options = _extractOptions(this.props);
+      // We keep track of the extracted options on this._options to avoid re-rendering.
+      // (We would unnecessarily re-render if we were tracking them with state.)
+      this._options = options;
+    }
+
+    componentDidMount() {
+      this.context.addElementsLoadListener((elements: ElementsShape) => {
+        const element = elements.create(type, this._options);
+        this._element = element;
+
+        this._setupEventListeners(element);
+
+        element.mount(this._ref);
+
+        // Register Element for automatic token / source creation
+        if (hocOptions.impliedTokenType || hocOptions.impliedSourceType) {
+          this.context.registerElement(
+            element,
+            hocOptions.impliedTokenType,
+            hocOptions.impliedSourceType
+          );
+        }
+      });
+    }
+
+    componentWillReceiveProps(nextProps: Props) {
+      const options = _extractOptions(nextProps);
+      if (
+        Object.keys(options).length !== 0 &&
+        !isEqual(options, this._options)
+      ) {
+        this._options = options;
+        if (this._element) {
+          this._element.update(options);
+        }
+      }
+    }
+
+    componentWillUnmount() {
+      if (this._element) {
+        const element = this._element;
+        element.destroy();
+        this.context.unregisterElement(element);
+      }
+    }
+
+    context: ElementContext;
+    _element: ElementShape | null;
+    _ref: ?HTMLElement;
+    _options: Object;
+
+    _setupEventListeners(element: ElementShape) {
+      element.on('ready', () => {
+        this.props.onReady(this._element);
+      });
+
+      element.on('change', (change) => {
+        this.props.onChange(change);
+      });
+
+      element.on('blur', (...args) => this.props.onBlur(...args));
+      element.on('focus', (...args) => this.props.onFocus(...args));
+    }
+
+    handleRef = (ref: ?HTMLElement) => {
+      this._ref = ref;
+    };
+
+    render() {
+      return (
+        <div
+          id={this.props.id}
+          className={this.props.className}
+          ref={this.handleRef}
+        />
+      );
+    }
+  };
+
+export default Element;
diff --git a/node_modules/react-stripe-elements/src/components/Element.test.js b/node_modules/react-stripe-elements/src/components/Element.test.js
new file mode 100644
index 00000000..c3a5548e
--- /dev/null
+++ b/node_modules/react-stripe-elements/src/components/Element.test.js
@@ -0,0 +1,147 @@
+// @noflow
+import React from 'react';
+import {mount, shallow} from 'enzyme';
+
+import Element from './Element';
+
+describe('Element', () => {
+  let elementMock;
+  let elementsMock;
+  let context;
+  beforeEach(() => {
+    elementMock = {
+      mount: jest.fn(),
+      destroy: jest.fn(),
+      on: jest.fn((event, cb) => {
+        if (event === 'ready') {
+          cb();
+        }
+      }),
+      update: jest.fn(),
+    };
+    elementsMock = {
+      create: jest.fn().mockReturnValue(elementMock),
+    };
+    context = {
+      addElementsLoadListener: (fn) => fn(elementsMock),
+      registerElement: jest.fn(),
+      unregisterElement: jest.fn(),
+    };
+  });
+
+  it('should pass id to the DOM element', () => {
+    const id = 'my-id';
+    const CardElement = Element('card', {
+      impliedTokenType: 'card',
+      impliedSourceType: 'card',
+    });
+    const element = shallow(<CardElement id={id} />, {context});
+    expect(element.find('#my-id').length).toBe(1);
+  });
+
+  it('should pass className to the DOM element', () => {
+    const className = 'my-class';
+    const CardElement = Element('card', {
+      impliedTokenType: 'card',
+      impliedSourceType: 'card',
+    });
+    const element = shallow(<CardElement className={className} />, {context});
+    expect(element.first().hasClass(className)).toBeTruthy();
+  });
+
+  it('should call the right hooks for a registered Element', () => {
+    const TestElement = Element('test', {
+      impliedTokenType: 'foo',
+      impliedSourceType: 'bar',
+    });
+    const element = mount(<TestElement onChange={jest.fn()} />, {context});
+
+    expect(context.registerElement).toHaveBeenCalledTimes(1);
+    expect(context.registerElement).toHaveBeenCalledWith(
+      elementMock,
+      'foo',
+      'bar'
+    );
+
+    element.unmount();
+    expect(elementMock.destroy).toHaveBeenCalledTimes(1);
+    expect(context.unregisterElement).toHaveBeenCalledTimes(1);
+    expect(context.unregisterElement).toHaveBeenCalledWith(elementMock);
+  });
+
+  it('should call the right hooks for a non-registered Element', () => {
+    const TestElement = Element('test');
+    const element = mount(<TestElement onChange={jest.fn()} />, {context});
+
+    expect(context.registerElement).toHaveBeenCalledTimes(0);
+
+    element.unmount();
+    expect(elementMock.destroy).toHaveBeenCalledTimes(1);
+    expect(context.unregisterElement).toHaveBeenCalledTimes(1);
+    expect(context.unregisterElement).toHaveBeenCalledWith(elementMock);
+  });
+
+  it('should call onReady', () => {
+    const CardElement = Element('card', {
+      impliedTokenType: 'card',
+      impliedSourceType: 'card',
+    });
+    const onReadyMock = jest.fn();
+
+    mount(<CardElement onReady={onReadyMock} />, {
+      context,
+    });
+
+    expect(elementMock.on.mock.calls[0][0]).toBe('ready');
+    expect(onReadyMock).toHaveBeenCalledWith(elementMock);
+  });
+
+  it('should update the Element when props change', () => {
+    const style = {
+      base: {
+        fontSize: '16px',
+      },
+    };
+    const TestElement = Element('test', {
+      impliedTokenType: 'foo',
+      impliedSourceType: 'bar',
+    });
+    const element = mount(<TestElement onChange={jest.fn()} style={style} />, {
+      context,
+    });
+
+    expect(elementMock.update).toHaveBeenCalledTimes(0);
+    element.setProps({style, onChange: jest.fn()});
+    expect(elementMock.update).toHaveBeenCalledTimes(0);
+
+    element.setProps({
+      style: {base: {fontSize: '20px'}},
+      onChange: jest.fn(),
+    });
+    expect(elementMock.update).toHaveBeenCalledTimes(1);
+    expect(elementMock.update).toHaveBeenCalledWith({
+      style: {base: {fontSize: '20px'}},
+    });
+  });
+
+  it("re-rendering with new props should still work if addElementsLoadListener hasn't fired yet", () => {
+    // no-op function so that any registered listeners are never woken up
+    context.addElementsLoadListener = () => {};
+
+    const placeholder = 'hello';
+    const CardElement = Element('card', {
+      impliedTokenType: 'card',
+      impliedSourceType: 'card',
+    });
+    const element = shallow(<CardElement placeholder={placeholder} />, {
+      context,
+    });
+
+    expect(() => element.setProps({placeholder: 'placeholder'})).not.toThrow();
+  });
+
+  it('should have a displayName based on the type argument', () => {
+    const TestElement = Element('test');
+    expect(TestElement.displayName).toEqual('TestElement');
+  });
+});
diff --git a/node_modules/react-stripe-elements/src/components/Elements.js b/node_modules/react-stripe-elements/src/components/Elements.js
new file mode 100644
index 00000000..73b765dd
--- /dev/null
+++ b/node_modules/react-stripe-elements/src/components/Elements.js
@@ -0,0 +1,126 @@
+// @flow
+import React from 'react';
+import PropTypes from 'prop-types';
+import {type ProviderContext, providerContextTypes} from './Provider';
+
+export type ElementsList = Array<{
+  element: ElementShape,
+  impliedTokenType?: string,
+  impliedSourceType?: string,
+}>;
+export type ElementsLoadListener = (ElementsShape) => void;
+
+type Props = {
+  children?: any,
+};
+
+type State = {
+  registeredElements: ElementsList,
+};
+
+export type InjectContext = {
+  getRegisteredElements: () => ElementsList,
+};
+
+export const injectContextTypes = {
+  getRegisteredElements: PropTypes.func.isRequired,
+};
+
+export type ElementContext = {
+  addElementsLoadListener: (ElementsLoadListener) => void,
+  registerElement: (
+    element: ElementShape,
+    impliedTokenType: ?string,
+    impliedSourceType: ?string
+  ) => void,
+  unregisterElement: (element: ElementShape) => void,
+};
+
+export const elementContextTypes = {
+  addElementsLoadListener: PropTypes.func.isRequired,
+  registerElement: PropTypes.func.isRequired,
+  unregisterElement: PropTypes.func.isRequired,
+};
+
+type ChildContext = InjectContext & ElementContext;
+
+export default class Elements extends React.Component<Props, State> {
+  static childContextTypes = {
+    ...injectContextTypes,
+    ...elementContextTypes,
+  };
+  static contextTypes = providerContextTypes;
+  static defaultProps = {
+    children: null,
+  };
+
+  constructor(props: Props, context: ProviderContext) {
+    super(props, context);
+
+    this.state = {
+      registeredElements: [],
+    };
+  }
+
+  getChildContext(): ChildContext {
+    return {
+      addElementsLoadListener: (fn: ElementsLoadListener) => {
+        // Return the existing elements instance if we already have one.
+        if (this._elements) {
+          fn(this._elements);
+          return;
+        }
+        const {children, ...options} = this.props;
+        if (this.context.tag === 'sync') {
+          this._elements = this.context.stripe.elements(options);
+          fn(this._elements);
+        } else {
+          this.context.addStripeLoadListener((stripe: StripeShape) => {
+            if (this._elements) {
+              fn(this._elements);
+            } else {
+              this._elements = stripe.elements(options);
+              fn(this._elements);
+            }
+          });
+        }
+      },
+      registerElement: this.handleRegisterElement,
+      unregisterElement: this.handleUnregisterElement,
+      getRegisteredElements: () => this.state.registeredElements,
+    };
+  }
+
+  props: Props;
+  context: ProviderContext;
+  _elements: ElementsShape;
+
+  handleRegisterElement = (
+    element: Object,
+    impliedTokenType: ?string,
+    impliedSourceType: ?string
+  ) => {
+    this.setState((prevState) => ({
+      registeredElements: [
+        ...prevState.registeredElements,
+        {
+          element,
+          ...(impliedTokenType ? {impliedTokenType} : {}),
+          ...(impliedSourceType ? {impliedSourceType} : {}),
+        },
+      ],
+    }));
+  };
+
+  handleUnregisterElement = (el: Object) => {
+    this.setState((prevState) => ({
+      registeredElements: prevState.registeredElements.filter(
+        ({element}) => element !== el
+      ),
+    }));
+  };
+
+  render() {
+    return React.Children.only(this.props.children);
+  }
+}
diff --git a/node_modules/react-stripe-elements/src/components/Elements.test.js b/node_modules/react-stripe-elements/src/components/Elements.test.js
new file mode 100644
index 00000000..b8100b0d
--- /dev/null
+++ b/node_modules/react-stripe-elements/src/components/Elements.test.js
@@ -0,0 +1,95 @@
+// @noflow
+import React from 'react';
+import {mount} from 'enzyme';
+
+import Elements from './Elements';
+
+describe('Elements', () => {
+  let stripeMock;
+
+  beforeEach(() => {
+    stripeMock = {
+      elements: jest
+        .fn(() => {
+          throw new Error(
+            'elements() should not be called twice in this test.'
+          );
+        })
+        .mockReturnValueOnce(true),
+      createToken: jest.fn(),
+      createSource: jest.fn(),
+    };
+  });
+
+  it('creates the context', () => {
+    const syncContext = {
+      tag: 'sync',
+      stripe: stripeMock,
+    };
+    const wrapper = mount(
+      <Elements>
+        <div />
+      </Elements>,
+      {context: syncContext}
+    );
+    const childContext = wrapper.node.getChildContext();
+    expect(Object.keys(childContext)).toEqual([
+      'addElementsLoadListener',
+      'registerElement',
+      'unregisterElement',
+      'getRegisteredElements',
+    ]);
+  });
+
+  it('with sync context: addElementsLoadListener returns the same elements instance ', () => {
+    const syncContext = {
+      tag: 'sync',
+      stripe: stripeMock,
+    };
+    const wrapper = mount(
+      <Elements>
+        <div />
+      </Elements>,
+      {context: syncContext}
+    );
+    const childContext = wrapper.node.getChildContext();
+
+    const mockCallback = jest.fn();
+    childContext.addElementsLoadListener(mockCallback);
+    expect(mockCallback).toHaveBeenCalledTimes(1);
+    expect(mockCallback).toHaveBeenLastCalledWith(true);
+    childContext.addElementsLoadListener(mockCallback);
+    expect(mockCallback).toHaveBeenCalledTimes(2);
+    expect(mockCallback).toHaveBeenCalledWith(true);
+  });
+
+  it('with async context: addElementsLoadListener returns the same elements instance ', () => {
+    const asyncContext = {
+      tag: 'async',
+      addStripeLoadListener: jest.fn((callback) =>
+        setTimeout(() => callback(stripeMock), 0)
+      ),
+    };
+    const wrapper = mount(
+      <Elements>
+        <div />
+      </Elements>,
+      {context: asyncContext}
+    );
+    const childContext = wrapper.node.getChildContext();
+
+    const a = new Promise((resolve) =>
+      childContext.addElementsLoadListener((first) => {
+        expect(first).toEqual(true);
+        resolve();
+      })
+    );
+    const b = new Promise((resolve) =>
+      childContext.addElementsLoadListener((second) => {
+        expect(second).toEqual(true);
+        resolve();
+      })
+    );
+    return Promise.all([a, b]);
+  });
+});
diff --git a/node_modules/react-stripe-elements/src/components/PaymentRequestButtonElement.js b/node_modules/react-stripe-elements/src/components/PaymentRequestButtonElement.js
new file mode 100644
index 00000000..f858a65f
--- /dev/null
+++ b/node_modules/react-stripe-elements/src/components/PaymentRequestButtonElement.js
@@ -0,0 +1,125 @@
+// @flow
+import React from 'react';
+import PropTypes from 'prop-types';
+import shallowEqual from '../utils/shallowEqual';
+import {type ElementContext, elementContextTypes} from './Elements';
+
+type Props = {
+  id?: string,
+  className?: string,
+  onBlur: Function,
+  onClick: Function,
+  onFocus: Function,
+  onReady: Function,
+  paymentRequest: {
+    canMakePayment: Function,
+    on: Function,
+    show: Function,
+  },
+};
+
+const noop = () => {};
+
+const _extractOptions = (props: Props): Object => {
+  const {
+    id,
+    className,
+    onBlur,
+    onClick,
+    onFocus,
+    onReady,
+    paymentRequest,
+    ...options
+  } = props;
+  return options;
+};
+
+class PaymentRequestButtonElement extends React.Component<Props> {
+  static propTypes = {
+    id: PropTypes.string,
+    className: PropTypes.string,
+    onBlur: PropTypes.func,
+    onClick: PropTypes.func,
+    onFocus: PropTypes.func,
+    onReady: PropTypes.func,
+    paymentRequest: PropTypes.shape({
+      canMakePayment: PropTypes.func.isRequired,
+      on: PropTypes.func.isRequired,
+      show: PropTypes.func.isRequired,
+    }).isRequired,
+  };
+  static defaultProps = {
+    id: undefined,
+    className: undefined,
+    onBlur: noop,
+    onClick: noop,
+    onFocus: noop,
+    onReady: noop,
+  };
+
+  static contextTypes = elementContextTypes;
+
+  constructor(props: Props, context: ElementContext) {
+    super(props, context);
+
+    const options = _extractOptions(props);
+    // We keep track of the extracted options on this._options to avoid re-rendering.
+    // (We would unnecessarily re-render if we were tracking them with state.)
+    this._options = options;
+  }
+
+  componentDidMount() {
+    this.context.addElementsLoadListener((elements: ElementsShape) => {
+      this._element = elements.create('paymentRequestButton', {
+        paymentRequest: this.props.paymentRequest,
+        ...this._options,
+      });
+      this._element.on('ready', () => {
+        this.props.onReady(this._element);
+      });
+      this._element.on('focus', (...args) => this.props.onFocus(...args));
+      this._element.on('click', (...args) => this.props.onClick(...args));
+      this._element.on('blur', (...args) => this.props.onBlur(...args));
+      this._element.mount(this._ref);
+    });
+  }
+  componentWillReceiveProps(nextProps: Props) {
+    if (this.props.paymentRequest !== nextProps.paymentRequest) {
+      console.warn(
+        'Unsupported prop change: paymentRequest is not a customizable property.'
+      );
+    }
+    const options = _extractOptions(nextProps);
+    if (
+      Object.keys(options).length !== 0 &&
+      !shallowEqual(options, this._options)
+    ) {
+      this._options = options;
+      this._element.update(options);
+    }
+  }
+  componentWillUnmount() {
+    this._element.destroy();
+  }
+
+  context: ElementContext;
+  _element: ElementShape;
+  _ref: ?HTMLElement;
+  _options: Object;
+
+  handleRef = (ref: ?HTMLElement) => {
+    this._ref = ref;
+  };
+
+  render() {
+    return (
+      <div
+        id={this.props.id}
+        className={this.props.className}
+        ref={this.handleRef}
+      />
+    );
+  }
+}
+
+export default PaymentRequestButtonElement;
diff --git a/node_modules/react-stripe-elements/src/components/PaymentRequestButtonElement.test.js b/node_modules/react-stripe-elements/src/components/PaymentRequestButtonElement.test.js
new file mode 100644
index 00000000..584bc77b
--- /dev/null
+++ b/node_modules/react-stripe-elements/src/components/PaymentRequestButtonElement.test.js
@@ -0,0 +1,155 @@
+// @noflow
+import React from 'react';
+import {mount, shallow} from 'enzyme';
+
+import PaymentRequestButtonElement from './PaymentRequestButtonElement';
+
+describe('PaymentRequestButtonElement', () => {
+  let elementMock;
+  let elementsMock;
+  let context;
+  let paymentRequestMock;
+  beforeEach(() => {
+    elementMock = {
+      mount: jest.fn(),
+      destroy: jest.fn(),
+      on: jest.fn((event, cb) => {
+        if (event === 'ready') {
+          cb();
+        }
+      }),
+      update: jest.fn(),
+    };
+    elementsMock = {
+      create: jest.fn().mockReturnValue(elementMock),
+    };
+    context = {
+      addElementsLoadListener: (fn) => fn(elementsMock),
+      registerElement: jest.fn(),
+      unregisterElement: jest.fn(),
+    };
+    paymentRequestMock = {
+      canMakePayment: jest.fn(),
+      on: jest.fn(),
+      show: jest.fn(),
+    };
+  });
+
+  it('should pass the id to the DOM element', () => {
+    const id = 'my-id';
+    const element = shallow(
+      <PaymentRequestButtonElement
+        id={id}
+        paymentRequest={paymentRequestMock}
+      />,
+      {context}
+    );
+    expect(element.find(`#${id}`)).toBeTruthy();
+  });
+
+  it('should pass the className to the DOM element', () => {
+    const className = 'my-class';
+    const element = shallow(
+      <PaymentRequestButtonElement
+        className={className}
+        paymentRequest={paymentRequestMock}
+      />,
+      {context}
+    );
+    expect(element.first().hasClass(className)).toBeTruthy();
+  });
+
+  it('should call onReady', () => {
+    const onReadyMock = jest.fn();
+
+    mount(
+      <PaymentRequestButtonElement
+        onReady={onReadyMock}
+        paymentRequest={paymentRequestMock}
+      />,
+      {context}
+    );
+
+    expect(elementMock.on.mock.calls[0][0]).toBe('ready');
+    expect(onReadyMock).toHaveBeenCalledWith(elementMock);
+  });
+
+  it('should not register the Element', () => {
+    const element = mount(
+      <PaymentRequestButtonElement paymentRequest={paymentRequestMock} />,
+      {context}
+    );
+
+    expect(context.registerElement).toHaveBeenCalledTimes(0);
+
+    element.unmount();
+    expect(elementMock.destroy).toHaveBeenCalledTimes(1);
+    expect(context.unregisterElement).toHaveBeenCalledTimes(0);
+  });
+
+  it('should update the Element when props change', () => {
+    const style = {
+      paymentRequestButton: {
+        theme: 'dark',
+        height: '64px',
+        type: 'donate',
+      },
+    };
+    const element = mount(
+      <PaymentRequestButtonElement
+        paymentRequest={paymentRequestMock}
+        style={style}
+      />,
+      {context}
+    );
+
+    expect(elementMock.update).toHaveBeenCalledTimes(0);
+    element.setProps({style});
+    expect(elementMock.update).toHaveBeenCalledTimes(0);
+
+    element.setProps({
+      style: {paymentRequestButton: {height: '64px'}},
+    });
+    expect(elementMock.update).toHaveBeenCalledTimes(1);
+    expect(elementMock.update).toHaveBeenCalledWith({
+      style: {paymentRequestButton: {height: '64px'}},
+    });
+  });
+
+  it('should warn that the paymentRequest prop can not be changed', () => {
+    const style = {
+      paymentRequestButton: {
+        theme: 'dark',
+        height: '64px',
+        type: 'donate',
+      },
+    };
+    const element = mount(
+      <PaymentRequestButtonElement
+        paymentRequest={paymentRequestMock}
+        style={style}
+      />,
+      {context}
+    );
+
+    expect(elementMock.update).toHaveBeenCalledTimes(0);
+
+    const originalConsoleWarn = global.console.warn;
+    const mockConsoleWarn = jest.fn();
+    global.console.warn = mockConsoleWarn;
+
+    element.setProps({
+      paymentRequest: {
+        canMakePayment: jest.fn(),
+        on: jest.fn(),
+        show: jest.fn(),
+      },
+    });
+    expect(elementMock.update).toHaveBeenCalledTimes(0);
+    expect(mockConsoleWarn).toHaveBeenCalledWith(
+      'Unsupported prop change: paymentRequest is not a customizable property.'
+    );
+
+    global.console.warn = originalConsoleWarn;
+  });
+});
diff --git a/node_modules/react-stripe-elements/src/components/Provider.js b/node_modules/react-stripe-elements/src/components/Provider.js
new file mode 100644
index 00000000..4c334d0c
--- /dev/null
+++ b/node_modules/react-stripe-elements/src/components/Provider.js
@@ -0,0 +1,190 @@
+// @flow
+import React from 'react';
+import PropTypes from 'prop-types';
+
+type Props = {
+  apiKey?: string,
+  stripe?: mixed,
+  children?: any,
+};
+
+type Meta =
+  | {tag: 'sync', stripe: StripeShape}
+  | {tag: 'async', stripe: StripeShape | null};
+
+type StripeLoadListener = (StripeShape) => void;
+
+// TODO(jez) 'sync' and 'async' are bad tag names.
+// TODO(jez) What if redux also uses this.context.tag?
+export type SyncStripeContext = {
+  tag: 'sync',
+  stripe: StripeShape,
+};
+export type AsyncStripeContext = {
+  tag: 'async',
+  addStripeLoadListener: (StripeLoadListener) => void,
+};
+
+export type ProviderContext = SyncStripeContext | AsyncStripeContext;
+
+export const providerContextTypes = {
+  tag: PropTypes.string.isRequired,
+  stripe: PropTypes.object,
+  addStripeLoadListener: PropTypes.func,
+};
+
+const getOrCreateStripe = (apiKey: string, options: mixed): StripeShape => {
+  /**
+   * Note that this is not meant to be a generic memoization solution.
+   * This is specifically a solution for `StripeProvider`s being initialized
+   * and destroyed regularly (with the same set of props) when users only
+   * use `StripeProvider` for the subtree that contains their checkout form.
+   */
+  window.Stripe.__cachedInstances = window.Stripe.__cachedInstances || {};
+  const cacheKey = `key=${apiKey} options=${JSON.stringify(options)}`;
+
+  const stripe =
+    window.Stripe.__cachedInstances[cacheKey] || window.Stripe(apiKey, options);
+  window.Stripe.__cachedInstances[cacheKey] = stripe;
+
+  return stripe;
+};
+
+const ensureStripeShape = (stripe: mixed): StripeShape => {
+  if (stripe && stripe.elements && stripe.createSource && stripe.createToken) {
+    return ((stripe: any): StripeShape);
+  } else {
+    throw new Error(
+      "Please pass a valid Stripe object to StripeProvider. You can obtain a Stripe object by calling 'Stripe(...)' with your publishable key."
+    );
+  }
+};
+
+export default class Provider extends React.Component<Props> {
+  // Even though we're using flow, also use PropTypes so we can take advantage of developer warnings.
+  static propTypes = {
+    apiKey: PropTypes.string,
+    // PropTypes.object is the only way we can accept a Stripe instance
+    // eslint-disable-next-line react/forbid-prop-types
+    stripe: PropTypes.object,
+    children: PropTypes.node,
+  };
+  // on the other hand: childContextTypes is *required* to use context.
+  static childContextTypes = providerContextTypes;
+  static defaultProps = {
+    apiKey: undefined,
+    stripe: undefined,
+    children: null,
+  };
+
+  constructor(props: Props) {
+    super(props);
+
+    if (this.props.apiKey && this.props.stripe) {
+      throw new Error(
+        "Please pass either 'apiKey' or 'stripe' to StripeProvider, not both."
+      );
+    } else if (this.props.apiKey) {
+      if (!window.Stripe) {
+        throw new Error(
+          "Please load Stripe.js (https://js.stripe.com/v3/) on this page to use react-stripe-elements. If Stripe.js isn't available yet (it's loading asynchronously, or you're using server-side rendering), see https://github.com/stripe/react-stripe-elements#advanced-integrations"
+        );
+      } else {
+        const {apiKey, children, stripe, ...options} = this.props;
+        this._meta = {
+          tag: 'sync',
+          stripe: getOrCreateStripe(apiKey, options),
+        };
+      }
+    } else if (this.props.stripe) {
+      // If we already have a stripe instance (in the constructor), we can behave synchronously.
+      this._meta = {
+        tag: 'sync',
+        stripe: ensureStripeShape(this.props.stripe),
+      };
+    } else if (this.props.stripe === null) {
+      this._meta = {
+        tag: 'async',
+        stripe: null,
+      };
+    } else {
+      throw new Error(
+        "Please pass either 'apiKey' or 'stripe' to StripeProvider. If you're using 'stripe' but don't have a Stripe instance yet, pass 'null' explicitly."
+      );
+    }
+
+    this._didWarn = false;
+    this._didWakeUpListeners = false;
+    this._listeners = [];
+  }
+
+  getChildContext(): ProviderContext {
+    // getChildContext is run after the constructor, so we WILL have access to
+    // the initial state.
+    //
+    // However, context doesn't update in respnse to state changes like you
+    // might expect: context is pulled by the child, not pushed by the parent.
+    if (this._meta.tag === 'sync') {
+      return {
+        tag: 'sync',
+        stripe: this._meta.stripe,
+      };
+    } else {
+      return {
+        tag: 'async',
+        addStripeLoadListener: (fn: StripeLoadListener) => {
+          if (this._meta.stripe) {
+            fn(this._meta.stripe);
+          } else {
+            this._listeners.push(fn);
+          }
+        },
+      };
+    }
+  }
+
+  componentWillReceiveProps(nextProps: Props) {
+    const apiKeyChanged =
+      this.props.apiKey &&
+      nextProps.apiKey &&
+      this.props.apiKey !== nextProps.apiKey;
+
+    const stripeInstanceChanged =
+      this.props.stripe &&
+      nextProps.stripe &&
+      this.props.stripe !== nextProps.stripe;
+    if (
+      !this._didWarn &&
+      (apiKeyChanged || stripeInstanceChanged) &&
+      window.console &&
+      window.console.error
+    ) {
+      this._didWarn = true;
+      // eslint-disable-next-line no-console
+      console.error(
+        'StripeProvider does not support changing the apiKey parameter.'
+      );
+      return;
+    }
+
+    if (!this._didWakeUpListeners && nextProps.stripe) {
+      // Wake up the listeners if we've finally been given a StripeShape
+      this._didWakeUpListeners = true;
+      const stripe = ensureStripeShape(nextProps.stripe);
+      this._meta.stripe = stripe;
+      this._listeners.forEach((fn) => {
+        fn(stripe);
+      });
+    }
+  }
+
+  props: Props;
+  _didWarn: boolean;
+  _didWakeUpListeners: boolean;
+  _listeners: Array<StripeLoadListener>;
+  _meta: Meta;
+
+  render() {
+    return React.Children.only(this.props.children);
+  }
+}
diff --git a/node_modules/react-stripe-elements/src/components/Provider.test.js b/node_modules/react-stripe-elements/src/components/Provider.test.js
new file mode 100644
index 00000000..e2206235
--- /dev/null
+++ b/node_modules/react-stripe-elements/src/components/Provider.test.js
@@ -0,0 +1,193 @@
+// @noflow
+import React from 'react';
+import {mount, shallow} from 'enzyme';
+
+import StripeProvider from './Provider';
+
+describe('StripeProvider', () => {
+  let stripeMockFn;
+  let stripeMockResult;
+
+  beforeEach(() => {
+    stripeMockResult = {
+      elements: jest.fn(),
+      createToken: jest.fn(),
+      createSource: jest.fn(),
+    };
+    stripeMockFn = jest.fn().mockReturnValue(stripeMockResult);
+    window.Stripe = stripeMockFn;
+  });
+
+  it('requires apiKey or stripe prop', () => {
+    expect(() => {
+      shallow(
+        <StripeProvider>
+          <div />
+        </StripeProvider>
+      );
+    }).toThrow(/Please pass either 'apiKey' or 'stripe' to StripeProvider./);
+  });
+
+  it('throws without stripe.js loaded if using apiKey', () => {
+    window.Stripe = null;
+    expect(() => shallow(<StripeProvider apiKey="made_up_key" />)).toThrow(
+      'Please load Stripe.js (https://js.stripe.com/v3/) on this page to use react-stripe-elements.'
+    );
+  });
+
+  it('requires not both apiKey and stripe prop', () => {
+    expect(() => {
+      shallow(
+        <StripeProvider apiKey="made_up_key" stripe={stripeMockResult}>
+          <div />
+        </StripeProvider>
+      );
+    }).toThrow(
+      /Please pass either 'apiKey' or 'stripe' to StripeProvider, not both./
+    );
+  });
+
+  it('throws without children', () => {
+    expect(() => shallow(<StripeProvider apiKey="made_up_key" />)).toThrow(
+      'React.Children.only expected to receive a single React element child'
+    );
+  });
+
+  it('throws with more than one children', () => {
+    expect(() =>
+      shallow(
+        <StripeProvider apiKey="made_up_key">
+          <div />
+          <div />
+        </StripeProvider>
+      )
+    ).toThrow(
+      'React.Children.only expected to receive a single React element child'
+    );
+  });
+
+  it('renders its single child', () => {
+    const wrapper = shallow(
+      <StripeProvider apiKey="made_up_key">
+        <form>
+          <input />
+        </form>
+      </StripeProvider>
+    );
+
+    expect(wrapper.html()).toBe('<form><input/></form>');
+  });
+
+  it('initializes Stripe with apiKey and empty options', () => {
+    shallow(
+      <StripeProvider apiKey="made_up_key">
+        <form />
+      </StripeProvider>
+    );
+    expect(stripeMockFn).toHaveBeenCalledWith('made_up_key', {});
+  });
+
+  it('initializes Stripe with apiKey and arbitrary props as options', () => {
+    shallow(
+      <StripeProvider apiKey="made_up_key" foo="bar">
+        <form />
+      </StripeProvider>
+    );
+    expect(stripeMockFn).toHaveBeenCalledWith('made_up_key', {foo: 'bar'});
+  });
+
+  it('provides sync context.stripe if using apiKey', () => {
+    const wrapper = mount(
+      <StripeProvider apiKey="made_up_key">
+        <form />
+      </StripeProvider>
+    );
+    const childContext = wrapper.node.getChildContext();
+    expect(childContext).toEqual({stripe: stripeMockResult, tag: 'sync'});
+  });
+
+  it('if stripe prop non-null *at mount*, provides sync context', () => {
+    const wrapper = mount(
+      <StripeProvider stripe={stripeMockResult}>
+        <form />
+      </StripeProvider>
+    );
+    const childContext = wrapper.node.getChildContext();
+    expect(childContext).toEqual({stripe: stripeMockResult, tag: 'sync'});
+  });
+
+  it('if stripe prop null *at mount*, provides async context', () => {
+    const wrapper = mount(
+      <StripeProvider stripe={null}>
+        <form />
+      </StripeProvider>
+    );
+    const childContext = wrapper.node.getChildContext();
+    expect(childContext).toHaveProperty('addStripeLoadListener');
+    expect(childContext).toHaveProperty('tag', 'async');
+  });
+
+  it('addStripeLoadListener is called when stripe goes from null -> non-null', (done) => {
+    const wrapper = mount(
+      <StripeProvider stripe={null}>
+        <form />
+      </StripeProvider>
+    );
+
+    const childContext = wrapper.node.getChildContext();
+    childContext.addStripeLoadListener((stripe) => {
+      expect(stripe).toEqual(stripeMockResult);
+      done();
+    });
+
+    wrapper.setProps({stripe: stripeMockResult});
+  });
+
+  it('does not create a new Stripe instance if one exists for the same key', () => {
+    window.Stripe = jest.fn(() => ({}));
+
+    // First, create the first instance.
+    let wrapper = mount(
+      <StripeProvider apiKey="key_one">
+        <form />
+      </StripeProvider>
+    );
+    let childContext = wrapper.node.getChildContext();
+    const keyOneInstance = childContext.stripe;
+    expect(keyOneInstance).toBeTruthy();
+
+    // Create another!
+    wrapper = mount(
+      <StripeProvider apiKey="key_one">
+        <form />
+      </StripeProvider>
+    );
+    childContext = wrapper.node.getChildContext();
+    expect(childContext.stripe).toBe(keyOneInstance);
+
+    // Create another, but with a different key!
+    wrapper = mount(
+      <StripeProvider apiKey="key_two">
+        <form />
+      </StripeProvider>
+    );
+    childContext = wrapper.node.getChildContext();
+    expect(childContext.stripe).not.toBe(keyOneInstance);
+  });
+
+  it('warns when trying to change the API key', () => {
+    const originalConsoleError = global.console.error;
+    const mockConsoleError = jest.fn();
+    global.console.error = mockConsoleError;
+    const wrapper = shallow(
+      <StripeProvider apiKey="made_up_key">
+        <form />
+      </StripeProvider>
+    );
+    wrapper.setProps({apiKey: 'a_new_key'});
+    expect(mockConsoleError).toHaveBeenCalledWith(
+      'StripeProvider does not support changing the apiKey parameter.'
+    );
+    global.console.error = originalConsoleError;
+  });
+});
diff --git a/node_modules/react-stripe-elements/src/components/inject.js b/node_modules/react-stripe-elements/src/components/inject.js
new file mode 100644
index 00000000..64a99ccd
--- /dev/null
+++ b/node_modules/react-stripe-elements/src/components/inject.js
@@ -0,0 +1,217 @@
+// @flow
+import React, {type ComponentType} from 'react';
+
+import {type InjectContext, injectContextTypes} from './Elements';
+import {
+  type SyncStripeContext,
+  type AsyncStripeContext,
+  providerContextTypes,
+} from './Provider';
+
+type Context =
+  | (InjectContext & SyncStripeContext)
+  | (InjectContext & AsyncStripeContext);
+
+type Options = {
+  withRef?: boolean,
+};
+
+type WrappedStripeShape = {
+  createToken: Function,
+  createSource: Function,
+};
+
+type State = {stripe: WrappedStripeShape | null};
+
+export type InjectedProps = {stripe: WrappedStripeShape | null};
+
+// react-redux does a bunch of stuff with pure components / checking if it needs to re-render.
+// not sure if we need to do the same.
+const inject = <Props: {}>(
+  WrappedComponent: ComponentType<InjectedProps & Props>,
+  componentOptions: Options = {}
+): ComponentType<Props> => {
+  const {withRef = false} = componentOptions;
+
+  return class extends React.Component<Props, State> {
+    static contextTypes = {
+      ...providerContextTypes,
+      ...injectContextTypes,
+    };
+    static displayName = `InjectStripe(${WrappedComponent.displayName ||
+      WrappedComponent.name ||
+      'Component'})`;
+
+    constructor(props: Props, context: Context) {
+      if (!context || !context.getRegisteredElements) {
+        throw new Error(
+          `It looks like you are trying to inject Stripe context outside of an Elements context.
+Please be sure the component that calls createSource or createToken is within an <Elements> component.`
+        );
+      }
+
+      super(props, context);
+
+      if (this.context.tag === 'sync') {
+        this.state = {
+          stripe: this.stripeProps(this.context.stripe),
+        };
+      } else {
+        this.state = {
+          stripe: null,
+        };
+      }
+    }
+
+    componentDidMount() {
+      if (this.context.tag === 'async') {
+        this.context.addStripeLoadListener((stripe: StripeShape) => {
+          this.setState({
+            stripe: this.stripeProps(stripe),
+          });
+        });
+      } else {
+        // when 'sync', it's already set in the constructor.
+      }
+    }
+
+    getWrappedInstance() {
+      if (!withRef) {
+        throw new Error(
+          'To access the wrapped instance, the `{withRef: true}` option must be set when calling `injectStripe()`'
+        );
+      }
+      return this.wrappedInstance;
+    }
+
+    context: Context;
+    wrappedInstance: ?React.Component<InjectedProps & Props, any>;
+
+    stripeProps(stripe: StripeShape): WrappedStripeShape {
+      return {
+        ...stripe,
+        // These are the only functions that take elements.
+        createToken: this.wrappedCreateToken(stripe),
+        createSource: this.wrappedCreateSource(stripe),
+      };
+    }
+
+    // Finds an Element by the specified type, if one exists.
+    // Throws if multiple Elements match.
+    findElement = (
+      filterBy: 'impliedTokenType' | 'impliedSourceType',
+      specifiedType: string
+    ): ?ElementShape => {
+      const allElements = this.context.getRegisteredElements();
+      const filteredElements = allElements.filter((e) => e[filterBy]);
+      const matchingElements =
+        specifiedType === 'auto'
+          ? filteredElements
+          : filteredElements.filter((e) => e[filterBy] === specifiedType);
+
+      if (matchingElements.length === 1) {
+        return matchingElements[0].element;
+      } else if (matchingElements.length > 1) {
+        throw new Error(
+          `You did not specify the type of Source or Token to create.
+        We could not infer which Element you want to use for this operation.`
+        );
+      } else {
+        return null;
+      }
+    };
+
+    // Require that exactly one Element is found for the specified type.
+    // Throws if no Element is found.
+    requireElement = (
+      filterBy: 'impliedTokenType' | 'impliedSourceType',
+      specifiedType: string
+    ): ElementShape => {
+      const element = this.findElement(filterBy, specifiedType);
+      if (element) {
+        return element;
+      } else {
+        throw new Error(
+          `You did not specify the type of Source or Token to create.
+        We could not infer which Element you want to use for this operation.`
+        );
+      }
+    };
+
+    // Wraps createToken in order to infer the Element that is being tokenized.
+    wrappedCreateToken = (stripe: StripeShape) => (
+      tokenTypeOrOptions: mixed = {},
+      options: mixed = {}
+    ) => {
+      if (tokenTypeOrOptions && typeof tokenTypeOrOptions === 'object') {
+        // First argument is options; infer the Element and tokenize
+        const opts = tokenTypeOrOptions;
+        const {type: tokenType, ...rest} = opts;
+        const specifiedType =
+          typeof tokenType === 'string' ? tokenType : 'auto';
+        // Since only options were passed in, a corresponding Element must exist
+        // for the tokenization to succeed -- thus we call requireElement.
+        const element = this.requireElement('impliedTokenType', specifiedType);
+        return stripe.createToken(element, rest);
+      } else if (typeof tokenTypeOrOptions === 'string') {
+        // First argument is token type; tokenize with token type and options
+        const tokenType = tokenTypeOrOptions;
+        return stripe.createToken(tokenType, options);
+      } else {
+        // If a bad value was passed in for options, throw an error.
+        throw new Error(
+          `Invalid options passed to createToken. Expected an object, got ${typeof tokenTypeOrOptions}.`
+        );
+      }
+    };
+
+    // Wraps createSource in order to infer the Element that is being used for
+    // source creation.
+    wrappedCreateSource = (stripe: StripeShape) => (options: mixed = {}) => {
+      if (options && typeof options === 'object') {
+        if (typeof options.type !== 'string') {
+          throw new Error(
+            `Invalid Source type passed to createSource. Expected string, got ${typeof options.type}.`
+          );
+        }
+
+        const element = this.findElement('impliedSourceType', options.type);
+        if (element) {
+          // If an Element exists for the source type, use that to create the
+          // corresponding source.
+          //
+          // NOTE: this prevents users from independently creating sources of
+          // type `foo` if an Element that can create `foo` sources exists in
+          // the current <Elements /> context.
+          return stripe.createSource(element, options);
+        } else {
+          // If no Element exists for the source type, directly create a source.
+          return stripe.createSource(options);
+        }
+      } else {
+        // If a bad value was passed in for options, throw an error.
+        throw new Error(
+          `Invalid options passed to createSource. Expected an object, got ${typeof options}.`
+        );
+      }
+    };
+
+    render() {
+      return (
+        <WrappedComponent
+          {...this.props}
+          stripe={this.state.stripe}
+          ref={
+            withRef
+              ? (c) => {
+                  this.wrappedInstance = c;
+                }
+              : null
+          }
+        />
+      );
+    }
+  };
+};
+
+export default inject;
diff --git a/node_modules/react-stripe-elements/src/components/inject.test.js b/node_modules/react-stripe-elements/src/components/inject.test.js
new file mode 100644
index 00000000..6c761044
--- /dev/null
+++ b/node_modules/react-stripe-elements/src/components/inject.test.js
@@ -0,0 +1,336 @@
+// @noflow
+import React from 'react';
+import {mount, shallow} from 'enzyme';
+
+import injectStripe from './inject';
+
+describe('injectStripe()', () => {
+  let WrappedComponent;
+  let context;
+  let createSource;
+  let createToken;
+  let elementMock;
+
+  // Before ALL tests (sync or async)
+  beforeEach(() => {
+    createSource = jest.fn();
+    createToken = jest.fn();
+    elementMock = {
+      element: {
+        on: jest.fn(),
+      },
+      impliedTokenType: 'card',
+      impliedSourceType: 'card',
+    };
+    WrappedComponent = () => <div />;
+    WrappedComponent.displayName = 'WrappedComponent';
+  });
+
+  describe('[sync]', () => {
+    // Before ONLY sync tests
+    beforeEach(() => {
+      context = {
+        tag: 'sync',
+        stripe: {
+          elements: jest.fn(),
+          createSource,
+          createToken,
+        },
+        getRegisteredElements: () => [elementMock],
+      };
+    });
+
+    it('sets the correct displayName', () => {
+      expect(injectStripe(WrappedComponent).displayName).toBe(
+        'InjectStripe(WrappedComponent)'
+      );
+    });
+
+    it("includes the original component's displayName", () => {
+      WrappedComponent.displayName = 'foo';
+      expect(injectStripe(WrappedComponent).displayName).toBe(
+        'InjectStripe(foo)'
+      );
+    });
+
+    it("falls back to the original component's name if no displayName is set", () => {
+      WrappedComponent.displayName = undefined;
+      expect(injectStripe(WrappedComponent).displayName).toBe(
+        `InjectStripe(${WrappedComponent.name})`
+      );
+    });
+
+    it('throws when StripeProvider is missing from ancestry', () => {
+      // Prevent the expected console.error from react to keep the test output clean
+      const originalConsoleError = global.console.error;
+      global.console.error = (msg) => {
+        if (
+          !msg.startsWith(
+            'Warning: Failed context type: The context `tag` is marked as required'
+          ) &&
+          !msg.startsWith(
+            'Warning: Failed context type: The context `getRegisteredElements` is marked as required'
+          )
+        ) {
+          originalConsoleError(msg);
+        }
+      };
+
+      const Injected = injectStripe(WrappedComponent());
+
+      expect(() => shallow(<Injected />)).toThrow(
+        /It looks like you are trying to inject Stripe context outside of an Elements context/
+      );
+      global.console.error = originalConsoleError;
+    });
+
+    it('renders <WrappedComponent> with `stripe` prop', () => {
+      const Injected = injectStripe(WrappedComponent);
+
+      const wrapper = shallow(<Injected />, {
+        context,
+      });
+
+      const props = wrapper.props();
+      expect(props).toHaveProperty('stripe');
+      expect(props).toHaveProperty('stripe.createSource');
+      expect(props).toHaveProperty('stripe.createToken');
+    });
+
+    it('props.stripe.createToken calls createToken with element and empty options when called with no arguments', () => {
+      const Injected = injectStripe(WrappedComponent);
+
+      const wrapper = shallow(<Injected />, {
+        context,
+      });
+
+      const props = wrapper.props();
+      props.stripe.createToken();
+      expect(createToken).toHaveBeenCalledWith(elementMock.element, {});
+    });
+
+    it('props.stripe.createToken calls createToken with element and options when called with options object', () => {
+      const Injected = injectStripe(WrappedComponent);
+
+      const wrapper = shallow(<Injected />, {
+        context,
+      });
+
+      const props = wrapper.props();
+      props.stripe.createToken({foo: 'bar'});
+      expect(createToken).toHaveBeenCalledWith(elementMock.element, {
+        foo: 'bar',
+      });
+    });
+
+    it('props.stripe.createToken calls createToken with string as first argument and options object as second', () => {
+      const Injected = injectStripe(WrappedComponent);
+
+      const wrapper = shallow(<Injected />, {
+        context,
+      });
+
+      const props = wrapper.props();
+      props.stripe.createToken('test', {foo: 'bar'});
+      expect(createToken).toHaveBeenCalledWith('test', {foo: 'bar'});
+    });
+
+    it('props.stripe.createToken throws when called with invalid options type', () => {
+      const Injected = injectStripe(WrappedComponent);
+
+      const wrapper = shallow(<Injected />, {
+        context,
+      });
+
+      const props = wrapper.props();
+      expect(() => props.stripe.createToken(1)).toThrow(
+        'Invalid options passed to createToken. Expected an object, got number.'
+      );
+    });
+
+    it('props.stripe.createToken throws when no element is in the tree', () => {
+      const Injected = injectStripe(WrappedComponent);
+
+      const wrapper = shallow(<Injected />, {
+        context: {
+          ...context,
+          getRegisteredElements: () => [],
+        },
+      });
+
+      const props = wrapper.props();
+      expect(props.stripe.createToken).toThrow(
+        /We could not infer which Element you want to use for this operation./
+      );
+    });
+
+    it('props.stripe.createSource errors when called without a type', () => {
+      const Injected = injectStripe(WrappedComponent);
+
+      const wrapper = shallow(<Injected />, {
+        context,
+      });
+
+      const props = wrapper.props();
+      expect(props.stripe.createSource).toThrow(/Invalid Source type/);
+    });
+
+    it('props.stripe.createSource calls createSource with element and type when only type is passed in', () => {
+      const Injected = injectStripe(WrappedComponent);
+
+      const wrapper = shallow(<Injected />, {
+        context,
+      });
+
+      const props = wrapper.props();
+      props.stripe.createSource({type: 'card'});
+      expect(createSource).toHaveBeenCalledWith(elementMock.element, {
+        type: 'card',
+      });
+    });
+
+    it('props.stripe.createSource calls createSource with options', () => {
+      const Injected = injectStripe(WrappedComponent);
+
+      const wrapper = shallow(<Injected />, {
+        context,
+      });
+
+      const props = wrapper.props();
+      props.stripe.createSource({type: 'card', foo: 'bar'});
+      expect(createSource).toHaveBeenCalledWith(elementMock.element, {
+        type: 'card',
+        foo: 'bar',
+      });
+    });
+
+    it('props.stripe.createSource calls createSource with options when called with unknown type', () => {
+      const Injected = injectStripe(WrappedComponent);
+
+      const wrapper = shallow(<Injected />, {
+        context,
+      });
+
+      const props = wrapper.props();
+      props.stripe.createSource({type: 'baz', foo: 'bar'});
+      expect(createSource).toHaveBeenCalledWith({type: 'baz', foo: 'bar'});
+    });
+
+    it('props.stripe.createSource throws when called with invalid options argument', () => {
+      const Injected = injectStripe(WrappedComponent);
+
+      const wrapper = shallow(<Injected />, {
+        context,
+      });
+
+      const props = wrapper.props();
+      expect(() => props.stripe.createSource(1)).toThrow(
+        'Invalid options passed to createSource. Expected an object, got number.'
+      );
+    });
+
+    it('props.stripe.createSource throws when called with source type that matches multiple elements', () => {
+      const Injected = injectStripe(WrappedComponent);
+
+      const wrapper = shallow(<Injected />, {
+        context: {
+          ...context,
+          getRegisteredElements: () => [
+            {
+              element: {
+                on: jest.fn(),
+              },
+              impliedTokenType: 'card',
+              impliedSourceType: 'card',
+            },
+            {
+              element: {
+                on: jest.fn(),
+              },
+              impliedTokenType: 'card',
+              impliedSourceType: 'card',
+            },
+          ],
+        },
+      });
+
+      const props = wrapper.props();
+      expect(() => props.stripe.createSource({type: 'card'})).toThrow(
+        /We could not infer which Element you want to use for this operation/
+      );
+    });
+
+    it('throws when `getWrappedInstance` is called without `{withRef: true}` option.', () => {
+      const Injected = injectStripe(WrappedComponent);
+
+      const wrapper = mount(<Injected />, {
+        context,
+      });
+
+      expect(() => wrapper.node.getWrappedInstance()).toThrow(
+        'To access the wrapped instance, the `{withRef: true}` option must be set when calling `injectStripe()`'
+      );
+    });
+
+    it('`getWrappedInstance` works whith `{withRef: true}` option.', () => {
+      // refs won't work with stateless functional components
+      class WrappedClassComponent extends React.Component {
+        static displayName = 'WrappedClassComponent';
+        foo: 'bar';
+        render() {
+          return <div>{this.foo}</div>;
+        }
+      }
+
+      const Injected = injectStripe(WrappedClassComponent, {withRef: true});
+
+      const wrapper = mount(<Injected />, {
+        context,
+      });
+
+      expect(
+        wrapper.node.getWrappedInstance() instanceof WrappedClassComponent
+      ).toBe(true);
+    });
+  });
+
+  describe('[async]', () => {
+    it('props.stripe is null if addStripeLoadListener never fires', () => {
+      const Injected = injectStripe(WrappedComponent);
+      const wrapper = mount(<Injected />, {
+        context: {
+          tag: 'async',
+          // simulate StripeProvider never giving us a StripeShape
+          addStripeLoadListener: () => {},
+          getRegisteredElements: () => [elementMock],
+        },
+      });
+
+      const props = wrapper.find(WrappedComponent).props();
+      expect(props).toHaveProperty('stripe', null);
+    });
+
+    it('props.stripe is set when addStripeLoadListener fires', () => {
+      const Injected = injectStripe(WrappedComponent);
+      const wrapper = mount(<Injected />, {
+        context: {
+          tag: 'async',
+          // simulate StripeProvider eventually giving us a StripeShape
+          addStripeLoadListener: (fn) => {
+            fn({
+              elements: jest.fn(),
+              createSource,
+              createToken,
+            });
+          },
+          getRegisteredElements: () => [elementMock],
+        },
+      });
+
+      const props = wrapper.find(WrappedComponent).props();
+      expect(props).toHaveProperty('stripe');
+      expect(props).toHaveProperty('stripe.createToken');
+      expect(props).toHaveProperty('stripe.createSource');
+    });
+  });
+});
diff --git a/node_modules/react-stripe-elements/src/decls/Stripe.js b/node_modules/react-stripe-elements/src/decls/Stripe.js
new file mode 100644
index 00000000..dfdf6969
--- /dev/null
+++ b/node_modules/react-stripe-elements/src/decls/Stripe.js
@@ -0,0 +1,28 @@
+// @flow
+/* global StripeShape:false, ElementsShape:false, ElementShape:false */
+// ^For https://github.com/gajus/eslint-plugin-flowtype/issues/84
+
+type MixedObject = {[string]: mixed};
+
+declare type ElementShape = {
+  mount: Function,
+  destroy: () => ElementShape,
+  on: (event: string, handler: Function) => ElementShape,
+  update: (options: MixedObject) => ElementShape,
+};
+
+declare type ElementsShape = {
+  create: (type: string, options: MixedObject) => ElementShape,
+};
+
+declare type StripeShape = {
+  elements: (options: MixedObject) => ElementsShape,
+  createSource: (
+    element: ElementShape | MixedObject,
+    options: ?{}
+  ) => Promise<{source?: MixedObject, error?: MixedObject}>,
+  createToken: (
+    type: string | ElementShape,
+    options: mixed
+  ) => Promise<{token?: MixedObject, error?: MixedObject}>,
+};
diff --git a/node_modules/react-stripe-elements/src/index.js b/node_modules/react-stripe-elements/src/index.js
new file mode 100644
index 00000000..72f884ed
--- /dev/null
+++ b/node_modules/react-stripe-elements/src/index.js
@@ -0,0 +1,49 @@
+// @flow
+import StripeProvider from './components/Provider';
+import injectStripe from './components/inject';
+import Elements from './components/Elements';
+import Element from './components/Element';
+import PaymentRequestButtonElement from './components/PaymentRequestButtonElement';
+
+// Define Elements, and register their implied token / source types for
+// automatic token / source creation.
+
+// Card
+const CardElement = Element('card', {
+  impliedTokenType: 'card',
+  impliedSourceType: 'card',
+});
+
+// Split Fields
+// Note: we only register the CardNumberElement for split fields so that we have
+// a unique Element to infer when calling `wrappedCreateToken` or `wrappedCreateSource`.
+const CardNumberElement = Element('cardNumber', {
+  impliedTokenType: 'card',
+  impliedSourceType: 'card',
+});
+const CardExpiryElement = Element('cardExpiry');
+const CardCVCElement = Element('cardCvc');
+const PostalCodeElement = Element('postalCode');
+
+// IBAN
+const IbanElement = Element('iban', {
+  impliedTokenType: 'bank_account',
+  impliedSourceType: 'sepa_debit',
+});
+
+// iDEAL Bank
+const IdealBankElement = Element('idealBank', {impliedSourceType: 'ideal'});
+
+export {
+  StripeProvider,
+  injectStripe,
+  Elements,
+  CardElement,
+  CardNumberElement,
+  CardExpiryElement,
+  CardCVCElement,
+  PostalCodeElement,
+  PaymentRequestButtonElement,
+  IbanElement,
+  IdealBankElement,
+};
diff --git a/node_modules/react-stripe-elements/src/index.test.js b/node_modules/react-stripe-elements/src/index.test.js
new file mode 100644
index 00000000..8c305428
--- /dev/null
+++ b/node_modules/react-stripe-elements/src/index.test.js
@@ -0,0 +1,321 @@
+// @noflow
+import React from 'react';
+import {mount} from 'enzyme';
+
+import {
+  StripeProvider,
+  Elements,
+  injectStripe,
+  CardElement,
+  CardNumberElement,
+  CardExpiryElement,
+  CardCVCElement,
+  PostalCodeElement,
+} from './index';
+
+class PureWrapper extends React.PureComponent {
+  render() {
+    return <div>{this.props.children}</div>;
+  }
+}
+
+describe('index', () => {
+  let elementMock;
+  let elementsMock;
+  let stripeMock;
+  beforeEach(() => {
+    elementMock = {
+      mount: jest.fn(),
+      destroy: jest.fn(),
+      on: jest.fn(),
+      update: jest.fn(),
+    };
+    elementsMock = {
+      create: jest.fn().mockReturnValue(elementMock),
+    };
+    stripeMock = {
+      elements: jest.fn().mockReturnValue(elementsMock),
+      createToken: jest.fn(),
+      createSource: jest.fn(),
+    };
+
+    window.Stripe = jest.fn().mockReturnValue(stripeMock);
+  });
+
+  const WrappedCheckout = (type, additionalOptions) => {
+    const MyCheckout = (props) => {
+      return (
+        <form
+          onSubmit={(ev) => {
+            ev.preventDefault();
+            if (type === 'token') {
+              props.stripe.createToken(additionalOptions);
+            } else {
+              props.stripe.createSource(additionalOptions);
+            }
+          }}
+        >
+          {props.children}
+          <button>Pay</button>
+        </form>
+      );
+    };
+    return injectStripe(MyCheckout);
+  };
+
+  it('smoke test', () => {
+    const Checkout = WrappedCheckout('token');
+    const app = mount(
+      <StripeProvider apiKey="pk_test_xxx">
+        <Elements>
+          <Checkout>
+            Hello world
+            <CardElement />
+          </Checkout>
+        </Elements>
+      </StripeProvider>
+    );
+    expect(app.text()).toMatch(/Hello world/);
+  });
+
+  it("shouldn't choke on pure components", () => {
+    const Checkout = WrappedCheckout('token');
+    const app = mount(
+      <StripeProvider apiKey="pk_test_xxx">
+        <Elements>
+          <PureWrapper>
+            <Checkout>
+              <CardElement />
+            </Checkout>
+          </PureWrapper>
+        </Elements>
+      </StripeProvider>
+    );
+    expect(() => app.find('form').simulate('submit')).not.toThrow();
+  });
+
+  describe('createToken', () => {
+    it('should be called when set up properly', () => {
+      const Checkout = WrappedCheckout('token');
+      const app = mount(
+        <StripeProvider apiKey="pk_test_xxx">
+          <Elements>
+            <Checkout>
+              Hello world
+              <CardElement />
+            </Checkout>
+          </Elements>
+        </StripeProvider>
+      );
+      app.find('form').simulate('submit');
+      expect(stripeMock.createToken).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createToken).toHaveBeenCalledWith(elementMock, {});
+    });
+
+    it('should be called when set up properly (split)', () => {
+      const Checkout = WrappedCheckout('token');
+      const app = mount(
+        <StripeProvider apiKey="pk_test_xxx">
+          <Elements>
+            <Checkout>
+              Hello world
+              <CardNumberElement />
+              <CardExpiryElement />
+              <CardCVCElement />
+              <PostalCodeElement />
+            </Checkout>
+          </Elements>
+        </StripeProvider>
+      );
+      app.find('form').simulate('submit');
+      expect(stripeMock.createToken).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createToken).toHaveBeenCalledWith(elementMock, {});
+    });
+
+    it('should be callable for other token types', () => {
+      const Checkout = injectStripe((props) => (
+        <form
+          onSubmit={(ev) => {
+            ev.preventDefault();
+            props.stripe.createToken('bank_account', {some: 'data'});
+          }}
+        >
+          {props.children}
+          <button>Pay</button>
+        </form>
+      ));
+      const app = mount(
+        <StripeProvider apiKey="pk_test_xxx">
+          <Elements>
+            <Checkout>Hello world</Checkout>
+          </Elements>
+        </StripeProvider>
+      );
+      app.find('form').simulate('submit');
+      expect(stripeMock.createToken).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createToken).toHaveBeenCalledWith('bank_account', {
+        some: 'data',
+      });
+    });
+  });
+
+  describe('createSource', () => {
+    it('should be called when set up properly', () => {
+      const Checkout = WrappedCheckout('source', {type: 'card'});
+      const app = mount(
+        <StripeProvider apiKey="pk_test_xxx">
+          <Elements>
+            <Checkout>
+              Hello world
+              <CardElement />
+            </Checkout>
+          </Elements>
+        </StripeProvider>
+      );
+      app.find('form').simulate('submit');
+      expect(stripeMock.createSource).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createSource).toHaveBeenCalledWith(elementMock, {
+        type: 'card',
+      });
+    });
+
+    it('should take additional parameters', () => {
+      const Checkout = WrappedCheckout('source', {
+        type: 'card',
+        owner: {name: 'Michelle'},
+      });
+      const app = mount(
+        <StripeProvider apiKey="pk_test_xxx">
+          <Elements>
+            <Checkout>
+              Hello world
+              <CardElement />
+            </Checkout>
+          </Elements>
+        </StripeProvider>
+      );
+      app.find('form').simulate('submit');
+      expect(stripeMock.createSource).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createSource).toHaveBeenCalledWith(elementMock, {
+        type: 'card',
+        owner: {name: 'Michelle'},
+      });
+    });
+
+    it('should be callable when no Element is found', () => {
+      const Checkout = WrappedCheckout('source', {
+        type: 'card',
+        token: 'tok_xxx',
+      });
+      const app = mount(
+        <StripeProvider apiKey="pk_test_xxx">
+          <Elements>
+            <Checkout>Hello world</Checkout>
+          </Elements>
+        </StripeProvider>
+      );
+      app.find('form').simulate('submit');
+      expect(stripeMock.createSource).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createSource).toHaveBeenCalledWith({
+        type: 'card',
+        token: 'tok_xxx',
+      });
+    });
+
+    it('should be callable for other source types', () => {
+      const Checkout = injectStripe((props) => (
+        <form
+          onSubmit={(ev) => {
+            ev.preventDefault();
+            props.stripe.createSource({
+              type: 'three_d_secure',
+              three_d_secure: {foo: 'bar'},
+            });
+          }}
+        >
+          {props.children}
+          <button>Pay</button>
+        </form>
+      ));
+      const app = mount(
+        <StripeProvider apiKey="pk_test_xxx">
+          <Elements>
+            <Checkout>Hello world</Checkout>
+          </Elements>
+        </StripeProvider>
+      );
+      app.find('form').simulate('submit');
+      expect(stripeMock.createSource).toHaveBeenCalledTimes(1);
+      expect(stripeMock.createSource).toHaveBeenCalledWith({
+        type: 'three_d_secure',
+        three_d_secure: {foo: 'bar'},
+      });
+    });
+  });
+
+  describe('errors', () => {
+    describe('createSource', () => {
+      it('should throw if no source type is specified', () => {
+        const Checkout = WrappedCheckout('source');
+        const app = mount(
+          <StripeProvider apiKey="pk_test_xxx">
+            <Elements>
+              <Checkout>
+                Hello world
+                <CardElement />
+              </Checkout>
+            </Elements>
+          </StripeProvider>
+        );
+        expect(() => app.find('form').simulate('submit')).toThrowError(
+          /Invalid Source type/
+        );
+      });
+    });
+
+    describe('createToken', () => {
+      it('should throw when not in Elements', () => {
+        // Prevent the expected console.error from react to keep the test output clean
+        const originalConsoleError = global.console.error;
+        global.console.error = (msg) => {
+          if (
+            !msg.startsWith(
+              'Warning: Failed context type: The context `getRegisteredElements` is marked as required'
+            )
+          ) {
+            originalConsoleError(msg);
+          }
+        };
+
+        const Checkout = WrappedCheckout('token');
+        expect(() =>
+          mount(
+            <StripeProvider apiKey="pk_test_xxx">
+              <Checkout>
+                <Elements>
+                  <CardElement />
+                </Elements>
+              </Checkout>
+            </StripeProvider>
+          )
+        ).toThrowError('Elements context');
+
+        global.console.error = originalConsoleError;
+      });
+
+      it('should throw when no Element found', () => {
+        const Checkout = WrappedCheckout('token');
+        const app = mount(
+          <StripeProvider apiKey="pk_test_xxx">
+            <Elements>
+              <Checkout>Hello world</Checkout>
+            </Elements>
+          </StripeProvider>
+        );
+        expect(() => app.find('form').simulate('submit')).toThrowError(
+          /did not specify/
+        );
+      });
+    });
+  });
+});
diff --git a/node_modules/react-stripe-elements/src/utils/isEqual.js b/node_modules/react-stripe-elements/src/utils/isEqual.js
new file mode 100644
index 00000000..8b3fb558
--- /dev/null
+++ b/node_modules/react-stripe-elements/src/utils/isEqual.js
@@ -0,0 +1,51 @@
+// @flow
+const PLAIN_OBJECT_STR = '[object Object]';
+
+const isEqual = (left: mixed, right: mixed): boolean => {
+  if (typeof left !== 'object' || typeof right !== 'object') {
+    return left === right;
+  }
+
+  if (left === null || right === null) return left === right;
+
+  const leftArray = Array.isArray(left);
+  const rightArray = Array.isArray(right);
+
+  if (leftArray !== rightArray) return false;
+
+  const leftPlainObject =
+    Object.prototype.toString.call(left) === PLAIN_OBJECT_STR;
+  const rightPlainObject =
+    Object.prototype.toString.call(right) === PLAIN_OBJECT_STR;
+
+  if (leftPlainObject !== rightPlainObject) return false;
+
+  if (!leftPlainObject && !leftArray) return false;
+
+  const leftKeys = Object.keys(left);
+  const rightKeys = Object.keys(right);
+
+  if (leftKeys.length !== rightKeys.length) return false;
+
+  const keySet = {};
+  for (let i = 0; i < leftKeys.length; i += 1) {
+    keySet[leftKeys[i]] = true;
+  }
+  for (let i = 0; i < rightKeys.length; i += 1) {
+    keySet[rightKeys[i]] = true;
+  }
+  const allKeys = Object.keys(keySet);
+  if (allKeys.length !== leftKeys.length) {
+    return false;
+  }
+
+  const l = left;
+  const r = right;
+  const pred = (key) => {
+    return isEqual(l[key], r[key]);
+  };
+
+  return allKeys.every(pred);
+};
+
+export default isEqual;
diff --git a/node_modules/react-stripe-elements/src/utils/isEqual.test.js b/node_modules/react-stripe-elements/src/utils/isEqual.test.js
new file mode 100644
index 00000000..624b2753
--- /dev/null
+++ b/node_modules/react-stripe-elements/src/utils/isEqual.test.js
@@ -0,0 +1,51 @@
+// @noflow
+import isEqual from './isEqual';
+
+describe('isEqual', () => {
+  [
+    ['a', 'a'],
+    [100, 100],
+    [false, false],
+    [undefined, undefined],
+    [null, null],
+    [{}, {}],
+    [{a: 10}, {a: 10}],
+    [{a: null}, {a: null}],
+    [{a: undefined}, {a: undefined}],
+    [[], []],
+    [['a', 'b', 'c'], ['a', 'b', 'c']],
+    [['a', {inner: [12]}, 'c'], ['a', {inner: [12]}, 'c']],
+    [{a: {nested: {more: [1, 2, 3]}}}, {a: {nested: {more: [1, 2, 3]}}}],
+  ].forEach(([left, right]) => {
+    it(`should should return true for isEqual(${JSON.stringify(
+      left
+    )}, ${JSON.stringify(right)})`, () => {
+      expect(isEqual(left, right)).toBe(true);
+      expect(isEqual(right, left)).toBe(true);
+    });
+  });
+
+  [
+    ['a', 'b'],
+    ['0', 0],
+    [new Date(1), {}],
+    [false, ''],
+    [false, true],
+    [null, undefined],
+    [{}, []],
+    [/foo/, /foo/],
+    [new Date(1), new Date(1)],
+    [{a: 10}, {a: 11}],
+    [['a', 'b', 'c'], ['a', 'b', 'c', 'd']],
+    [['a', 'b', 'c', 'd'], ['a', 'b', 'c']],
+    [['a', {inner: [12]}, 'c'], ['a', {inner: [null]}, 'c']],
+    [{a: {nested: {more: [1, 2, 3]}}}, {b: {nested: {more: [1, 2, 3]}}}],
+  ].forEach(([left, right]) => {
+    it(`should should return false for isEqual(${JSON.stringify(
+      left
+    )}, ${JSON.stringify(right)})`, () => {
+      expect(isEqual(left, right)).toBe(false);
+      expect(isEqual(right, left)).toBe(false);
+    });
+  });
+});
diff --git a/node_modules/react-stripe-elements/src/utils/shallowEqual.js b/node_modules/react-stripe-elements/src/utils/shallowEqual.js
new file mode 100644
index 00000000..e5beaf1d
--- /dev/null
+++ b/node_modules/react-stripe-elements/src/utils/shallowEqual.js
@@ -0,0 +1,13 @@
+// @flow
+
+const shallowEqual = (a: Object, b: Object): boolean => {
+  const keysA = Object.keys(a);
+  const keysB = Object.keys(b);
+
+  return (
+    keysA.length === keysB.length &&
+    keysA.every((key) => b.hasOwnProperty(key) && b[key] === a[key])
+  );
+};
+
+export default shallowEqual;
diff --git a/node_modules/react-stripe-elements/src/utils/shallowEqual.test.js b/node_modules/react-stripe-elements/src/utils/shallowEqual.test.js
new file mode 100644
index 00000000..f09a0edc
--- /dev/null
+++ b/node_modules/react-stripe-elements/src/utils/shallowEqual.test.js
@@ -0,0 +1,13 @@
+// @noflow
+import shallowEqual from './shallowEqual';
+
+describe('shallowEqual', () => {
+  it('should work', () => {
+    expect(shallowEqual({}, {})).toBe(true);
+    expect(shallowEqual({a: 1}, {a: 1})).toBe(true);
+
+    expect(shallowEqual({a: 1, b: 2}, {a: 1})).toBe(false);
+    expect(shallowEqual({a: {}}, {a: {}})).toBe(false);
+    expect(shallowEqual({a: undefined}, {b: undefined})).toBe(false);
+  });
+});
diff --git a/node_modules/react/build-info.json b/node_modules/react/build-info.json
index 00d7f844..e1796b48 100644
--- a/node_modules/react/build-info.json
+++ b/node_modules/react/build-info.json
@@ -1,8 +1,8 @@
 {
-  "branch": "pull/14902",
-  "buildNumber": "13558",
-  "checksum": "9da4ab1",
-  "commit": "29b7b775f",
+  "branch": "pull/15226",
+  "buildNumber": "14079",
+  "checksum": "4a4c239",
+  "commit": "297165f1e",
   "environment": "ci",
-  "reactVersion": "16.8.2-canary-29b7b775f"
+  "reactVersion": "16.8.5-canary-297165f1e"
 }
diff --git a/node_modules/react/cjs/react.development.js b/node_modules/react/cjs/react.development.js
index 59e01b87..8cf06cfd 100644
--- a/node_modules/react/cjs/react.development.js
+++ b/node_modules/react/cjs/react.development.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react.development.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -20,7 +20,7 @@ var checkPropTypes = require('prop-types/checkPropTypes');
 
 // TODO: this is special because it gets imported during build.
 
-var ReactVersion = '16.8.3';
+var ReactVersion = '16.8.6';
 
 // The Symbol used to tag the ReactElement-like types. If there is no native Symbol
 // nor polyfill, then a plain number is used for performance.
@@ -1433,7 +1433,7 @@ function memo(type, compare) {
 
 function resolveDispatcher() {
   var dispatcher = ReactCurrentDispatcher.current;
-  !(dispatcher !== null) ? invariant(false, 'Hooks can only be called inside the body of a function component. (https://fb.me/react-invalid-hook-call)') : void 0;
+  !(dispatcher !== null) ? invariant(false, 'Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.') : void 0;
   return dispatcher;
 }
 
diff --git a/node_modules/react/cjs/react.production.min.js b/node_modules/react/cjs/react.production.min.js
index 3d228c69..1cc5fb07 100644
--- a/node_modules/react/cjs/react.production.min.js
+++ b/node_modules/react/cjs/react.production.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -17,9 +17,9 @@ function da(a,b){return{$$typeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_ow
 function R(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>P.length&&P.push(a)}
 function S(a,b,d,c){var e=typeof a;if("undefined"===e||"boolean"===e)a=null;var g=!1;if(null===a)g=!0;else switch(e){case "string":case "number":g=!0;break;case "object":switch(a.$$typeof){case p:case q:g=!0}}if(g)return d(c,a,""===b?"."+T(a,0):b),1;g=0;b=""===b?".":b+":";if(Array.isArray(a))for(var h=0;h<a.length;h++){e=a[h];var f=b+T(e,h);g+=S(e,f,d,c)}else if(null===a||"object"!==typeof a?f=null:(f=A&&a[A]||a["@@iterator"],f="function"===typeof f?f:null),"function"===typeof f)for(a=f.call(a),h=
 0;!(e=a.next()).done;)e=e.value,f=b+T(e,h++),g+=S(e,f,d,c);else"object"===e&&(d=""+a,B("31","[object Object]"===d?"object with keys {"+Object.keys(a).join(", ")+"}":d,""));return g}function U(a,b,d){return null==a?0:S(a,"",b,d)}function T(a,b){return"object"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function ea(a,b){a.func.call(a.context,b,a.count++)}
-function fa(a,b,d){var c=a.result,e=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?V(a,c,d,function(a){return a}):null!=a&&(N(a)&&(a=da(a,e+(!a.key||b&&b.key===a.key?"":(""+a.key).replace(O,"$&/")+"/")+d)),c.push(a))}function V(a,b,d,c,e){var g="";null!=d&&(g=(""+d).replace(O,"$&/")+"/");b=Q(b,g,c,e);U(a,fa,b);R(b)}function W(){var a=I.current;null===a?B("307"):void 0;return a}
+function fa(a,b,d){var c=a.result,e=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?V(a,c,d,function(a){return a}):null!=a&&(N(a)&&(a=da(a,e+(!a.key||b&&b.key===a.key?"":(""+a.key).replace(O,"$&/")+"/")+d)),c.push(a))}function V(a,b,d,c,e){var g="";null!=d&&(g=(""+d).replace(O,"$&/")+"/");b=Q(b,g,c,e);U(a,fa,b);R(b)}function W(){var a=I.current;null===a?B("321"):void 0;return a}
 var X={Children:{map:function(a,b,d){if(null==a)return a;var c=[];V(a,c,null,b,d);return c},forEach:function(a,b,d){if(null==a)return a;b=Q(null,null,b,d);U(a,ea,b);R(b)},count:function(a){return U(a,function(){return null},null)},toArray:function(a){var b=[];V(a,b,null,function(a){return a});return b},only:function(a){N(a)?void 0:B("143");return a}},createRef:function(){return{current:null}},Component:E,PureComponent:G,createContext:function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,
 _currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_context:a};return a.Consumer=a},forwardRef:function(a){return{$$typeof:y,render:a}},lazy:function(a){return{$$typeof:ba,_ctor:a,_status:-1,_result:null}},memo:function(a,b){return{$$typeof:aa,type:a,compare:void 0===b?null:b}},useCallback:function(a,b){return W().useCallback(a,b)},useContext:function(a,b){return W().useContext(a,b)},useEffect:function(a,b){return W().useEffect(a,b)},useImperativeHandle:function(a,
 b,d){return W().useImperativeHandle(a,b,d)},useDebugValue:function(){},useLayoutEffect:function(a,b){return W().useLayoutEffect(a,b)},useMemo:function(a,b){return W().useMemo(a,b)},useReducer:function(a,b,d){return W().useReducer(a,b,d)},useRef:function(a){return W().useRef(a)},useState:function(a){return W().useState(a)},Fragment:r,StrictMode:t,Suspense:z,createElement:M,cloneElement:function(a,b,d){null===a||void 0===a?B("267",a):void 0;var c=void 0,e=k({},a.props),g=a.key,h=a.ref,f=a._owner;if(null!=
-b){void 0!==b.ref&&(h=b.ref,f=J.current);void 0!==b.key&&(g=""+b.key);var l=void 0;a.type&&a.type.defaultProps&&(l=a.type.defaultProps);for(c in b)K.call(b,c)&&!L.hasOwnProperty(c)&&(e[c]=void 0===b[c]&&void 0!==l?l[c]:b[c])}c=arguments.length-2;if(1===c)e.children=d;else if(1<c){l=Array(c);for(var m=0;m<c;m++)l[m]=arguments[m+2];e.children=l}return{$$typeof:p,type:a.type,key:g,ref:h,props:e,_owner:f}},createFactory:function(a){var b=M.bind(null,a);b.type=a;return b},isValidElement:N,version:"16.8.3",
+b){void 0!==b.ref&&(h=b.ref,f=J.current);void 0!==b.key&&(g=""+b.key);var l=void 0;a.type&&a.type.defaultProps&&(l=a.type.defaultProps);for(c in b)K.call(b,c)&&!L.hasOwnProperty(c)&&(e[c]=void 0===b[c]&&void 0!==l?l[c]:b[c])}c=arguments.length-2;if(1===c)e.children=d;else if(1<c){l=Array(c);for(var m=0;m<c;m++)l[m]=arguments[m+2];e.children=l}return{$$typeof:p,type:a.type,key:g,ref:h,props:e,_owner:f}},createFactory:function(a){var b=M.bind(null,a);b.type=a;return b},isValidElement:N,version:"16.8.6",
 unstable_ConcurrentMode:x,unstable_Profiler:u,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentDispatcher:I,ReactCurrentOwner:J,assign:k}},Y={default:X},Z=Y&&X||Y;module.exports=Z.default||Z;
diff --git a/node_modules/react/package.json b/node_modules/react/package.json
index 22230761..fb021674 100644
--- a/node_modules/react/package.json
+++ b/node_modules/react/package.json
@@ -4,7 +4,7 @@
   "keywords": [
     "react"
   ],
-  "version": "16.8.3",
+  "version": "16.8.6",
   "homepage": "https://reactjs.org/",
   "bugs": "https://github.com/facebook/react/issues",
   "license": "MIT",
@@ -29,7 +29,7 @@
     "loose-envify": "^1.1.0",
     "object-assign": "^4.1.1",
     "prop-types": "^15.6.2",
-    "scheduler": "^0.13.3"
+    "scheduler": "^0.13.6"
   },
   "browserify": {
     "transform": [
diff --git a/node_modules/react/umd/react.development.js b/node_modules/react/umd/react.development.js
index b6e38623..cd2e8c3a 100644
--- a/node_modules/react/umd/react.development.js
+++ b/node_modules/react/umd/react.development.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react.development.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -17,7 +17,7 @@
 
 // TODO: this is special because it gets imported during build.
 
-var ReactVersion = '16.8.3';
+var ReactVersion = '16.8.6';
 
 // The Symbol used to tag the ReactElement-like types. If there is no native Symbol
 // nor polyfill, then a plain number is used for performance.
@@ -2621,7 +2621,7 @@ function memo(type, compare) {
 
 function resolveDispatcher() {
   var dispatcher = ReactCurrentDispatcher.current;
-  !(dispatcher !== null) ? invariant(false, 'Hooks can only be called inside the body of a function component. (https://fb.me/react-invalid-hook-call)') : void 0;
+  !(dispatcher !== null) ? invariant(false, 'Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.') : void 0;
   return dispatcher;
 }
 
diff --git a/node_modules/react/umd/react.production.min.js b/node_modules/react/umd/react.production.min.js
index 85ec27a8..4dc1c2c0 100644
--- a/node_modules/react/umd/react.production.min.js
+++ b/node_modules/react/umd/react.production.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -14,7 +14,7 @@ b)for(g in void 0!==b.ref&&(e=b.ref),void 0!==b.key&&(c=""+b.key),b)fa.call(b,g)
 typeof a&&null!==a&&a.$$typeof===y}function va(a){var b={"=":"=0",":":"=2"};return"$"+(""+a).replace(/[=:]/g,function(a){return b[a]})}function ia(a,b,d,g){if(I.length){var c=I.pop();c.result=a;c.keyPrefix=b;c.func=d;c.context=g;c.count=0;return c}return{result:a,keyPrefix:b,func:d,context:g,count:0}}function ja(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>I.length&&I.push(a)}function T(a,b,d,g){var c=typeof a;if("undefined"===c||"boolean"===c)a=null;var e=!1;if(null===
 a)e=!0;else switch(c){case "string":case "number":e=!0;break;case "object":switch(a.$$typeof){case y:case wa:e=!0}}if(e)return d(g,a,""===b?"."+U(a,0):b),1;e=0;b=""===b?".":b+":";if(Array.isArray(a))for(var f=0;f<a.length;f++){c=a[f];var h=b+U(c,f);e+=T(c,h,d,g)}else if(null===a||"object"!==typeof a?h=null:(h=ka&&a[ka]||a["@@iterator"],h="function"===typeof h?h:null),"function"===typeof h)for(a=h.call(a),f=0;!(c=a.next()).done;)c=c.value,h=b+U(c,f++),e+=T(c,h,d,g);else"object"===c&&(d=""+a,q("31",
 "[object Object]"===d?"object with keys {"+Object.keys(a).join(", ")+"}":d,""));return e}function V(a,b,d){return null==a?0:T(a,"",b,d)}function U(a,b){return"object"===typeof a&&null!==a&&null!=a.key?va(a.key):b.toString(36)}function xa(a,b,d){a.func.call(a.context,b,a.count++)}function ya(a,b,d){var g=a.result,c=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?W(a,g,d,function(a){return a}):null!=a&&(S(a)&&(a=ua(a,c+(!a.key||b&&b.key===a.key?"":(""+a.key).replace(la,"$&/")+"/")+
-d)),g.push(a))}function W(a,b,d,g,c){var e="";null!=d&&(e=(""+d).replace(la,"$&/")+"/");b=ia(b,e,g,c);V(a,ya,b);ja(b)}function m(){var a=ma.current;null===a?q("307"):void 0;return a}var e="function"===typeof Symbol&&Symbol.for,y=e?Symbol.for("react.element"):60103,wa=e?Symbol.for("react.portal"):60106,r=e?Symbol.for("react.fragment"):60107,X=e?Symbol.for("react.strict_mode"):60108,za=e?Symbol.for("react.profiler"):60114,Aa=e?Symbol.for("react.provider"):60109,Ba=e?Symbol.for("react.context"):60110,
+d)),g.push(a))}function W(a,b,d,g,c){var e="";null!=d&&(e=(""+d).replace(la,"$&/")+"/");b=ia(b,e,g,c);V(a,ya,b);ja(b)}function m(){var a=ma.current;null===a?q("321"):void 0;return a}var e="function"===typeof Symbol&&Symbol.for,y=e?Symbol.for("react.element"):60103,wa=e?Symbol.for("react.portal"):60106,r=e?Symbol.for("react.fragment"):60107,X=e?Symbol.for("react.strict_mode"):60108,za=e?Symbol.for("react.profiler"):60114,Aa=e?Symbol.for("react.provider"):60109,Ba=e?Symbol.for("react.context"):60110,
 Ca=e?Symbol.for("react.concurrent_mode"):60111,Da=e?Symbol.for("react.forward_ref"):60112,Ea=e?Symbol.for("react.suspense"):60113,Fa=e?Symbol.for("react.memo"):60115,Ga=e?Symbol.for("react.lazy"):60116,ka="function"===typeof Symbol&&Symbol.iterator,na=Object.getOwnPropertySymbols,Ha=Object.prototype.hasOwnProperty,Ia=Object.prototype.propertyIsEnumerable,J=function(){try{if(!Object.assign)return!1;var a=new String("abc");a[5]="de";if("5"===Object.getOwnPropertyNames(a)[0])return!1;var b={};for(a=
 0;10>a;a++)b["_"+String.fromCharCode(a)]=a;if("0123456789"!==Object.getOwnPropertyNames(b).map(function(a){return b[a]}).join(""))return!1;var d={};"abcdefghijklmnopqrst".split("").forEach(function(a){d[a]=a});return"abcdefghijklmnopqrst"!==Object.keys(Object.assign({},d)).join("")?!1:!0}catch(g){return!1}}()?Object.assign:function(a,b){if(null===a||void 0===a)throw new TypeError("Object.assign cannot be called with null or undefined");var d=Object(a);for(var c,e=1;e<arguments.length;e++){var f=Object(arguments[e]);
 for(var k in f)Ha.call(f,k)&&(d[k]=f[k]);if(na){c=na(f);for(var h=0;h<c.length;h++)Ia.call(f,c[h])&&(d[c[h]]=f[c[h]])}}return d},ca={isMounted:function(a){return!1},enqueueForceUpdate:function(a,b,d){},enqueueReplaceState:function(a,b,d,c){},enqueueSetState:function(a,b,d,c){}},ba={};t.prototype.isReactComponent={};t.prototype.setState=function(a,b){"object"!==typeof a&&"function"!==typeof a&&null!=a?q("85"):void 0;this.updater.enqueueSetState(this,a,b,"setState")};t.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,
@@ -30,4 +30,4 @@ ha={key:!0,ref:!0,__self:!0,__source:!0},la=/\/+/g,I=[];r={Children:{map:functio
 b){void 0===b&&(b=null);a={$$typeof:Ba,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:Aa,_context:a};return a.Consumer=a},forwardRef:function(a){return{$$typeof:Da,render:a}},lazy:function(a){return{$$typeof:Ga,_ctor:a,_status:-1,_result:null}},memo:function(a,b){return{$$typeof:Fa,type:a,compare:void 0===b?null:b}},useCallback:function(a,b){return m().useCallback(a,b)},useContext:function(a,b){return m().useContext(a,b)},
 useEffect:function(a,b){return m().useEffect(a,b)},useImperativeHandle:function(a,b,d){return m().useImperativeHandle(a,b,d)},useDebugValue:function(a,b){},useLayoutEffect:function(a,b){return m().useLayoutEffect(a,b)},useMemo:function(a,b){return m().useMemo(a,b)},useReducer:function(a,b,d){return m().useReducer(a,b,d)},useRef:function(a){return m().useRef(a)},useState:function(a){return m().useState(a)},Fragment:r,StrictMode:X,Suspense:Ea,createElement:ea,cloneElement:function(a,b,d){null===a||
 void 0===a?q("267",a):void 0;var c=void 0,e=J({},a.props),f=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=R.current);void 0!==b.key&&(f=""+b.key);var l=void 0;a.type&&a.type.defaultProps&&(l=a.type.defaultProps);for(c in b)fa.call(b,c)&&!ha.hasOwnProperty(c)&&(e[c]=void 0===b[c]&&void 0!==l?l[c]:b[c])}c=arguments.length-2;if(1===c)e.children=d;else if(1<c){l=Array(c);for(var m=0;m<c;m++)l[m]=arguments[m+2];e.children=l}return{$$typeof:y,type:a.type,key:f,ref:k,props:e,_owner:h}},
-createFactory:function(a){var b=ea.bind(null,a);b.type=a;return b},isValidElement:S,version:"16.8.3",unstable_ConcurrentMode:Ca,unstable_Profiler:za,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:e};r=(X={default:r},r)||X;return r.default||r});
+createFactory:function(a){var b=ea.bind(null,a);b.type=a;return b},isValidElement:S,version:"16.8.6",unstable_ConcurrentMode:Ca,unstable_Profiler:za,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:e};r=(X={default:r},r)||X;return r.default||r});
diff --git a/node_modules/react/umd/react.profiling.min.js b/node_modules/react/umd/react.profiling.min.js
index 5a274bef..079ca57c 100644
--- a/node_modules/react/umd/react.profiling.min.js
+++ b/node_modules/react/umd/react.profiling.min.js
@@ -1,4 +1,4 @@
-/** @license React v16.8.3
+/** @license React v16.8.6
  * react.profiling.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -15,7 +15,7 @@ f:c===f&&(f=l,x());b=c.previous;b.next=c.previous=l;l.next=c;l.previous=b}}funct
 e[d]&&(e[d]=h[d]);return{$$typeof:B,type:a,key:l,ref:f,props:e,_owner:U.current}}function Ea(a,b){return{$$typeof:B,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function V(a){return"object"===typeof a&&null!==a&&a.$$typeof===B}function Fa(a){var b={"=":"=0",":":"=2"};return"$"+(""+a).replace(/[=:]/g,function(a){return b[a]})}function la(a,b,c,d){if(L.length){var e=L.pop();e.result=a;e.keyPrefix=b;e.func=c;e.context=d;e.count=0;return e}return{result:a,keyPrefix:b,func:c,context:d,count:0}}
 function ma(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>L.length&&L.push(a)}function W(a,b,c,d){var e=typeof a;if("undefined"===e||"boolean"===e)a=null;var l=!1;if(null===a)l=!0;else switch(e){case "string":case "number":l=!0;break;case "object":switch(a.$$typeof){case B:case Ga:l=!0}}if(l)return c(d,a,""===b?"."+X(a,0):b),1;l=0;b=""===b?".":b+":";if(Array.isArray(a))for(var f=0;f<a.length;f++){e=a[f];var h=b+X(e,f);l+=W(e,h,c,d)}else if(null===a||"object"!==typeof a?
 h=null:(h=na&&a[na]||a["@@iterator"],h="function"===typeof h?h:null),"function"===typeof h)for(a=h.call(a),f=0;!(e=a.next()).done;)e=e.value,h=b+X(e,f++),l+=W(e,h,c,d);else"object"===e&&(c=""+a,r("31","[object Object]"===c?"object with keys {"+Object.keys(a).join(", ")+"}":c,""));return l}function Y(a,b,c){return null==a?0:W(a,"",b,c)}function X(a,b){return"object"===typeof a&&null!==a&&null!=a.key?Fa(a.key):b.toString(36)}function Ha(a,b,c){a.func.call(a.context,b,a.count++)}function Ia(a,b,c){var d=
-a.result,e=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?Z(a,d,c,function(a){return a}):null!=a&&(V(a)&&(a=Ea(a,e+(!a.key||b&&b.key===a.key?"":(""+a.key).replace(oa,"$&/")+"/")+c)),d.push(a))}function Z(a,b,c,d,e){var f="";null!=c&&(f=(""+c).replace(oa,"$&/")+"/");b=la(b,f,d,e);Y(a,Ia,b);ma(b)}function t(){var a=pa.current;null===a?r("307"):void 0;return a}var g="function"===typeof Symbol&&Symbol.for,B=g?Symbol.for("react.element"):60103,Ga=g?Symbol.for("react.portal"):60106,v=
+a.result,e=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?Z(a,d,c,function(a){return a}):null!=a&&(V(a)&&(a=Ea(a,e+(!a.key||b&&b.key===a.key?"":(""+a.key).replace(oa,"$&/")+"/")+c)),d.push(a))}function Z(a,b,c,d,e){var f="";null!=c&&(f=(""+c).replace(oa,"$&/")+"/");b=la(b,f,d,e);Y(a,Ia,b);ma(b)}function t(){var a=pa.current;null===a?r("321"):void 0;return a}var g="function"===typeof Symbol&&Symbol.for,B=g?Symbol.for("react.element"):60103,Ga=g?Symbol.for("react.portal"):60106,v=
 g?Symbol.for("react.fragment"):60107,aa=g?Symbol.for("react.strict_mode"):60108,Ja=g?Symbol.for("react.profiler"):60114,Ka=g?Symbol.for("react.provider"):60109,La=g?Symbol.for("react.context"):60110,Ma=g?Symbol.for("react.concurrent_mode"):60111,Na=g?Symbol.for("react.forward_ref"):60112,Oa=g?Symbol.for("react.suspense"):60113,Pa=g?Symbol.for("react.memo"):60115,Qa=g?Symbol.for("react.lazy"):60116,na="function"===typeof Symbol&&Symbol.iterator,qa=Object.getOwnPropertySymbols,Ra=Object.prototype.hasOwnProperty,
 Sa=Object.prototype.propertyIsEnumerable,M=function(){try{if(!Object.assign)return!1;var a=new String("abc");a[5]="de";if("5"===Object.getOwnPropertyNames(a)[0])return!1;var b={};for(a=0;10>a;a++)b["_"+String.fromCharCode(a)]=a;if("0123456789"!==Object.getOwnPropertyNames(b).map(function(a){return b[a]}).join(""))return!1;var c={};"abcdefghijklmnopqrst".split("").forEach(function(a){c[a]=a});return"abcdefghijklmnopqrst"!==Object.keys(Object.assign({},c)).join("")?!1:!0}catch(d){return!1}}()?Object.assign:
 function(a,b){if(null===a||void 0===a)throw new TypeError("Object.assign cannot be called with null or undefined");var c=Object(a);for(var d,e=1;e<arguments.length;e++){var f=Object(arguments[e]);for(var g in f)Ra.call(f,g)&&(c[g]=f[g]);if(qa){d=qa(f);for(var h=0;h<d.length;h++)Sa.call(f,d[h])&&(c[d[h]]=f[d[h]])}}return c},fa={isMounted:function(a){return!1},enqueueForceUpdate:function(a,b,c){},enqueueReplaceState:function(a,b,c,d){},enqueueSetState:function(a,b,c,d){}},ea={};w.prototype.isReactComponent=
@@ -34,4 +34,4 @@ try{if(null!==e)e.onWorkCanceled(d,c)}finally{d.forEach(function(a){a.__count--;
 [];Z(a,b,null,function(a){return a});return b},only:function(a){V(a)?void 0:r("143");return a}},createRef:function(){return{current:null}},Component:w,PureComponent:R,createContext:function(a,b){void 0===b&&(b=null);a={$$typeof:La,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:Ka,_context:a};return a.Consumer=a},forwardRef:function(a){return{$$typeof:Na,render:a}},lazy:function(a){return{$$typeof:Qa,_ctor:a,_status:-1,_result:null}},
 memo:function(a,b){return{$$typeof:Pa,type:a,compare:void 0===b?null:b}},useCallback:function(a,b){return t().useCallback(a,b)},useContext:function(a,b){return t().useContext(a,b)},useEffect:function(a,b){return t().useEffect(a,b)},useImperativeHandle:function(a,b,c){return t().useImperativeHandle(a,b,c)},useDebugValue:function(a,b){},useLayoutEffect:function(a,b){return t().useLayoutEffect(a,b)},useMemo:function(a,b){return t().useMemo(a,b)},useReducer:function(a,b,c){return t().useReducer(a,b,c)},
 useRef:function(a){return t().useRef(a)},useState:function(a){return t().useState(a)},Fragment:v,StrictMode:aa,Suspense:Oa,createElement:ia,cloneElement:function(a,b,c){null===a||void 0===a?r("267",a):void 0;var d=void 0,e=M({},a.props),f=a.key,g=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(g=b.ref,h=U.current);void 0!==b.key&&(f=""+b.key);var k=void 0;a.type&&a.type.defaultProps&&(k=a.type.defaultProps);for(d in b)ja.call(b,d)&&!ka.hasOwnProperty(d)&&(e[d]=void 0===b[d]&&void 0!==k?k[d]:b[d])}d=
-arguments.length-2;if(1===d)e.children=c;else if(1<d){k=Array(d);for(var m=0;m<d;m++)k[m]=arguments[m+2];e.children=k}return{$$typeof:B,type:a.type,key:f,ref:g,props:e,_owner:h}},createFactory:function(a){var b=ia.bind(null,a);b.type=a;return b},isValidElement:V,version:"16.8.3",unstable_ConcurrentMode:Ma,unstable_Profiler:Ja,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:g};v=(aa={default:v},v)||aa;return v.default||v});
+arguments.length-2;if(1===d)e.children=c;else if(1<d){k=Array(d);for(var m=0;m<d;m++)k[m]=arguments[m+2];e.children=k}return{$$typeof:B,type:a.type,key:f,ref:g,props:e,_owner:h}},createFactory:function(a){var b=ia.bind(null,a);b.type=a;return b},isValidElement:V,version:"16.8.6",unstable_ConcurrentMode:Ma,unstable_Profiler:Ja,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:g};v=(aa={default:v},v)||aa;return v.default||v});
diff --git a/node_modules/scheduler/build-info.json b/node_modules/scheduler/build-info.json
index 00d7f844..e1796b48 100644
--- a/node_modules/scheduler/build-info.json
+++ b/node_modules/scheduler/build-info.json
@@ -1,8 +1,8 @@
 {
-  "branch": "pull/14902",
-  "buildNumber": "13558",
-  "checksum": "9da4ab1",
-  "commit": "29b7b775f",
+  "branch": "pull/15226",
+  "buildNumber": "14079",
+  "checksum": "4a4c239",
+  "commit": "297165f1e",
   "environment": "ci",
-  "reactVersion": "16.8.2-canary-29b7b775f"
+  "reactVersion": "16.8.5-canary-297165f1e"
 }
diff --git a/node_modules/scheduler/cjs/scheduler-tracing.development.js b/node_modules/scheduler/cjs/scheduler-tracing.development.js
index 1ed7a828..71b004cd 100644
--- a/node_modules/scheduler/cjs/scheduler-tracing.development.js
+++ b/node_modules/scheduler/cjs/scheduler-tracing.development.js
@@ -1,4 +1,4 @@
-/** @license React v0.13.3
+/** @license React v0.13.6
  * scheduler-tracing.development.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/scheduler/cjs/scheduler-tracing.production.min.js b/node_modules/scheduler/cjs/scheduler-tracing.production.min.js
index 6d3ffd0b..4e91301c 100644
--- a/node_modules/scheduler/cjs/scheduler-tracing.production.min.js
+++ b/node_modules/scheduler/cjs/scheduler-tracing.production.min.js
@@ -1,4 +1,4 @@
-/** @license React v0.13.3
+/** @license React v0.13.6
  * scheduler-tracing.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/scheduler/cjs/scheduler-tracing.profiling.min.js b/node_modules/scheduler/cjs/scheduler-tracing.profiling.min.js
index 6cfd7ce2..43e00c2d 100644
--- a/node_modules/scheduler/cjs/scheduler-tracing.profiling.min.js
+++ b/node_modules/scheduler/cjs/scheduler-tracing.profiling.min.js
@@ -1,4 +1,4 @@
-/** @license React v0.13.3
+/** @license React v0.13.6
  * scheduler-tracing.profiling.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/scheduler/cjs/scheduler.development.js b/node_modules/scheduler/cjs/scheduler.development.js
index 4e82e10d..4608c08d 100644
--- a/node_modules/scheduler/cjs/scheduler.development.js
+++ b/node_modules/scheduler/cjs/scheduler.development.js
@@ -1,4 +1,4 @@
-/** @license React v0.13.3
+/** @license React v0.13.6
  * scheduler.development.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/scheduler/cjs/scheduler.production.min.js b/node_modules/scheduler/cjs/scheduler.production.min.js
index c0145118..a31a8741 100644
--- a/node_modules/scheduler/cjs/scheduler.production.min.js
+++ b/node_modules/scheduler/cjs/scheduler.production.min.js
@@ -1,4 +1,4 @@
-/** @license React v0.13.3
+/** @license React v0.13.6
  * scheduler.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/node_modules/scheduler/package.json b/node_modules/scheduler/package.json
index a5b88e3a..9acdaae6 100644
--- a/node_modules/scheduler/package.json
+++ b/node_modules/scheduler/package.json
@@ -1,6 +1,6 @@
 {
   "name": "scheduler",
-  "version": "0.13.3",
+  "version": "0.13.6",
   "description": "Cooperative scheduler for the browser environment.",
   "main": "index.js",
   "repository": {
diff --git a/yarn.lock b/yarn.lock
index b8a57ed5..7eabd63b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4605,13 +4605,14 @@ rc@^1.2.7:
     strip-json-comments "~2.0.1"
 
 react-dom@^16.8.3:
-  version "16.8.3"
-  resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.3.tgz#ae236029e66210783ac81999d3015dfc475b9c32"
+  version "16.8.6"
+  resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f"
+  integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==
   dependencies:
     loose-envify "^1.1.0"
     object-assign "^4.1.1"
     prop-types "^15.6.2"
-    scheduler "^0.13.3"
+    scheduler "^0.13.6"
 
 react-is@^16.8.1:
   version "16.8.3"
@@ -4631,17 +4632,19 @@ react-popper@^1.3.3:
 react-stripe-elements@^2.0.3:
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/react-stripe-elements/-/react-stripe-elements-2.0.3.tgz#cfd0f68d00ce52a07aab1cb2b59b29dc12309486"
+  integrity sha512-aKLiWyfP0n3Gq42BKykULgoruNVRXEaeYh8NSokdgH3ubGU3nsHFZJg3LgbT/XOquttDGHE7kLhleaX+UnN81A==
   dependencies:
     prop-types "^15.5.10"
 
 react@^16.8.3:
-  version "16.8.3"
-  resolved "https://registry.yarnpkg.com/react/-/react-16.8.3.tgz#c6f988a2ce895375de216edcfaedd6b9a76451d9"
+  version "16.8.6"
+  resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe"
+  integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==
   dependencies:
     loose-envify "^1.1.0"
     object-assign "^4.1.1"
     prop-types "^15.6.2"
-    scheduler "^0.13.3"
+    scheduler "^0.13.6"
 
 "readable-stream@>=1.0.33-1 <1.1.0-0":
   version "1.0.34"
@@ -4917,9 +4920,10 @@ sax@^1.2.4, sax@~1.2.1, sax@~1.2.4:
   version "1.2.4"
   resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
 
-scheduler@^0.13.3:
-  version "0.13.3"
-  resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.3.tgz#bed3c5850f62ea9c716a4d781f9daeb9b2a58896"
+scheduler@^0.13.6:
+  version "0.13.6"
+  resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889"
+  integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==
   dependencies:
     loose-envify "^1.1.0"
     object-assign "^4.1.1"





More information about the tor-commits mailing list