{"version":3,"file":"app-567e7ffa5060834aceef.js","mappings":"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","sources":["webpack://grebban/./node_modules/@gatsbyjs/reach-router/lib/history.js","webpack://grebban/./node_modules/@gatsbyjs/reach-router/lib/utils.js","webpack://grebban/./node_modules/css-in-js-utils/lib/hyphenateProperty.js","webpack://grebban/./node_modules/css-in-js-utils/lib/isPrefixedValue.js","webpack://grebban/./node_modules/gatsby-page-utils/dist/apply-trailing-slash-option.js","webpack://grebban/./node_modules/gatsby-react-router-scroll/index.js","webpack://grebban/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://grebban/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://grebban/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://grebban/./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack://grebban/./node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js","webpack://grebban/./node_modules/gatsby/dist/internal-plugins/partytown/utils/get-forwards.js","webpack://grebban/./node_modules/gatsby/dist/internal-plugins/partytown/utils/inject-partytown-snippet.js","webpack://grebban/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://grebban/./.cache/api-runner-browser-plugins.js","webpack://grebban/./.cache/api-runner-browser.js","webpack://grebban/./.cache/emitter.js","webpack://grebban/./node_modules/mitt/dist/mitt.es.js","webpack://grebban/./.cache/normalize-page-path.js","webpack://grebban/./.cache/find-path.js","webpack://grebban/./.cache/static-query.js","webpack://grebban/./.cache/gatsby-browser-entry.js","webpack://grebban/./.cache/prefetch.js","webpack://grebban/./.cache/loader.js","webpack://grebban/./.cache/head/components/fire-callback-in-effect.js","webpack://grebban/./.cache/head/constants.js","webpack://grebban/./.cache/head/utils.js","webpack://grebban/./.cache/head/head-export-handler-for-browser.js","webpack://grebban/./.cache/page-renderer.js","webpack://grebban/./.cache/route-announcer-props.js","webpack://grebban/./.cache/navigation.js","webpack://grebban/./node_modules/shallow-compare/es/index.js","webpack://grebban/./.cache/ensure-resources.js","webpack://grebban/./.cache/production-app.js","webpack://grebban/./.cache/public-page-renderer-prod.js","webpack://grebban/./.cache/public-page-renderer.js","webpack://grebban/./.cache/react-dom-utils.js","webpack://grebban/./.cache/react-lifecycles-compat.js","webpack://grebban/./.cache/redirect-utils.js","webpack://grebban/./.cache/register-service-worker.js","webpack://grebban/./.cache/strip-prefix.js","webpack://grebban/./node_modules/gatsby-plugin-google-gtag/gatsby-browser.js","webpack://grebban/./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack://grebban/./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack://grebban/./node_modules/gatsby-plugin-scroll-reveal/Wrapper.js","webpack://grebban/./node_modules/gatsby-plugin-scroll-reveal/gatsby-browser.js","webpack://grebban/./node_modules/styletron-engine-atomic/dist-browser-esm/sequential-id-generator.js","webpack://grebban/./node_modules/styletron-engine-atomic/dist-browser-esm/sort-css-media-queries.js","webpack://grebban/./node_modules/styletron-engine-atomic/dist-browser-esm/cache.js","webpack://grebban/./node_modules/styletron-engine-atomic/dist-browser-esm/hyphenate-style-name.js","webpack://grebban/./node_modules/inline-style-prefixer/es/utils/capitalizeString.js","webpack://grebban/./node_modules/inline-style-prefixer/es/utils/prefixProperty.js","webpack://grebban/./node_modules/inline-style-prefixer/es/utils/prefixValue.js","webpack://grebban/./node_modules/inline-style-prefixer/es/utils/addNewValuesOnly.js","webpack://grebban/./node_modules/inline-style-prefixer/es/utils/isObject.js","webpack://grebban/./node_modules/inline-style-prefixer/es/data.js","webpack://grebban/./node_modules/inline-style-prefixer/es/plugins/cursor.js","webpack://grebban/./node_modules/inline-style-prefixer/es/plugins/crossFade.js","webpack://grebban/./node_modules/inline-style-prefixer/es/plugins/filter.js","webpack://grebban/./node_modules/inline-style-prefixer/es/plugins/flex.js","webpack://grebban/./node_modules/inline-style-prefixer/es/plugins/flexboxOld.js","webpack://grebban/./node_modules/inline-style-prefixer/es/plugins/gradient.js","webpack://grebban/./node_modules/inline-style-prefixer/es/plugins/grid.js","webpack://grebban/./node_modules/inline-style-prefixer/es/plugins/imageSet.js","webpack://grebban/./node_modules/inline-style-prefixer/es/plugins/logical.js","webpack://grebban/./node_modules/inline-style-prefixer/es/plugins/sizing.js","webpack://grebban/./node_modules/inline-style-prefixer/es/plugins/transition.js","webpack://grebban/./node_modules/inline-style-prefixer/es/index.js","webpack://grebban/./node_modules/inline-style-prefixer/es/plugins/backgroundClip.js","webpack://grebban/./node_modules/inline-style-prefixer/es/plugins/position.js","webpack://grebban/./node_modules/inline-style-prefixer/es/createPrefixer.js","webpack://grebban/./node_modules/styletron-engine-atomic/dist-browser-esm/inject-style-prefixed.js","webpack://grebban/./node_modules/styletron-engine-atomic/dist-browser-esm/css.js","webpack://grebban/./node_modules/styletron-engine-atomic/dist-browser-esm/client/client.js","webpack://grebban/./node_modules/gatsby-plugin-styletron/gatsby-browser.js","webpack://grebban/./src/state/Site/reducers.js","webpack://grebban/./node_modules/redux-thunk/es/index.js","webpack://grebban/./src/state/store.js","webpack://grebban/./src/state/ReduxWrapper.js","webpack://grebban/./gatsby-browser.ts","webpack://grebban/./src/config/theme/constants.ts","webpack://grebban/./src/state/Site/constants.js","webpack://grebban/./node_modules/@gatsbyjs/reach-router/es/lib/utils.js","webpack://grebban/./node_modules/@gatsbyjs/reach-router/es/lib/history.js","webpack://grebban/./node_modules/@gatsbyjs/reach-router/es/index.js","webpack://grebban/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://grebban/./node_modules/hyphenate-style-name/index.js","webpack://grebban/./node_modules/intersection-observer/intersection-observer.js","webpack://grebban/./node_modules/invariant/browser.js","webpack://grebban/./node_modules/react-is/cjs/react-is.production.min.js","webpack://grebban/./node_modules/react-is/index.js","webpack://grebban/./node_modules/react-redux/es/utils/batch.js","webpack://grebban/./node_modules/react-redux/es/components/Context.js","webpack://grebban/./node_modules/react-redux/es/hooks/useReduxContext.js","webpack://grebban/./node_modules/react-redux/es/hooks/useSelector.js","webpack://grebban/./node_modules/react-redux/es/utils/useSyncExternalStore.js","webpack://grebban/./node_modules/react-redux/es/utils/Subscription.js","webpack://grebban/./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack://grebban/./node_modules/react-redux/es/components/connect.js","webpack://grebban/./node_modules/react-redux/es/components/Provider.js","webpack://grebban/./node_modules/react-redux/es/hooks/useStore.js","webpack://grebban/./node_modules/react-redux/es/hooks/useDispatch.js","webpack://grebban/./node_modules/react-redux/es/index.js","webpack://grebban/./node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","webpack://grebban/./node_modules/react-redux/node_modules/react-is/index.js","webpack://grebban/./node_modules/react-reveal/globals.js","webpack://grebban/./node_modules/redux-devtools-extension/index.js","webpack://grebban/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://grebban/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://grebban/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://grebban/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack://grebban/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://grebban/./node_modules/redux/es/redux.js","webpack://grebban/./node_modules/sal.js/dist/sal.js","webpack://grebban/./node_modules/styletron-react/dist-browser-esm/index.js","webpack://grebban/./node_modules/styletron-standard/dist-browser-esm/index.js","webpack://grebban/./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","webpack://grebban/./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","webpack://grebban/./node_modules/use-sync-external-store/shim/index.js","webpack://grebban/./node_modules/use-sync-external-store/shim/with-selector.js","webpack://grebban/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://grebban/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://grebban/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://grebban/./node_modules/@babel/runtime/helpers/interopRequireWildcard.js","webpack://grebban/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://grebban/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://grebban/./node_modules/@babel/runtime/helpers/typeof.js","webpack://grebban/./node_modules/@builder.io/partytown/integration/index.cjs","webpack://grebban/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://grebban/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://grebban/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://grebban/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://grebban/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://grebban/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://grebban/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://grebban/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://grebban/./node_modules/gatsby-link/dist/index.modern.mjs","webpack://grebban/./node_modules/gatsby-script/dist/index.modern.mjs"],"sourcesContent":["\"use strict\";\n\nexports.__esModule = true;\n\nvar _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; };\n\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n\n\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\n\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n var resolveTransition = function resolveTransition() {};\n\n return {\n get location() {\n return location;\n },\n\n get transitioning() {\n return transitioning;\n },\n\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({ location: location, action: \"POP\" });\n };\n\n source.addEventListener(\"popstate\", popstateListener);\n\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, { key: Date.now() + \"\" });\n // try...catch iOS Safari limits to 100 pushState calls\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({ location: location, action: \"PUSH\" });\n });\n return transition;\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n\n return {\n get location() {\n return stack[index];\n },\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n\n history: {\n get entries() {\n return stack;\n },\n get index() {\n return index;\n },\n get state() {\n return states[index];\n },\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n index++;\n stack.push({ pathname: pathname, search: search.length ? \"?\" + search : search });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n stack[index] = { pathname: pathname, search: search };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n\n index = newIndex;\n }\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate;\n\n////////////////////////////////////////////////////////////////////////////////\n\nexports.globalHistory = globalHistory;\nexports.navigate = navigate;\nexports.createHistory = createHistory;\nexports.createMemorySource = createMemorySource;","\"use strict\";\n\nexports.__esModule = true;\nexports.shallowCompare = exports.validateRedirect = exports.insertParams = exports.resolve = exports.match = exports.pick = exports.startsWith = undefined;\n\nvar _invariant = require(\"invariant\");\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n\n var dynamicMatch = paramRe.exec(routeSegment);\n\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? (0, _invariant2.default)(false, \" dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : (0, _invariant2.default)(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n\n return match || default_ || null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\nvar match = function match(path, uri) {\n return pick([{ path: path }], uri);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// \n// // instead of\n// \n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname);\n\n // ?a=b, /users?b=c => /users?a=b\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n }\n\n // profile, /users/789 => /users/789/profile\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n }\n\n // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar paramRe = /^:(.+)/;\n\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return { route: route, score: score, index: index };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\n\nvar segmentize = function segmentize(uri) {\n return uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\n\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\nexports.startsWith = startsWith;\nexports.pick = pick;\nexports.match = match;\nexports.resolve = resolve;\nexports.insertParams = insertParams;\nexports.validateRedirect = validateRedirect;\nexports.shallowCompare = shallowCompare;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hyphenateProperty;\n\nvar _hyphenateStyleName = require('hyphenate-style-name');\n\nvar _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction hyphenateProperty(property) {\n return (0, _hyphenateStyleName2.default)(property);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPrefixedValue;\nvar regex = /-webkit-|-moz-|-ms-/;\n\nfunction isPrefixedValue(value) {\n return typeof value === 'string' && regex.test(value);\n}\nmodule.exports = exports['default'];","\"use strict\";\n\nexports.__esModule = true;\nexports.applyTrailingSlashOption = void 0;\n\n// TODO(v5): Remove legacy setting and default to \"always\"\nconst applyTrailingSlashOption = (input, option = `legacy`) => {\n const hasHtmlSuffix = input.endsWith(`.html`);\n const hasXmlSuffix = input.endsWith(`.xml`);\n const hasPdfSuffix = input.endsWith(`.pdf`);\n if (input === `/`) return input;\n\n if (hasHtmlSuffix || hasXmlSuffix || hasPdfSuffix) {\n option = `never`;\n }\n\n if (option === `always`) {\n return input.endsWith(`/`) ? input : `${input}/`;\n }\n\n if (option === `never`) {\n return input.endsWith(`/`) ? input.slice(0, -1) : input;\n }\n\n return input;\n};\n\nexports.applyTrailingSlashOption = applyTrailingSlashOption;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContext = void 0;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nexports.ScrollContext = _scrollHandler.ScrollHandler;\n\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\n\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _sessionStorage = require(\"./session-storage\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\n\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n\n function ScrollHandler() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this._stateStorage = new _sessionStorage.SessionStorage();\n _this._isTicking = false;\n _this._latestKnownScrollY = 0;\n\n _this.scrollListener = function () {\n _this._latestKnownScrollY = window.scrollY;\n\n if (!_this._isTicking) {\n _this._isTicking = true;\n requestAnimationFrame(_this._saveScroll.bind((0, _assertThisInitialized2.default)(_this)));\n }\n };\n\n _this.windowScroll = function (position, prevProps) {\n if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n window.scrollTo(0, position);\n }\n };\n\n _this.scrollToHash = function (hash, prevProps) {\n var node = document.getElementById(hash.substring(1));\n\n if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n node.scrollIntoView();\n }\n };\n\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n if (!shouldUpdateScroll) {\n return true;\n } // Hack to allow accessing this._stateStorage.\n\n\n return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n };\n\n return _this;\n }\n\n var _proto = ScrollHandler.prototype;\n\n _proto._saveScroll = function _saveScroll() {\n var key = this.props.location.key || null;\n\n if (key) {\n this._stateStorage.save(this.props.location, key, this._latestKnownScrollY);\n }\n\n this._isTicking = false;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n window.addEventListener(\"scroll\", this.scrollListener);\n var scrollPosition;\n var _this$props$location = this.props.location,\n key = _this$props$location.key,\n hash = _this$props$location.hash;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n if (scrollPosition) {\n this.windowScroll(scrollPosition, undefined);\n } else if (hash) {\n this.scrollToHash(decodeURI(hash), undefined);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.scrollListener);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props$location2 = this.props.location,\n hash = _this$props$location2.hash,\n key = _this$props$location2.key;\n var scrollPosition;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n /** There are two pieces of state: the browser url and\n * history state which keeps track of scroll position\n * Native behaviour prescribes that we ought to restore scroll position\n * when a user navigates back in their browser (this is the `POP` action)\n * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n * So we _always_ stick to the url as a source of truth — if the url\n * contains a hash, we scroll to it\n */\n\n\n if (hash) {\n this.scrollToHash(decodeURI(hash), prevProps);\n } else {\n this.windowScroll(scrollPosition, prevProps);\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n value: this._stateStorage\n }, this.props.children);\n };\n\n return ScrollHandler;\n}(React.Component);\n\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired,\n location: _propTypes.default.object.isRequired\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\n\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage() {}\n\n var _proto = SessionStorage.prototype;\n\n _proto.read = function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n\n try {\n var value = window.sessionStorage.getItem(stateKey);\n return value ? JSON.parse(value) : 0;\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n }\n\n if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n }\n\n return 0;\n }\n };\n\n _proto.save = function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n\n try {\n window.sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {\n if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n } else {\n window[GATSBY_ROUTER_SCROLL_STATE] = {};\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n }\n }\n };\n\n _proto.getStateKey = function getStateKey(location, key) {\n var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n };\n\n return SessionStorage;\n}();\n\nexports.SessionStorage = SessionStorage;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nvar _react = require(\"react\");\n\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\n\nfunction useScrollRestoration(identifier) {\n var location = (0, _reachRouter.useLocation)();\n var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n var ref = (0, _react.useRef)(null);\n (0, _react.useLayoutEffect)(function () {\n if (ref.current) {\n var position = state.read(location, identifier);\n ref.current.scrollTo(0, position || 0);\n }\n }, [location.key]);\n return {\n ref: ref,\n onScroll: function onScroll() {\n if (ref.current) {\n state.save(location, identifier, ref.current.scrollTop);\n }\n }\n };\n}","\"use strict\";\n\nmodule.exports = Object.assign;\n//# sourceMappingURL=object-assign.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.onInitialClientRender = void 0;\n\nvar _gatsbyScript = require(\"gatsby-script\");\n\nvar _injectPartytownSnippet = require(\"./utils/inject-partytown-snippet\");\n\n// Makes sure off-main-thread scripts are loaded in `gatsby develop`\nconst onInitialClientRender = () => {\n if (process.env.NODE_ENV !== `development`) {\n return;\n }\n\n (0, _injectPartytownSnippet.injectPartytownSnippet)(_gatsbyScript.collectedScriptsByPage.get(window.location.pathname)); // Clear scripts after we've used them to avoid leaky behavior\n\n _gatsbyScript.collectedScriptsByPage.delete(window.location.pathname);\n}; // Client-side navigation (CSR, e.g. Gatsby Link navigations) are broken upstream in Partytown.\n// We need an official API from Partytown for handling re-configuration and on-demand script loading.\n// Until then, `off-main-thread` scripts load only on server-side navigation (SSR).\n// See https://github.com/BuilderIO/partytown/issues/74 for more details.\n\n\nexports.onInitialClientRender = onInitialClientRender;\n//# sourceMappingURL=gatsby-browser.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.getForwards = getForwards;\n\nfunction getForwards(collectedScripts) {\n return collectedScripts === null || collectedScripts === void 0 ? void 0 : collectedScripts.flatMap(script => (script === null || script === void 0 ? void 0 : script.forward) || []);\n}\n//# sourceMappingURL=get-forwards.js.map","\"use strict\";\n\nexports.__esModule = true;\nexports.injectPartytownSnippet = injectPartytownSnippet;\n\nvar _integration = require(\"@builder.io/partytown/integration\");\n\nvar _getForwards = require(\"./get-forwards\");\n\n// Adapted from https://github.com/BuilderIO/partytown/blob/main/src/react/snippet.tsx to only include CSR logic\nfunction injectPartytownSnippet(collectedScripts) {\n if (!collectedScripts.length) {\n return;\n }\n\n const existingSnippet = document.querySelector(`script[data-partytown]`);\n const existingSandbox = document.querySelector(`iframe[src*=\"~partytown/partytown-sandbox-sw\"]`);\n\n if (existingSnippet) {\n existingSnippet.remove();\n }\n\n if (existingSandbox) {\n existingSandbox.remove();\n }\n\n const forwards = (0, _getForwards.getForwards)(collectedScripts);\n const snippet = document.createElement(`script`);\n snippet.dataset.partytown = ``;\n snippet.innerHTML = (0, _integration.partytownSnippet)({\n forward: forwards\n });\n document.head.appendChild(snippet);\n}\n//# sourceMappingURL=inject-partytown-snippet.js.map","exports.components = {\n \"component---src-pages-editor-js\": () => import(\"./../../../src/pages/editor.js\" /* webpackChunkName: \"component---src-pages-editor-js\" */),\n \"component---src-templates-storyblok-entry-js\": () => import(\"./../../../src/templates/storyblok-entry.js\" /* webpackChunkName: \"component---src-templates-storyblok-entry-js\" */)\n}\n\n","module.exports = [{\n plugin: require('../node_modules/gatsby-plugin-scroll-reveal/gatsby-browser.js'),\n options: {\"plugins\":[],\"threshold\":0,\"once\":true,\"disable\":false,\"selector\":\"[data-sal]\",\"animateClassName\":\"sal-animate\",\"disabledClassName\":\"sal-disabled\",\"rootMargin\":\"0% 0%\",\"enterEventName\":\"sal:in\",\"exitEventName\":\"sal:out\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-styletron/gatsby-browser.js'),\n options: {\"plugins\":[],\"prefix\":\"_\",\"debug\":true},\n },{\n plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n options: {\"plugins\":[],\"name\":\"Grebban\",\"short_name\":\"Grebban\",\"start_url\":\"/\",\"icon\":\"src/assets/icons/favicon.png\",\"display\":\"standalone\",\"background_color\":\"#ffffff\",\"theme_color\":\"#ffffff\",\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"crossOrigin\":\"anonymous\",\"include_favicon\":true,\"cacheDigest\":\"b715613c4a7967d3fe8d59f512f03f1e\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-google-gtag/gatsby-browser.js'),\n options: {\"plugins\":[],\"trackingIds\":[\"G-GSS3D4R4LV\"],\"pluginConfig\":{\"head\":true}},\n },{\n plugin: require('../gatsby-browser.ts'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js'),\n options: {\"plugins\":[]},\n }]\n","const plugins = require(`./api-runner-browser-plugins`)\nconst { getResourceURLsForPathname, loadPage, loadPageSync } =\n require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n // Hooks for gatsby-cypress's API handler\n if (process.env.CYPRESS_SUPPORT) {\n if (window.___apiHandler) {\n window.___apiHandler(api)\n } else if (window.___resolvedAPIs) {\n window.___resolvedAPIs.push(api)\n } else {\n window.___resolvedAPIs = [api]\n }\n }\n\n let results = plugins.map(plugin => {\n if (!plugin.plugin[api]) {\n return undefined\n }\n\n args.getResourceURLsForPathname = getResourceURLsForPathname\n args.loadPage = loadPage\n args.loadPageSync = loadPageSync\n\n const result = plugin.plugin[api](args, plugin.options)\n if (result && argTransform) {\n args = argTransform({ args, result, plugin })\n }\n return result\n })\n\n // Filter out undefined results.\n results = results.filter(result => typeof result !== `undefined`)\n\n if (results.length > 0) {\n return results\n } else if (defaultReturn) {\n return [defaultReturn]\n } else {\n return []\n }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n plugins.reduce(\n (previous, next) =>\n next.plugin[api]\n ? previous.then(() => next.plugin[api](args, next.options))\n : previous,\n Promise.resolve()\n )\n","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","// \n// An event handler can take an optional event argument\n// and should not return a value\n \n \n\n// An array of all currently registered event handlers for a type\n \n \n// A map of event types and their corresponding event handlers.\n \n \n \n \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type , handler ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type , handler ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type , evt ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nexport default mitt;\n//# sourceMappingURL=mitt.es.js.map\n","export default pathAndSearch => {\n if (pathAndSearch === undefined) {\n return pathAndSearch\n }\n let [path, search = ``] = pathAndSearch.split(`?`)\n if (search) {\n search = `?` + search\n }\n\n if (path === `/`) {\n return `/` + search\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1) + search\n }\n return path + search\n}\n","import { pick } from \"@gatsbyjs/reach-router/lib/utils\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n let newRawPathname = rawPathname\n const queryIndex = rawPathname.indexOf(`?`)\n\n if (queryIndex !== -1) {\n const [path, qs] = rawPathname.split(`?`)\n newRawPathname = `${path}?${encodeURIComponent(qs)}`\n }\n\n const pathname = decodeURIComponent(newRawPathname)\n\n // Remove the pathPrefix from the pathname.\n const trimmedPathname = stripPrefix(\n pathname,\n decodeURIComponent(__BASE_PATH__)\n )\n // Remove any hashfragment\n .split(`#`)[0]\n\n return trimmedPathname\n}\n\nfunction absolutify(path) {\n // If it's already absolute, return as-is\n if (\n path.startsWith(`/`) ||\n path.startsWith(`https://`) ||\n path.startsWith(`http://`)\n ) {\n return path\n }\n // Calculate path relative to current location, adding a trailing slash to\n // match behavior of @reach/router\n return new URL(\n path,\n window.location.href + (window.location.href.endsWith(`/`) ? `` : `/`)\n ).pathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return normalizePagePath(path.route.originalPath)\n }\n\n return null\n}\n\n/**\n * Return a matchpath params from reach/router rules\n * if `match-paths.json` contains `{ \":bar/*foo\" }`, and the path is /baz/zaz/zoo\n * then it returns\n * { bar: baz, foo: zaz/zoo }\n *\n * @param {string} rawPathname A raw pathname\n * @return {object}\n */\nexport const grabMatchParams = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return path.params\n }\n\n return {}\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n if (pathCache.has(trimmedPathname)) {\n return pathCache.get(trimmedPathname)\n }\n\n const redirect = maybeGetBrowserRedirect(rawPathname)\n if (redirect) {\n return findPath(redirect.toPath)\n }\n\n let foundPath = findMatchPath(trimmedPathname)\n\n if (!foundPath) {\n foundPath = cleanPath(rawPathname)\n }\n\n pathCache.set(trimmedPathname, foundPath)\n\n return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n\n let foundPath = trimmedPathname\n if (foundPath === `/index.html`) {\n foundPath = `/`\n }\n\n foundPath = normalizePagePath(foundPath)\n\n return foundPath\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst StaticQueryContext = React.createContext({})\nlet StaticQueryServerContext = null\nif (React.createServerContext) {\n StaticQueryServerContext = React.createServerContext(`StaticQuery`, {})\n}\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n \n {finalData && render(finalData)}\n {!finalData &&
Loading (StaticQuery)
}\n
\n )\n}\n\n// TODO(v5): Remove completely\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n return (\n \n {staticQueryData => (\n \n )}\n \n )\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n // TODO(v5): Remove since we require React >= 18\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n let context\n\n // Can we get a better check here?\n if (\n StaticQueryServerContext &&\n Object.keys(StaticQueryServerContext._currentValue).length\n ) {\n context = React.useContext(StaticQueryServerContext)\n } else {\n context = React.useContext(StaticQueryContext)\n }\n\n // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n // catch the misuse of the API and give proper direction\n if (isNaN(Number(query))) {\n throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n }\n\n if (context[query]?.data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nexport {\n StaticQuery,\n StaticQueryContext,\n useStaticQuery,\n StaticQueryServerContext,\n}\n","import loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport { default as PageRenderer } from \"./public-page-renderer\"\nexport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nexport {\n default as Link,\n withPrefix,\n withAssetPrefix,\n navigate,\n parsePath,\n} from \"gatsby-link\"\n\nexport { graphql, prefetchPathname }\nexport {\n StaticQuery,\n StaticQueryContext,\n useStaticQuery,\n StaticQueryServerContext,\n} from \"./static-query\"\n\nexport * from \"gatsby-script\"\n","const support = function (feature) {\n if (typeof document === `undefined`) {\n return false\n }\n const fakeLink = document.createElement(`link`)\n try {\n if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n return fakeLink.relList.supports(feature)\n }\n } catch (err) {\n return false\n }\n return false\n}\n\nconst linkPrefetchStrategy = function (url, options) {\n return new Promise((resolve, reject) => {\n if (typeof document === `undefined`) {\n reject()\n return\n }\n\n const link = document.createElement(`link`)\n link.setAttribute(`rel`, `prefetch`)\n link.setAttribute(`href`, url)\n\n Object.keys(options).forEach(key => {\n link.setAttribute(key, options[key])\n })\n\n link.onload = resolve\n link.onerror = reject\n\n const parentElement =\n document.getElementsByTagName(`head`)[0] ||\n document.getElementsByName(`script`)[0].parentNode\n parentElement.appendChild(link)\n })\n}\n\nconst xhrPrefetchStrategy = function (url) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(`GET`, url, true)\n\n req.onload = () => {\n if (req.status === 200) {\n resolve()\n } else {\n reject()\n }\n }\n\n req.send(null)\n })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n ? linkPrefetchStrategy\n : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function (url, options) {\n return new Promise(resolve => {\n if (preFetched[url]) {\n resolve()\n return\n }\n\n supportedPrefetchStrategy(url, options)\n .then(() => {\n resolve()\n preFetched[url] = true\n })\n .catch(() => {}) // 404s are logged to the console anyway\n })\n}\n\nexport default prefetch\n","import { createFromReadableStream } from \"react-server-dom-webpack\"\nimport prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\n/**\n * Available resource loading statuses\n */\nexport const PageResourceStatus = {\n /**\n * At least one of critical resources failed to load\n */\n Error: `error`,\n /**\n * Resources loaded successfully\n */\n Success: `success`,\n}\n\nconst stripSurroundingSlashes = s => {\n s = s[0] === `/` ? s.slice(1) : s\n s = s.endsWith(`/`) ? s.slice(0, -1) : s\n return s\n}\n\nconst createPageDataUrl = rawPath => {\n const [path, maybeSearch] = rawPath.split(`?`)\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json${\n maybeSearch ? `?${maybeSearch}` : ``\n }`\n}\n\nfunction doFetch(url, method = `GET`) {\n return new Promise(resolve => {\n const req = new XMLHttpRequest()\n req.open(method, url, true)\n req.onreadystatechange = () => {\n if (req.readyState == 4) {\n resolve(req)\n }\n }\n req.send(null)\n })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n if (\n `connection` in navigator &&\n typeof navigator.connection !== `undefined`\n ) {\n if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n return false\n }\n if (navigator.connection.saveData) {\n return false\n }\n }\n return true\n}\n\n// Regex that matches common search crawlers\nconst BOT_REGEX = /bot|crawler|spider|crawling/i\n\nconst toPageResources = (pageData, component = null, head) => {\n const page = {\n componentChunkName: pageData.componentChunkName,\n path: pageData.path,\n webpackCompilationHash: pageData.webpackCompilationHash,\n matchPath: pageData.matchPath,\n staticQueryHashes: pageData.staticQueryHashes,\n getServerDataError: pageData.getServerDataError,\n }\n\n return {\n component,\n head,\n json: pageData.result,\n page,\n }\n}\n\nfunction waitForResponse(response) {\n return new Promise(resolve => {\n try {\n const result = response.readRoot()\n resolve(result)\n } catch (err) {\n if (\n Object.hasOwnProperty.call(err, `_response`) &&\n Object.hasOwnProperty.call(err, `_status`)\n ) {\n setTimeout(() => {\n waitForResponse(response).then(resolve)\n }, 200)\n } else {\n throw err\n }\n }\n })\n}\n\nexport class BaseLoader {\n constructor(loadComponent, matchPaths) {\n // Map of pagePath -> Page. Where Page is an object with: {\n // status: PageResourceStatus.Success || PageResourceStatus.Error,\n // payload: PageResources, // undefined if PageResourceStatus.Error\n // }\n // PageResources is {\n // component,\n // json: pageData.result,\n // page: {\n // componentChunkName,\n // path,\n // webpackCompilationHash,\n // staticQueryHashes\n // },\n // staticQueryResults\n // }\n this.pageDb = new Map()\n this.inFlightDb = new Map()\n this.staticQueryDb = {}\n this.pageDataDb = new Map()\n this.partialHydrationDb = new Map()\n this.isPrefetchQueueRunning = false\n this.prefetchQueued = []\n this.prefetchTriggered = new Set()\n this.prefetchCompleted = new Set()\n this.loadComponent = loadComponent\n setMatchPaths(matchPaths)\n }\n\n inFlightNetworkRequests = new Map()\n\n memoizedGet(url) {\n let inFlightPromise = this.inFlightNetworkRequests.get(url)\n\n if (!inFlightPromise) {\n inFlightPromise = doFetch(url, `GET`)\n this.inFlightNetworkRequests.set(url, inFlightPromise)\n }\n\n // Prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n return inFlightPromise\n .then(response => {\n this.inFlightNetworkRequests.delete(url)\n return response\n })\n .catch(err => {\n this.inFlightNetworkRequests.delete(url)\n throw err\n })\n }\n\n setApiRunner(apiRunner) {\n this.apiRunner = apiRunner\n this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n }\n\n fetchPageDataJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.path === undefined) {\n throw new Error(`not a valid pageData response`)\n }\n\n const maybeSearch = pagePath.split(`?`)[1]\n if (maybeSearch && !jsonPayload.path.includes(maybeSearch)) {\n jsonPayload.path += `?${maybeSearch}`\n }\n\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: jsonPayload,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPageDataJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n fetchPartialHydrationJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath).replace(`.json`, `-rsc.json`)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: responseText,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n loadPageDataJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDataDb.has(pagePath)) {\n const pageData = this.pageDataDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPageDataJson({ pagePath }).then(pageData => {\n this.pageDataDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n loadPartialHydrationJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.partialHydrationDb.has(pagePath)) {\n const pageData = this.partialHydrationDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPartialHydrationJson({ pagePath }).then(pageData => {\n this.partialHydrationDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n findMatchPath(rawPath) {\n return findMatchPath(rawPath)\n }\n\n // TODO check all uses of this and whether they use undefined for page resources not exist\n loadPage(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const page = this.pageDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n if (page.error) {\n return {\n error: page.error,\n status: page.status,\n }\n }\n\n return Promise.resolve(page.payload)\n }\n }\n\n if (this.inFlightDb.has(pagePath)) {\n return this.inFlightDb.get(pagePath)\n }\n\n let inFlightPromise\n if (global.hasPartialHydration) {\n inFlightPromise = Promise.all([\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n this.loadPartialHydrationJson(pagePath),\n ]).then(([appData, { payload: pageData }, result]) => {\n if (result.status === PageResourceStatus.Error) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n const finalResult = {}\n\n // In develop we have separate chunks for template and Head components\n // to enable HMR (fast refresh requires single exports).\n // In production we have shared chunk with both exports. Double loadComponent here\n // will be deduped by webpack runtime resulting in single request and single module\n // being loaded for both `component` and `head`.\n const componentChunkPromise = this.loadComponent(\n pageData.componentChunkName,\n `head`\n ).then(head => {\n finalResult.createdAt = new Date()\n finalResult.status = PageResourceStatus.Success\n if (result.notFound === true) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: appData\n ? appData.webpackCompilationHash\n : ``,\n })\n\n const pageResources = toPageResources(pageData, null, head)\n\n if (result.payload && typeof result.payload === `string`) {\n pageResources.partialHydration = result.payload\n\n const readableStream = new ReadableStream({\n start(controller) {\n const te = new TextEncoder()\n controller.enqueue(te.encode(result.payload))\n },\n pull(controller) {\n // close on next read when queue is empty\n controller.close()\n },\n cancel() {},\n })\n\n return waitForResponse(\n createFromReadableStream(readableStream)\n ).then(result => {\n pageResources.partialHydration = result\n\n return pageResources\n })\n }\n\n // undefined if final result is an error\n return pageResources\n })\n\n // Necessary for head component\n const staticQueryBatchPromise = Promise.all(\n (pageData.staticQueryHashes || []).map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n )\n .then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n .catch(() => {\n throw new Error(\n `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n )\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return (\n Promise.all([componentChunkPromise, staticQueryBatchPromise])\n .then(([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = {\n ...pageResources,\n staticQueryResults: staticQueryResults,\n }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n if (finalResult.error) {\n return {\n error: finalResult.error,\n status: finalResult.status,\n }\n }\n\n return payload\n })\n // when static-query fail to load we throw a better error\n .catch(err => {\n return {\n error: err,\n status: PageResourceStatus.Error,\n }\n })\n )\n })\n } else {\n inFlightPromise = Promise.all([\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n ]).then(allData => {\n const result = allData[1]\n if (result.status === PageResourceStatus.Error) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n let pageData = result.payload\n const { componentChunkName, staticQueryHashes = [] } = pageData\n\n const finalResult = {}\n\n // In develop we have separate chunks for template and Head components\n // to enable HMR (fast refresh requires single exports).\n // In production we have shared chunk with both exports. Double loadComponent here\n // will be deduped by webpack runtime resulting in single request and single module\n // being loaded for both `component` and `head`.\n const componentChunkPromise = Promise.all([\n this.loadComponent(componentChunkName),\n this.loadComponent(componentChunkName, `head`),\n ]).then(([component, head]) => {\n finalResult.createdAt = new Date()\n let pageResources\n if (!component || component instanceof Error) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = component\n } else {\n finalResult.status = PageResourceStatus.Success\n if (result.notFound === true) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: allData[0]\n ? allData[0].webpackCompilationHash\n : ``,\n })\n pageResources = toPageResources(pageData, component, head)\n }\n // undefined if final result is an error\n return pageResources\n })\n\n const staticQueryBatchPromise = Promise.all(\n staticQueryHashes.map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n )\n .then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n .catch(() => {\n throw new Error(\n `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n )\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return (\n Promise.all([componentChunkPromise, staticQueryBatchPromise])\n .then(([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = { ...pageResources, staticQueryResults }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n if (finalResult.error) {\n return {\n error: finalResult.error,\n status: finalResult.status,\n }\n }\n\n return payload\n })\n // when static-query fail to load we throw a better error\n .catch(err => {\n return {\n error: err,\n status: PageResourceStatus.Error,\n }\n })\n )\n })\n }\n\n inFlightPromise\n .then(() => {\n this.inFlightDb.delete(pagePath)\n })\n .catch(error => {\n this.inFlightDb.delete(pagePath)\n throw error\n })\n\n this.inFlightDb.set(pagePath, inFlightPromise)\n\n return inFlightPromise\n }\n\n // returns undefined if the page does not exists in cache\n loadPageSync(rawPath, options = {}) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const pageData = this.pageDb.get(pagePath)\n\n if (pageData.payload) {\n return pageData.payload\n }\n\n if (options?.withErrorDetails) {\n return {\n error: pageData.error,\n status: pageData.status,\n }\n }\n }\n return undefined\n }\n\n shouldPrefetch(pagePath) {\n // Skip prefetching if we know user is on slow or constrained connection\n if (!doesConnectionSupportPrefetch()) {\n return false\n }\n\n // Don't prefetch if this is a crawler bot\n if (navigator.userAgent && BOT_REGEX.test(navigator.userAgent)) {\n return false\n }\n\n // Check if the page exists.\n if (this.pageDb.has(pagePath)) {\n return false\n }\n\n return true\n }\n\n prefetch(pagePath) {\n if (!this.shouldPrefetch(pagePath)) {\n return {\n then: resolve => resolve(false),\n abort: () => {},\n }\n }\n if (this.prefetchTriggered.has(pagePath)) {\n return {\n then: resolve => resolve(true),\n abort: () => {},\n }\n }\n\n const defer = {\n resolve: null,\n reject: null,\n promise: null,\n }\n defer.promise = new Promise((resolve, reject) => {\n defer.resolve = resolve\n defer.reject = reject\n })\n this.prefetchQueued.push([pagePath, defer])\n const abortC = new AbortController()\n abortC.signal.addEventListener(`abort`, () => {\n const index = this.prefetchQueued.findIndex(([p]) => p === pagePath)\n // remove from the queue\n if (index !== -1) {\n this.prefetchQueued.splice(index, 1)\n }\n })\n\n if (!this.isPrefetchQueueRunning) {\n this.isPrefetchQueueRunning = true\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n }\n\n return {\n then: (resolve, reject) => defer.promise.then(resolve, reject),\n abort: abortC.abort.bind(abortC),\n }\n }\n\n _processNextPrefetchBatch() {\n const idleCallback = window.requestIdleCallback || (cb => setTimeout(cb, 0))\n\n idleCallback(() => {\n const toPrefetch = this.prefetchQueued.splice(0, 4)\n const prefetches = Promise.all(\n toPrefetch.map(([pagePath, dPromise]) => {\n // Tell plugins with custom prefetching logic that they should start\n // prefetching this path.\n if (!this.prefetchTriggered.has(pagePath)) {\n this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n this.prefetchTriggered.add(pagePath)\n }\n\n // If a plugin has disabled core prefetching, stop now.\n if (this.prefetchDisabled) {\n return dPromise.resolve(false)\n }\n\n return this.doPrefetch(findPath(pagePath)).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n\n dPromise.resolve(true)\n })\n })\n )\n\n if (this.prefetchQueued.length) {\n prefetches.then(() => {\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n })\n } else {\n this.isPrefetchQueueRunning = false\n }\n })\n }\n\n doPrefetch(pagePath) {\n const pageDataUrl = createPageDataUrl(pagePath)\n\n if (global.hasPartialHydration) {\n return Promise.all([\n prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n ),\n prefetchHelper(pageDataUrl.replace(`.json`, `-rsc.json`), {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPartialHydrationJson(pagePath)\n ),\n ])\n } else {\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n )\n }\n }\n\n hovering(rawPath) {\n this.loadPage(rawPath)\n }\n\n getResourceURLsForPathname(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDataDb.get(pagePath)\n if (page) {\n const pageResources = toPageResources(page.payload)\n\n return [\n ...createComponentUrls(pageResources.page.componentChunkName),\n createPageDataUrl(pagePath),\n ]\n } else {\n return null\n }\n }\n\n isPageNotFound(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDb.get(pagePath)\n return !page || page.notFound\n }\n\n loadAppData(retries = 0) {\n return this.memoizedGet(`${__PATH_PREFIX__}/page-data/app-data.json`).then(\n req => {\n const { status, responseText } = req\n\n let appData\n\n if (status !== 200 && retries < 3) {\n // Retry 3 times incase of non-200 responses\n return this.loadAppData(retries + 1)\n }\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.webpackCompilationHash === undefined) {\n throw new Error(`not a valid app-data response`)\n }\n\n appData = jsonPayload\n } catch (err) {\n // continue regardless of error\n }\n }\n\n return appData\n }\n )\n }\n}\n\nconst createComponentUrls = componentChunkName =>\n (window.___chunkMapping[componentChunkName] || []).map(\n chunk => __PATH_PREFIX__ + chunk\n )\n\nexport class ProdLoader extends BaseLoader {\n constructor(asyncRequires, matchPaths, pageData) {\n const loadComponent = (chunkName, exportType = `components`) => {\n if (!global.hasPartialHydration) {\n exportType = `components`\n }\n\n if (!asyncRequires[exportType][chunkName]) {\n throw new Error(\n `We couldn't find the correct component chunk with the name \"${chunkName}\"`\n )\n }\n\n return (\n asyncRequires[exportType][chunkName]()\n // loader will handle the case when component is error\n .catch(err => err)\n )\n }\n\n super(loadComponent, matchPaths)\n\n if (pageData) {\n this.pageDataDb.set(findPath(pageData.path), {\n pagePath: pageData.path,\n payload: pageData,\n status: `success`,\n })\n }\n }\n\n doPrefetch(pagePath) {\n return super.doPrefetch(pagePath).then(result => {\n if (result.status !== PageResourceStatus.Success) {\n return Promise.resolve()\n }\n const pageData = result.payload\n const chunkName = pageData.componentChunkName\n const componentUrls = createComponentUrls(chunkName)\n return Promise.all(componentUrls.map(prefetchHelper)).then(() => pageData)\n })\n }\n\n loadPageDataJson(rawPath) {\n return super.loadPageDataJson(rawPath).then(data => {\n if (data.notFound) {\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n\n loadPartialHydrationJson(rawPath) {\n return super.loadPartialHydrationJson(rawPath).then(data => {\n if (data.notFound) {\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n instance = _loader\n}\n\nexport const publicLoader = {\n enqueue: rawPath => instance.prefetch(rawPath),\n\n // Real methods\n getResourceURLsForPathname: rawPath =>\n instance.getResourceURLsForPathname(rawPath),\n loadPage: rawPath => instance.loadPage(rawPath),\n // TODO add deprecation to v4 so people use withErrorDetails and then we can remove in v5 and change default behaviour\n loadPageSync: (rawPath, options = {}) =>\n instance.loadPageSync(rawPath, options),\n prefetch: rawPath => instance.prefetch(rawPath),\n isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n hovering: rawPath => instance.hovering(rawPath),\n loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n\nexport function getStaticQueryResults() {\n if (instance) {\n return instance.staticQueryDb\n } else {\n return {}\n }\n}\n","import { useEffect } from \"react\"\n\n/*\n * Calls callback in an effect and renders children\n */\nexport function FireCallbackInEffect({ children, callback }) {\n useEffect(() => {\n callback()\n })\n\n return children\n}\n","export const VALID_NODE_NAMES = [\n `link`,\n `meta`,\n `style`,\n `title`,\n `base`,\n `noscript`,\n `script`,\n]\n","import { VALID_NODE_NAMES } from \"./constants\"\n\n/**\n * Filter the props coming from a page down to just the ones that are relevant for head.\n * This e.g. filters out properties that are undefined during SSR.\n */\nexport function filterHeadProps(input) {\n return {\n location: {\n pathname: input.location.pathname,\n },\n params: input.params,\n data: input.data || {},\n pageContext: input.pageContext,\n }\n}\n\n/**\n * Throw error if Head export is not a valid\n */\nexport function headExportValidator(head) {\n if (typeof head !== `function`)\n throw new Error(\n `Expected \"Head\" export to be a function got \"${typeof head}\".`\n )\n}\n\n/**\n * Warn once for same messsage\n */\nlet warnOnce = _ => {}\nif (process.env.NODE_ENV !== `production`) {\n const warnings = new Set()\n warnOnce = msg => {\n if (!warnings.has(msg)) {\n console.warn(msg)\n }\n warnings.add(msg)\n }\n}\n\n/**\n * Warn for invalid tags in head.\n * @param {string} tagName\n */\nexport function warnForInvalidTags(tagName) {\n if (process.env.NODE_ENV !== `production`) {\n const warning = `<${tagName}> is not a valid head element. Please use one of the following: ${VALID_NODE_NAMES.join(\n `, `\n )}`\n\n warnOnce(warning)\n }\n}\n\n/**\n * When a `nonce` is present on an element, browsers such as Chrome and Firefox strip it out of the\n * actual HTML attributes for security reasons *when the element is added to the document*. Thus,\n * given two equivalent elements that have nonces, `Element,isEqualNode()` will return false if one\n * of those elements gets added to the document. Although the `element.nonce` property will be the\n * same for both elements, the one that was added to the document will return an empty string for\n * its nonce HTML attribute value.\n *\n * This custom `isEqualNode()` function therefore removes the nonce value from the `newTag` before\n * comparing it to `oldTag`, restoring it afterwards.\n *\n * For more information, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1211471#c12\n */\nexport function isEqualNode(oldTag, newTag) {\n if (oldTag instanceof HTMLElement && newTag instanceof HTMLElement) {\n const nonce = newTag.getAttribute(`nonce`)\n // Only strip the nonce if `oldTag` has had it stripped. An element's nonce attribute will not\n // be stripped if there is no content security policy response header that includes a nonce.\n if (nonce && !oldTag.getAttribute(`nonce`)) {\n const cloneTag = newTag.cloneNode(true)\n cloneTag.setAttribute(`nonce`, ``)\n cloneTag.nonce = nonce\n return nonce === oldTag.nonce && oldTag.isEqualNode(cloneTag)\n }\n }\n\n return oldTag.isEqualNode(newTag)\n}\n\nexport function diffNodes({ oldNodes, newNodes, onStale, onNew }) {\n for (const existingHeadElement of oldNodes) {\n const indexInNewNodes = newNodes.findIndex(e =>\n isEqualNode(e, existingHeadElement)\n )\n\n if (indexInNewNodes === -1) {\n onStale(existingHeadElement)\n } else {\n // this node is re-created as-is, so we keep old node, and remove it from list of new nodes (as we handled it already here)\n newNodes.splice(indexInNewNodes, 1)\n }\n }\n\n // remaing new nodes didn't have matching old node, so need to be added\n for (const newNode of newNodes) {\n onNew(newNode)\n }\n}\n","import React from \"react\"\nimport { useEffect } from \"react\"\nimport { StaticQueryContext } from \"gatsby\"\nimport { LocationProvider } from \"@gatsbyjs/reach-router\"\nimport { reactDOMUtils } from \"../react-dom-utils\"\nimport { FireCallbackInEffect } from \"./components/fire-callback-in-effect\"\nimport { VALID_NODE_NAMES } from \"./constants\"\nimport {\n headExportValidator,\n filterHeadProps,\n warnForInvalidTags,\n diffNodes,\n} from \"./utils\"\n\nconst hiddenRoot = document.createElement(`div`)\n\nconst removePrevHeadElements = () => {\n const prevHeadNodes = document.querySelectorAll(`[data-gatsby-head]`)\n\n for (const node of prevHeadNodes) {\n node.parentNode.removeChild(node)\n }\n}\n\nconst onHeadRendered = () => {\n const validHeadNodes = []\n\n const seenIds = new Map()\n for (const node of hiddenRoot.childNodes) {\n const nodeName = node.nodeName.toLowerCase()\n const id = node.attributes?.id?.value\n\n if (!VALID_NODE_NAMES.includes(nodeName)) {\n warnForInvalidTags(nodeName)\n } else {\n let clonedNode = node.cloneNode(true)\n clonedNode.setAttribute(`data-gatsby-head`, true)\n\n // Create an element for scripts to make script work\n if (clonedNode.nodeName.toLowerCase() === `script`) {\n const script = document.createElement(`script`)\n for (const attr of clonedNode.attributes) {\n script.setAttribute(attr.name, attr.value)\n }\n script.innerHTML = clonedNode.innerHTML\n clonedNode = script\n }\n\n if (id) {\n if (!seenIds.has(id)) {\n validHeadNodes.push(clonedNode)\n seenIds.set(id, validHeadNodes.length - 1)\n } else {\n const indexOfPreviouslyInsertedNode = seenIds.get(id)\n validHeadNodes[indexOfPreviouslyInsertedNode].parentNode?.removeChild(\n validHeadNodes[indexOfPreviouslyInsertedNode]\n )\n validHeadNodes[indexOfPreviouslyInsertedNode] = clonedNode\n }\n } else {\n validHeadNodes.push(clonedNode)\n }\n }\n }\n\n const existingHeadElements = document.querySelectorAll(`[data-gatsby-head]`)\n\n if (existingHeadElements.length === 0) {\n document.head.append(...validHeadNodes)\n return\n }\n\n const newHeadNodes = []\n diffNodes({\n oldNodes: existingHeadElements,\n newNodes: validHeadNodes,\n onStale: node => node.parentNode.removeChild(node),\n onNew: node => newHeadNodes.push(node),\n })\n\n document.head.append(...newHeadNodes)\n}\n\nif (process.env.BUILD_STAGE === `develop`) {\n // We set up observer to be able to regenerate after react-refresh\n // updates our hidden element.\n const observer = new MutationObserver(onHeadRendered)\n observer.observe(hiddenRoot, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n })\n}\n\nexport function headHandlerForBrowser({\n pageComponent,\n staticQueryResults,\n pageComponentProps,\n}) {\n useEffect(() => {\n if (pageComponent?.Head) {\n headExportValidator(pageComponent.Head)\n\n const { render } = reactDOMUtils()\n\n const Head = pageComponent.Head\n\n render(\n // just a hack to call the callback after react has done first render\n // Note: In dev, we call onHeadRendered twice( in FireCallbackInEffect and after mutualution observer dectects initail render into hiddenRoot) this is for hot reloading\n // In Prod we only call onHeadRendered in FireCallbackInEffect to render to head\n \n \n \n \n \n \n ,\n hiddenRoot\n )\n }\n\n return () => {\n removePrevHeadElements()\n }\n })\n}\n","import React, { Suspense, createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\nimport { headHandlerForBrowser } from \"./head/head-export-handler-for-browser\"\n\n// Renders page\nfunction PageRenderer(props) {\n const pageComponentProps = {\n ...props,\n params: {\n ...grabMatchParams(props.location.pathname),\n ...props.pageResources.json.pageContext.__params,\n },\n }\n\n const preferDefault = m => (m && m.default) || m\n\n let pageElement\n if (props.pageResources.partialHydration) {\n pageElement = props.pageResources.partialHydration\n } else {\n pageElement = createElement(preferDefault(props.pageResources.component), {\n ...pageComponentProps,\n key: props.path || props.pageResources.page.path,\n })\n }\n\n const pageComponent = props.pageResources.head\n\n headHandlerForBrowser({\n pageComponent,\n staticQueryResults: props.pageResources.staticQueryResults,\n pageComponentProps,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n {\n element: pageElement,\n props: pageComponentProps,\n },\n pageElement,\n ({ result }) => {\n return { element: result, props: pageComponentProps }\n }\n ).pop()\n\n return wrappedPage\n}\n\nPageRenderer.propTypes = {\n location: PropTypes.object.isRequired,\n pageResources: PropTypes.object.isRequired,\n data: PropTypes.object,\n pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n id: `gatsby-announcer`,\n style: {\n position: `absolute`,\n top: 0,\n width: 1,\n height: 1,\n padding: 0,\n overflow: `hidden`,\n clip: `rect(0, 0, 0, 0)`,\n whiteSpace: `nowrap`,\n border: 0,\n },\n \"aria-live\": `assertive`,\n \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport { navigate as reachNavigate } from \"@gatsbyjs/reach-router\"\nimport { globalHistory } from \"@gatsbyjs/reach-router/lib/history\"\nimport { parsePath } from \"gatsby-link\"\n\nfunction maybeRedirect(pathname) {\n const redirect = maybeGetBrowserRedirect(pathname)\n const { hash, search } = window.location\n\n if (redirect != null) {\n window.___replace(redirect.toPath + search + hash)\n return true\n } else {\n return false\n }\n}\n\n// Catch unhandled chunk loading errors and force a restart of the app.\nlet nextRoute = ``\n\nwindow.addEventListener(`unhandledrejection`, event => {\n if (/loading chunk \\d* failed./i.test(event.reason)) {\n if (nextRoute) {\n window.location.pathname = nextRoute\n }\n }\n})\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n nextRoute = location.pathname\n apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onRouteUpdate`, { location, prevLocation })\n if (\n process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND &&\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n ) {\n emitter.emit(`onRouteUpdate`, { location, prevLocation })\n }\n }\n}\n\nconst navigate = (to, options = {}) => {\n // Support forward/backward navigation with numbers\n // navigate(-2) (jumps back 2 history steps)\n // navigate(2) (jumps forward 2 history steps)\n if (typeof to === `number`) {\n globalHistory.navigate(to)\n return\n }\n\n const { pathname, search, hash } = parsePath(to)\n const redirect = maybeGetBrowserRedirect(pathname)\n\n // If we're redirecting, just replace the passed in pathname\n // to the one we want to redirect to.\n if (redirect) {\n to = redirect.toPath + search + hash\n }\n\n // If we had a service worker update, no matter the path, reload window and\n // reset the pathname whitelist\n if (window.___swUpdated) {\n window.location = pathname + search + hash\n return\n }\n\n // Start a timer to wait for a second before transitioning and showing a\n // loader in case resources aren't around yet.\n const timeoutId = setTimeout(() => {\n emitter.emit(`onDelayedLoadPageResources`, { pathname })\n apiRunner(`onRouteUpdateDelayed`, {\n location: window.location,\n })\n }, 1000)\n\n loader.loadPage(pathname + search).then(pageResources => {\n // If no page resources, then refresh the page\n // Do this, rather than simply `window.location.reload()`, so that\n // pressing the back/forward buttons work - otherwise when pressing\n // back, the browser will just change the URL and expect JS to handle\n // the change, which won't always work since it might not be a Gatsby\n // page.\n if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n window.history.replaceState({}, ``, location.href)\n window.location = pathname\n clearTimeout(timeoutId)\n return\n }\n\n // If the loaded page has a different compilation hash to the\n // window, then a rebuild has occurred on the server. Reload.\n if (process.env.NODE_ENV === `production` && pageResources) {\n if (\n pageResources.page.webpackCompilationHash !==\n window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n window.location = pathname + search + hash\n }\n }\n reachNavigate(to, options)\n clearTimeout(timeoutId)\n })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n const { pathname, hash } = location\n const results = apiRunner(`shouldUpdateScroll`, {\n prevRouterProps,\n // `pathname` for backwards compatibility\n pathname,\n routerProps: { location },\n getSavedScrollPosition: args => [\n 0,\n // FIXME this is actually a big code smell, we should fix this\n // eslint-disable-next-line @babel/no-invalid-this\n this._stateStorage.read(args, args.key),\n ],\n })\n if (results.length > 0) {\n // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n // @see https://github.com/gatsbyjs/gatsby/issues/12038\n return results[results.length - 1]\n }\n\n if (prevRouterProps) {\n const {\n location: { pathname: oldPathname },\n } = prevRouterProps\n if (oldPathname === pathname) {\n // Scroll to element if it exists, if it doesn't, or no hash is provided,\n // scroll to top.\n return hash ? decodeURI(hash.slice(1)) : [0, 0]\n }\n }\n return true\n}\n\nfunction init() {\n // The \"scroll-behavior\" package expects the \"action\" to be on the location\n // object so let's copy it over.\n globalHistory.listen(args => {\n args.location.action = args.action\n })\n\n window.___push = to => navigate(to, { replace: false })\n window.___replace = to => navigate(to, { replace: true })\n window.___navigate = (to, options) => navigate(to, options)\n}\n\nclass RouteAnnouncer extends React.Component {\n constructor(props) {\n super(props)\n this.announcementRef = React.createRef()\n }\n\n componentDidUpdate(prevProps, nextProps) {\n requestAnimationFrame(() => {\n let pageName = `new page at ${this.props.location.pathname}`\n if (document.title) {\n pageName = document.title\n }\n const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n if (pageHeadings && pageHeadings.length) {\n pageName = pageHeadings[0].textContent\n }\n const newAnnouncement = `Navigated to ${pageName}`\n if (this.announcementRef.current) {\n const oldAnnouncement = this.announcementRef.current.innerText\n if (oldAnnouncement !== newAnnouncement) {\n this.announcementRef.current.innerText = newAnnouncement\n }\n }\n })\n }\n\n render() {\n return
\n }\n}\n\nconst compareLocationProps = (prevLocation, nextLocation) => {\n if (prevLocation.href !== nextLocation.href) {\n return true\n }\n\n if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n return true\n }\n\n return false\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n constructor(props) {\n super(props)\n onPreRouteUpdate(props.location, null)\n }\n\n componentDidMount() {\n onRouteUpdate(this.props.location, null)\n }\n\n shouldComponentUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onPreRouteUpdate(this.props.location, prevProps.location)\n return true\n }\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\n }\n\n render() {\n return (\n \n {this.props.children}\n \n \n )\n }\n}\n\nRouteUpdates.propTypes = {\n location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates, maybeGetBrowserRedirect }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n for (var i in a) {\n if (!(i in b)) return true;\n }for (var _i in b) {\n if (a[_i] !== b[_i]) return true;\n }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n constructor(props) {\n super()\n const { location, pageResources } = props\n this.state = {\n location: { ...location },\n pageResources:\n pageResources ||\n loader.loadPageSync(location.pathname + location.search, {\n withErrorDetails: true,\n }),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(\n location.pathname + location.search,\n {\n withErrorDetails: true,\n }\n )\n\n return {\n pageResources,\n location: { ...location },\n }\n }\n\n return {\n location: { ...location },\n }\n }\n\n loadResources(rawPath) {\n loader.loadPage(rawPath).then(pageResources => {\n if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n this.setState({\n location: { ...window.location },\n pageResources,\n })\n } else {\n window.history.replaceState({}, ``, location.href)\n window.location = rawPath\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Always return false if we're missing resources.\n if (!nextState.pageResources) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n // Check if the component or json have changed.\n if (this.state.pageResources !== nextState.pageResources) {\n return true\n }\n if (\n this.state.pageResources.component !== nextState.pageResources.component\n ) {\n return true\n }\n\n if (this.state.pageResources.json !== nextState.pageResources.json) {\n return true\n }\n // Check if location has changed on a page using internal routing\n // via matchPath configuration.\n if (\n this.state.location.key !== nextState.location.key &&\n nextState.pageResources.page &&\n (nextState.pageResources.page.matchPath ||\n nextState.pageResources.page.path)\n ) {\n return true\n }\n return shallowCompare(this, nextProps, nextState)\n }\n\n render() {\n if (\n process.env.NODE_ENV !== `production` &&\n (!this.state.pageResources ||\n this.state.pageResources.status === PageResourceStatus.Error)\n ) {\n const message = `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n if (this.state.pageResources?.error) {\n console.error(message)\n throw this.state.pageResources.error\n }\n\n throw new Error(message)\n }\n\n return this.props.children(this.state)\n }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport { Router, navigate, Location, BaseContext } from \"@gatsbyjs/reach-router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport { StaticQueryContext } from \"gatsby\"\nimport {\n shouldUpdateScroll,\n init as navigationInit,\n RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n setLoader,\n ProdLoader,\n publicLoader,\n PageResourceStatus,\n getStaticQueryResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\nimport { reactDOMUtils } from \"./react-dom-utils\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths, window.pageData)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nconst { render, hydrate } = reactDOMUtils()\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\nconst reloadStorageKey = `gatsby-reload-compilation-hash-match`\n\napiRunnerAsync(`onClientEntry`).then(() => {\n // Let plugins register a service worker. The plugin just needs\n // to return true.\n if (apiRunner(`registerServiceWorker`).filter(Boolean).length > 0) {\n require(`./register-service-worker`)\n }\n\n // In gatsby v2 if Router is used in page using matchPaths\n // paths need to contain full path.\n // For example:\n // - page have `/app/*` matchPath\n // - inside template user needs to use `/app/xyz` as path\n // Resetting `basepath`/`baseuri` keeps current behaviour\n // to not introduce breaking change.\n // Remove this in v3\n const RouteHandler = props => (\n \n \n \n )\n\n const DataContext = React.createContext({})\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n \n {({ location }) => (\n \n {({ pageResources, location }) => {\n if (pageResources.partialHydration) {\n return (\n \n {children}\n \n )\n } else {\n const staticQueryResults = getStaticQueryResults()\n return (\n \n \n {children}\n \n \n )\n }\n }}\n \n )}\n \n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n \n {({ pageResources, location }) => (\n \n \n \n \n
\n \n \n )}\n \n )\n }\n }\n\n const { pagePath, location: browserLoc } = window\n\n // Explicitly call navigate if the canonical path (window.pagePath)\n // is different to the browser path (window.location.pathname). SSR\n // page paths might include search params, while SSG and DSG won't.\n // If page path include search params we also compare query params.\n // But only if NONE of the following conditions hold:\n //\n // - The url matches a client side route (page.matchPath)\n // - it's a 404 page\n // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n if (\n pagePath &&\n __BASE_PATH__ + pagePath !==\n browserLoc.pathname + (pagePath.includes(`?`) ? browserLoc.search : ``) &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath.match(/^\\/(404|500)(\\/?|.html)$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(\n __BASE_PATH__ +\n pagePath +\n (!pagePath.includes(`?`) ? browserLoc.search : ``) +\n browserLoc.hash,\n {\n replace: true,\n }\n )\n }\n\n // It's possible that sessionStorage can throw an exception if access is not granted, see https://github.com/gatsbyjs/gatsby/issues/34512\n const getSessionStorage = () => {\n try {\n return sessionStorage\n } catch {\n return null\n }\n }\n\n publicLoader.loadPage(browserLoc.pathname + browserLoc.search).then(page => {\n const sessionStorage = getSessionStorage()\n\n if (\n page?.page?.webpackCompilationHash &&\n page.page.webpackCompilationHash !== window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n // We have not matching html + js (inlined `window.___webpackCompilationHash`)\n // with our data (coming from `app-data.json` file). This can cause issues such as\n // errors trying to load static queries (as list of static queries is inside `page-data`\n // which might not match to currently loaded `.js` scripts).\n // We are making attempt to reload if hashes don't match, but we also have to handle case\n // when reload doesn't fix it (possibly broken deploy) so we don't end up in infinite reload loop\n if (sessionStorage) {\n const isReloaded = sessionStorage.getItem(reloadStorageKey) === `1`\n\n if (!isReloaded) {\n sessionStorage.setItem(reloadStorageKey, `1`)\n window.location.reload(true)\n return\n }\n }\n }\n\n if (sessionStorage) {\n sessionStorage.removeItem(reloadStorageKey)\n }\n\n if (!page || page.status === PageResourceStatus.Error) {\n const message = `page resources for ${browserLoc.pathname} not found. Not rendering React`\n\n // if the chunk throws an error we want to capture the real error\n // This should help with https://github.com/gatsbyjs/gatsby/issues/19618\n if (page && page.error) {\n console.error(message)\n throw page.error\n }\n\n throw new Error(message)\n }\n\n const SiteRoot = apiRunner(\n `wrapRootElement`,\n { element: },\n ,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n const App = function App() {\n const onClientEntryRanRef = React.useRef(false)\n\n React.useEffect(() => {\n if (!onClientEntryRanRef.current) {\n onClientEntryRanRef.current = true\n if (performance.mark) {\n performance.mark(`onInitialClientRender`)\n }\n\n apiRunner(`onInitialClientRender`)\n }\n }, [])\n\n return {SiteRoot}\n }\n\n const focusEl = document.getElementById(`gatsby-focus-wrapper`)\n\n // Client only pages have any empty body so we just do a normal\n // render to avoid React complaining about hydration mis-matches.\n let defaultRenderer = render\n if (focusEl && focusEl.children.length) {\n defaultRenderer = hydrate\n }\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n defaultRenderer\n )[0]\n\n function runRender() {\n const rootElement =\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : null\n\n renderer(, rootElement)\n }\n\n // https://github.com/madrobby/zepto/blob/b5ed8d607f67724788ec9ff492be297f64d47dfc/src/zepto.js#L439-L450\n // TODO remove IE 10 support\n const doc = document\n if (\n doc.readyState === `complete` ||\n (doc.readyState !== `loading` && !doc.documentElement.doScroll)\n ) {\n setTimeout(function () {\n runRender()\n }, 0)\n } else {\n const handler = function () {\n doc.removeEventListener(`DOMContentLoaded`, handler, false)\n window.removeEventListener(`load`, handler, false)\n\n runRender()\n }\n\n doc.addEventListener(`DOMContentLoaded`, handler, false)\n window.addEventListener(`load`, handler, false)\n }\n\n return\n })\n})\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","/* global HAS_REACT_18 */\n\nconst map = new WeakMap()\n\n/**\n * Since react 18, render and hydrate moved to react-dom/client\n * returns correct hydrate and render function based on installed react-dom version\n */\n\nexport function reactDOMUtils() {\n let render\n let hydrate\n\n if (HAS_REACT_18) {\n const reactDomClient = require(`react-dom/client`)\n\n render = (Component, el) => {\n let root = map.get(el)\n if (!root) {\n map.set(el, (root = reactDomClient.createRoot(el)))\n }\n root.render(Component)\n }\n\n hydrate = (Component, el) => reactDomClient.hydrateRoot(el, Component)\n } else {\n const reactDomClient = require(`react-dom`)\n render = reactDomClient.render\n hydrate = reactDomClient.hydrate\n }\n\n return { render, hydrate }\n}\n","exports.polyfill = Component => Component\n","import redirects from \"./redirects.json\"\n\n// Convert to a map for faster lookup in maybeRedirect()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n if (redirect.ignoreCase) {\n redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n } else {\n redirectMap.set(redirect.fromPath, redirect)\n }\n})\n\nexport function maybeGetBrowserRedirect(pathname) {\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\n return redirect\n}\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n window.location.protocol !== `https:` &&\n window.location.hostname !== `localhost`\n) {\n console.error(\n `Service workers can only be used over HTTPS, or on localhost for development`\n )\n} else if (`serviceWorker` in navigator) {\n navigator.serviceWorker\n .register(`${__BASE_PATH__}/sw.js`)\n .then(function (reg) {\n reg.addEventListener(`updatefound`, () => {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n if (!prefix) {\n return str\n }\n\n if (str === prefix) {\n return `/`\n }\n\n if (str.startsWith(`${prefix}/`)) {\n return str.slice(prefix.length)\n }\n\n return str\n}\n","\"use strict\";\n\nexports.onRouteUpdate = function (_ref) {\n var location = _ref.location;\n\n if (process.env.NODE_ENV !== \"production\" || typeof gtag !== \"function\") {\n return null;\n }\n\n var pathIsExcluded = location && typeof window.excludeGtagPaths !== \"undefined\" && window.excludeGtagPaths.some(function (rx) {\n return rx.test(location.pathname);\n });\n if (pathIsExcluded) return null; // wrap inside a timeout to make sure react-helmet is done with its changes (https://github.com/gatsbyjs/gatsby/issues/11592)\n\n var sendPageView = function sendPageView() {\n var pagePath = location ? location.pathname + location.search + location.hash : undefined;\n window.gtag(\"event\", \"page_view\", {\n page_path: pagePath\n });\n };\n\n if (\"requestAnimationFrame\" in window) {\n requestAnimationFrame(function () {\n requestAnimationFrame(sendPageView);\n });\n } else {\n // simulate 2 rAF calls\n setTimeout(sendPageView, 32);\n }\n\n return null;\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _gatsby = require(\"gatsby\");\n\nvar _getManifestPathname = _interopRequireDefault(require(\"./get-manifest-pathname\"));\n\n/* global __MANIFEST_PLUGIN_HAS_LOCALISATION__ */\n// when we don't have localisation in our manifest, we tree shake everything away\nif (__MANIFEST_PLUGIN_HAS_LOCALISATION__) {\n exports.onRouteUpdate = function (_ref, pluginOptions) {\n var location = _ref.location;\n var localize = pluginOptions.localize;\n var manifestFilename = (0, _getManifestPathname.default)(location.pathname, localize);\n var manifestEl = document.head.querySelector(\"link[rel=\\\"manifest\\\"]\");\n\n if (manifestEl) {\n manifestEl.setAttribute(\"href\", (0, _gatsby.withPrefix)(manifestFilename));\n }\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Get a manifest filename depending on localized pathname\n *\n * @param {string} pathname\n * @param {Array<{start_url: string, lang: string}>} localizedManifests\n * @return string\n */\nvar _default = function _default(pathname, localizedManifests) {\n var defaultFilename = \"manifest.webmanifest\";\n\n if (!Array.isArray(localizedManifests)) {\n return defaultFilename;\n }\n\n var localizedManifest = localizedManifests.find(function (app) {\n return pathname.startsWith(app.start_url);\n });\n\n if (!localizedManifest) {\n return defaultFilename;\n }\n\n return \"manifest_\" + localizedManifest.lang + \".webmanifest\";\n};\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nexports.__esModule = true;\nexports.default = Wrapper;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _sal = _interopRequireDefault(require(\"sal.js\"));\n\nfunction Wrapper(_ref) {\n var children = _ref.children,\n path = _ref.path,\n options = _ref.options;\n (0, _react.useEffect)(function () {\n (0, _sal.default)(options);\n }, [path]);\n return children;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nrequire('sal.js/dist/sal.css');\n\nrequire('intersection-observer');\n\nvar React = require(\"react\");\n\nvar Wrapper = require('./Wrapper').default;\n\nexports.wrapPageElement = function (_ref, _ref2) {\n var element = _ref.element,\n props = _ref.props;\n var plugins = _ref2.plugins,\n options = (0, _objectWithoutPropertiesLoose2.default)(_ref2, [\"plugins\"]);\n return (\n /*#__PURE__*/\n React.createElement(Wrapper, {\n options: options,\n path: props.path\n }, element)\n );\n};","export default class SequentialIDGenerator {\n constructor(prefix = \"\") {\n // ensure start with \"ae\" so \"ad\" is never produced\n this.prefix = prefix;\n this.count = 0;\n this.offset = 374;\n this.msb = 1295;\n this.power = 2;\n }\n\n next() {\n const id = this.increment().toString(36);\n return this.prefix ? `${this.prefix}${id}` : id;\n }\n\n increment() {\n const id = this.count + this.offset;\n\n if (id === this.msb) {\n this.offset += (this.msb + 1) * 9;\n this.msb = Math.pow(36, ++this.power) - 1;\n }\n\n this.count++;\n return id;\n }\n\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTZXF1ZW50aWFsSURHZW5lcmF0b3IiLCJjb25zdHJ1Y3RvciIsInByZWZpeCIsImNvdW50Iiwib2Zmc2V0IiwibXNiIiwicG93ZXIiLCJuZXh0IiwiaWQiLCJpbmNyZW1lbnQiLCJ0b1N0cmluZyIsIk1hdGgiLCJwb3ciXSwic291cmNlcyI6WyJzcmMvc2VxdWVudGlhbC1pZC1nZW5lcmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VxdWVudGlhbElER2VuZXJhdG9yIHtcbiAgcHJlZml4OiBzdHJpbmc7XG4gIGNvdW50OiBudW1iZXI7XG4gIG9mZnNldDogbnVtYmVyO1xuICBtc2I6IG51bWJlcjtcbiAgcG93ZXI6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihwcmVmaXg6IHN0cmluZyA9IFwiXCIpIHtcbiAgICAvLyBlbnN1cmUgc3RhcnQgd2l0aCBcImFlXCIgc28gXCJhZFwiIGlzIG5ldmVyIHByb2R1Y2VkXG4gICAgdGhpcy5wcmVmaXggPSBwcmVmaXg7XG4gICAgdGhpcy5jb3VudCA9IDA7XG4gICAgdGhpcy5vZmZzZXQgPSAzNzQ7XG4gICAgdGhpcy5tc2IgPSAxMjk1O1xuICAgIHRoaXMucG93ZXIgPSAyO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICBjb25zdCBpZCA9IHRoaXMuaW5jcmVtZW50KCkudG9TdHJpbmcoMzYpO1xuICAgIHJldHVybiB0aGlzLnByZWZpeCA/IGAke3RoaXMucHJlZml4fSR7aWR9YCA6IGlkO1xuICB9XG5cbiAgaW5jcmVtZW50KCkge1xuICAgIGNvbnN0IGlkID0gdGhpcy5jb3VudCArIHRoaXMub2Zmc2V0O1xuICAgIGlmIChpZCA9PT0gdGhpcy5tc2IpIHtcbiAgICAgIHRoaXMub2Zmc2V0ICs9ICh0aGlzLm1zYiArIDEpICogOTtcbiAgICAgIHRoaXMubXNiID0gTWF0aC5wb3coMzYsICsrdGhpcy5wb3dlcikgLSAxO1xuICAgIH1cbiAgICB0aGlzLmNvdW50Kys7XG4gICAgcmV0dXJuIGlkO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsTUFBTUEscUJBQU4sQ0FBNEI7RUFPekNDLFdBQVcsQ0FBQ0MsTUFBYyxHQUFHLEVBQWxCLEVBQXNCO0lBQy9CO0lBQ0EsS0FBS0EsTUFBTCxHQUFjQSxNQUFkO0lBQ0EsS0FBS0MsS0FBTCxHQUFhLENBQWI7SUFDQSxLQUFLQyxNQUFMLEdBQWMsR0FBZDtJQUNBLEtBQUtDLEdBQUwsR0FBVyxJQUFYO0lBQ0EsS0FBS0MsS0FBTCxHQUFhLENBQWI7RUFDRDs7RUFFREMsSUFBSSxHQUFHO0lBQ0wsTUFBTUMsRUFBRSxHQUFHLEtBQUtDLFNBQUwsR0FBaUJDLFFBQWpCLENBQTBCLEVBQTFCLENBQVg7SUFDQSxPQUFPLEtBQUtSLE1BQUwsR0FBZSxHQUFFLEtBQUtBLE1BQU8sR0FBRU0sRUFBRyxFQUFsQyxHQUFzQ0EsRUFBN0M7RUFDRDs7RUFFREMsU0FBUyxHQUFHO0lBQ1YsTUFBTUQsRUFBRSxHQUFHLEtBQUtMLEtBQUwsR0FBYSxLQUFLQyxNQUE3Qjs7SUFDQSxJQUFJSSxFQUFFLEtBQUssS0FBS0gsR0FBaEIsRUFBcUI7TUFDbkIsS0FBS0QsTUFBTCxJQUFlLENBQUMsS0FBS0MsR0FBTCxHQUFXLENBQVosSUFBaUIsQ0FBaEM7TUFDQSxLQUFLQSxHQUFMLEdBQVdNLElBQUksQ0FBQ0MsR0FBTCxDQUFTLEVBQVQsRUFBYSxFQUFFLEtBQUtOLEtBQXBCLElBQTZCLENBQXhDO0lBQ0Q7O0lBQ0QsS0FBS0gsS0FBTDtJQUNBLE9BQU9LLEVBQVA7RUFDRDs7QUE3QndDIn0=","// adapted from https://github.com/dutchenkoOleg/sort-css-media-queries\nconst minMaxWidth = /(!?\\(\\s*min(-device-)?-width).+\\(\\s*max(-device)?-width/i;\nconst minWidth = /\\(\\s*min(-device)?-width/i;\nconst maxMinWidth = /(!?\\(\\s*max(-device)?-width).+\\(\\s*min(-device)?-width/i;\nconst maxWidth = /\\(\\s*max(-device)?-width/i;\n\nconst isMinWidth = _testQuery(minMaxWidth, maxMinWidth, minWidth);\n\nconst isMaxWidth = _testQuery(maxMinWidth, minMaxWidth, maxWidth);\n\nconst minMaxHeight = /(!?\\(\\s*min(-device)?-height).+\\(\\s*max(-device)?-height/i;\nconst minHeight = /\\(\\s*min(-device)?-height/i;\nconst maxMinHeight = /(!?\\(\\s*max(-device)?-height).+\\(\\s*min(-device)?-height/i;\nconst maxHeight = /\\(\\s*max(-device)?-height/i;\n\nconst isMinHeight = _testQuery(minMaxHeight, maxMinHeight, minHeight);\n\nconst isMaxHeight = _testQuery(maxMinHeight, minMaxHeight, maxHeight);\n\nconst isPrint = /print/i;\nconst isPrintOnly = /^print$/i;\nconst maxValue = Number.MAX_VALUE;\n\nfunction _getQueryLength(length) {\n const matches = /(-?\\d*\\.?\\d+)(ch|em|ex|px|rem)/.exec(length);\n\n if (matches === null) {\n return maxValue;\n }\n\n let number = matches[1];\n const unit = matches[2];\n\n switch (unit) {\n case \"ch\":\n number = parseFloat(number) * 8.8984375;\n break;\n\n case \"em\":\n case \"rem\":\n number = parseFloat(number) * 16;\n break;\n\n case \"ex\":\n number = parseFloat(number) * 8.296875;\n break;\n\n case \"px\":\n number = parseFloat(number);\n break;\n }\n\n return +number;\n}\n\nfunction _testQuery(doubleTestTrue, doubleTestFalse, singleTest) {\n return function (query) {\n if (doubleTestTrue.test(query)) {\n return true;\n } else if (doubleTestFalse.test(query)) {\n return false;\n }\n\n return singleTest.test(query);\n };\n}\n\nfunction _testIsPrint(a, b) {\n const isPrintA = isPrint.test(a);\n const isPrintOnlyA = isPrintOnly.test(a);\n const isPrintB = isPrint.test(b);\n const isPrintOnlyB = isPrintOnly.test(b);\n\n if (isPrintA && isPrintB) {\n if (!isPrintOnlyA && isPrintOnlyB) {\n return 1;\n }\n\n if (isPrintOnlyA && !isPrintOnlyB) {\n return -1;\n }\n\n return a.localeCompare(b);\n }\n\n if (isPrintA) {\n return 1;\n }\n\n if (isPrintB) {\n return -1;\n }\n\n return null;\n}\n\nexport default function sortCSSmq(a, b) {\n if (a === \"\") {\n return -1;\n }\n\n if (b === \"\") {\n return 1;\n }\n\n const testIsPrint = _testIsPrint(a, b);\n\n if (testIsPrint !== null) {\n return testIsPrint;\n }\n\n const minA = isMinWidth(a) || isMinHeight(a);\n const maxA = isMaxWidth(a) || isMaxHeight(a);\n const minB = isMinWidth(b) || isMinHeight(b);\n const maxB = isMaxWidth(b) || isMaxHeight(b);\n\n if (minA && maxB) {\n return -1;\n }\n\n if (maxA && minB) {\n return 1;\n }\n\n const lengthA = _getQueryLength(a);\n\n const lengthB = _getQueryLength(b);\n\n if (lengthA === maxValue && lengthB === maxValue) {\n return a.localeCompare(b);\n } else if (lengthA === maxValue) {\n return 1;\n } else if (lengthB === maxValue) {\n return -1;\n }\n\n if (lengthA > lengthB) {\n if (maxA) {\n return -1;\n }\n\n return 1;\n }\n\n if (lengthA < lengthB) {\n if (maxA) {\n return 1;\n }\n\n return -1;\n }\n\n return a.localeCompare(b);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtaW5NYXhXaWR0aCIsIm1pbldpZHRoIiwibWF4TWluV2lkdGgiLCJtYXhXaWR0aCIsImlzTWluV2lkdGgiLCJfdGVzdFF1ZXJ5IiwiaXNNYXhXaWR0aCIsIm1pbk1heEhlaWdodCIsIm1pbkhlaWdodCIsIm1heE1pbkhlaWdodCIsIm1heEhlaWdodCIsImlzTWluSGVpZ2h0IiwiaXNNYXhIZWlnaHQiLCJpc1ByaW50IiwiaXNQcmludE9ubHkiLCJtYXhWYWx1ZSIsIk51bWJlciIsIk1BWF9WQUxVRSIsIl9nZXRRdWVyeUxlbmd0aCIsImxlbmd0aCIsIm1hdGNoZXMiLCJleGVjIiwibnVtYmVyIiwidW5pdCIsInBhcnNlRmxvYXQiLCJkb3VibGVUZXN0VHJ1ZSIsImRvdWJsZVRlc3RGYWxzZSIsInNpbmdsZVRlc3QiLCJxdWVyeSIsInRlc3QiLCJfdGVzdElzUHJpbnQiLCJhIiwiYiIsImlzUHJpbnRBIiwiaXNQcmludE9ubHlBIiwiaXNQcmludEIiLCJpc1ByaW50T25seUIiLCJsb2NhbGVDb21wYXJlIiwic29ydENTU21xIiwidGVzdElzUHJpbnQiLCJtaW5BIiwibWF4QSIsIm1pbkIiLCJtYXhCIiwibGVuZ3RoQSIsImxlbmd0aEIiXSwic291cmNlcyI6WyJzcmMvc29ydC1jc3MtbWVkaWEtcXVlcmllcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBhZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2R1dGNoZW5rb09sZWcvc29ydC1jc3MtbWVkaWEtcXVlcmllc1xuXG5jb25zdCBtaW5NYXhXaWR0aCA9IC8oIT9cXChcXHMqbWluKC1kZXZpY2UtKT8td2lkdGgpLitcXChcXHMqbWF4KC1kZXZpY2UpPy13aWR0aC9pO1xuY29uc3QgbWluV2lkdGggPSAvXFwoXFxzKm1pbigtZGV2aWNlKT8td2lkdGgvaTtcbmNvbnN0IG1heE1pbldpZHRoID0gLyghP1xcKFxccyptYXgoLWRldmljZSk/LXdpZHRoKS4rXFwoXFxzKm1pbigtZGV2aWNlKT8td2lkdGgvaTtcbmNvbnN0IG1heFdpZHRoID0gL1xcKFxccyptYXgoLWRldmljZSk/LXdpZHRoL2k7XG5cbmNvbnN0IGlzTWluV2lkdGggPSBfdGVzdFF1ZXJ5KG1pbk1heFdpZHRoLCBtYXhNaW5XaWR0aCwgbWluV2lkdGgpO1xuY29uc3QgaXNNYXhXaWR0aCA9IF90ZXN0UXVlcnkobWF4TWluV2lkdGgsIG1pbk1heFdpZHRoLCBtYXhXaWR0aCk7XG5cbmNvbnN0IG1pbk1heEhlaWdodCA9XG4gIC8oIT9cXChcXHMqbWluKC1kZXZpY2UpPy1oZWlnaHQpLitcXChcXHMqbWF4KC1kZXZpY2UpPy1oZWlnaHQvaTtcbmNvbnN0IG1pbkhlaWdodCA9IC9cXChcXHMqbWluKC1kZXZpY2UpPy1oZWlnaHQvaTtcbmNvbnN0IG1heE1pbkhlaWdodCA9XG4gIC8oIT9cXChcXHMqbWF4KC1kZXZpY2UpPy1oZWlnaHQpLitcXChcXHMqbWluKC1kZXZpY2UpPy1oZWlnaHQvaTtcbmNvbnN0IG1heEhlaWdodCA9IC9cXChcXHMqbWF4KC1kZXZpY2UpPy1oZWlnaHQvaTtcblxuY29uc3QgaXNNaW5IZWlnaHQgPSBfdGVzdFF1ZXJ5KG1pbk1heEhlaWdodCwgbWF4TWluSGVpZ2h0LCBtaW5IZWlnaHQpO1xuY29uc3QgaXNNYXhIZWlnaHQgPSBfdGVzdFF1ZXJ5KG1heE1pbkhlaWdodCwgbWluTWF4SGVpZ2h0LCBtYXhIZWlnaHQpO1xuXG5jb25zdCBpc1ByaW50ID0gL3ByaW50L2k7XG5jb25zdCBpc1ByaW50T25seSA9IC9ecHJpbnQkL2k7XG5jb25zdCBtYXhWYWx1ZSA9IE51bWJlci5NQVhfVkFMVUU7XG5cbmZ1bmN0aW9uIF9nZXRRdWVyeUxlbmd0aChsZW5ndGg6IHN0cmluZykge1xuICBjb25zdCBtYXRjaGVzID0gLygtP1xcZCpcXC4/XFxkKykoY2h8ZW18ZXh8cHh8cmVtKS8uZXhlYyhsZW5ndGgpO1xuICBpZiAobWF0Y2hlcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBtYXhWYWx1ZTtcbiAgfVxuICBsZXQgbnVtYmVyOiBudW1iZXIgfCBzdHJpbmcgPSBtYXRjaGVzWzFdO1xuICBjb25zdCB1bml0ID0gbWF0Y2hlc1syXTtcbiAgc3dpdGNoICh1bml0KSB7XG4gICAgY2FzZSBcImNoXCI6XG4gICAgICBudW1iZXIgPSBwYXJzZUZsb2F0KG51bWJlcikgKiA4Ljg5ODQzNzU7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiZW1cIjpcbiAgICBjYXNlIFwicmVtXCI6XG4gICAgICBudW1iZXIgPSBwYXJzZUZsb2F0KG51bWJlcikgKiAxNjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJleFwiOlxuICAgICAgbnVtYmVyID0gcGFyc2VGbG9hdChudW1iZXIpICogOC4yOTY4NzU7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwicHhcIjpcbiAgICAgIG51bWJlciA9IHBhcnNlRmxvYXQobnVtYmVyKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiArbnVtYmVyO1xufVxuXG5mdW5jdGlvbiBfdGVzdFF1ZXJ5KFxuICBkb3VibGVUZXN0VHJ1ZTogUmVnRXhwLFxuICBkb3VibGVUZXN0RmFsc2U6IFJlZ0V4cCxcbiAgc2luZ2xlVGVzdDogUmVnRXhwLFxuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocXVlcnk6IHN0cmluZykge1xuICAgIGlmIChkb3VibGVUZXN0VHJ1ZS50ZXN0KHF1ZXJ5KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChkb3VibGVUZXN0RmFsc2UudGVzdChxdWVyeSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHNpbmdsZVRlc3QudGVzdChxdWVyeSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIF90ZXN0SXNQcmludChhOiBzdHJpbmcsIGI6IHN0cmluZykge1xuICBjb25zdCBpc1ByaW50QSA9IGlzUHJpbnQudGVzdChhKTtcbiAgY29uc3QgaXNQcmludE9ubHlBID0gaXNQcmludE9ubHkudGVzdChhKTtcbiAgY29uc3QgaXNQcmludEIgPSBpc1ByaW50LnRlc3QoYik7XG4gIGNvbnN0IGlzUHJpbnRPbmx5QiA9IGlzUHJpbnRPbmx5LnRlc3QoYik7XG5cbiAgaWYgKGlzUHJpbnRBICYmIGlzUHJpbnRCKSB7XG4gICAgaWYgKCFpc1ByaW50T25seUEgJiYgaXNQcmludE9ubHlCKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgaWYgKGlzUHJpbnRPbmx5QSAmJiAhaXNQcmludE9ubHlCKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIHJldHVybiBhLmxvY2FsZUNvbXBhcmUoYik7XG4gIH1cbiAgaWYgKGlzUHJpbnRBKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgaWYgKGlzUHJpbnRCKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzb3J0Q1NTbXEoYTogc3RyaW5nLCBiOiBzdHJpbmcpIHtcbiAgaWYgKGEgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKGIgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBjb25zdCB0ZXN0SXNQcmludCA9IF90ZXN0SXNQcmludChhLCBiKTtcbiAgaWYgKHRlc3RJc1ByaW50ICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRlc3RJc1ByaW50O1xuICB9XG5cbiAgY29uc3QgbWluQSA9IGlzTWluV2lkdGgoYSkgfHwgaXNNaW5IZWlnaHQoYSk7XG4gIGNvbnN0IG1heEEgPSBpc01heFdpZHRoKGEpIHx8IGlzTWF4SGVpZ2h0KGEpO1xuICBjb25zdCBtaW5CID0gaXNNaW5XaWR0aChiKSB8fCBpc01pbkhlaWdodChiKTtcbiAgY29uc3QgbWF4QiA9IGlzTWF4V2lkdGgoYikgfHwgaXNNYXhIZWlnaHQoYik7XG5cbiAgaWYgKG1pbkEgJiYgbWF4Qikge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBpZiAobWF4QSAmJiBtaW5CKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBjb25zdCBsZW5ndGhBID0gX2dldFF1ZXJ5TGVuZ3RoKGEpO1xuICBjb25zdCBsZW5ndGhCID0gX2dldFF1ZXJ5TGVuZ3RoKGIpO1xuXG4gIGlmIChsZW5ndGhBID09PSBtYXhWYWx1ZSAmJiBsZW5ndGhCID09PSBtYXhWYWx1ZSkge1xuICAgIHJldHVybiBhLmxvY2FsZUNvbXBhcmUoYik7XG4gIH0gZWxzZSBpZiAobGVuZ3RoQSA9PT0gbWF4VmFsdWUpIHtcbiAgICByZXR1cm4gMTtcbiAgfSBlbHNlIGlmIChsZW5ndGhCID09PSBtYXhWYWx1ZSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIGlmIChsZW5ndGhBID4gbGVuZ3RoQikge1xuICAgIGlmIChtYXhBKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIHJldHVybiAxO1xuICB9XG5cbiAgaWYgKGxlbmd0aEEgPCBsZW5ndGhCKSB7XG4gICAgaWYgKG1heEEpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICByZXR1cm4gYS5sb2NhbGVDb21wYXJlKGIpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUVBLE1BQU1BLFdBQVcsR0FBRywwREFBcEI7QUFDQSxNQUFNQyxRQUFRLEdBQUcsMkJBQWpCO0FBQ0EsTUFBTUMsV0FBVyxHQUFHLHlEQUFwQjtBQUNBLE1BQU1DLFFBQVEsR0FBRywyQkFBakI7O0FBRUEsTUFBTUMsVUFBVSxHQUFHQyxVQUFVLENBQUNMLFdBQUQsRUFBY0UsV0FBZCxFQUEyQkQsUUFBM0IsQ0FBN0I7O0FBQ0EsTUFBTUssVUFBVSxHQUFHRCxVQUFVLENBQUNILFdBQUQsRUFBY0YsV0FBZCxFQUEyQkcsUUFBM0IsQ0FBN0I7O0FBRUEsTUFBTUksWUFBWSxHQUNoQiwyREFERjtBQUVBLE1BQU1DLFNBQVMsR0FBRyw0QkFBbEI7QUFDQSxNQUFNQyxZQUFZLEdBQ2hCLDJEQURGO0FBRUEsTUFBTUMsU0FBUyxHQUFHLDRCQUFsQjs7QUFFQSxNQUFNQyxXQUFX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","import SequentialIDGenerator from \"./sequential-id-generator\";\nimport sortMq from \"./sort-css-media-queries\";\nexport class MultiCache {\n constructor(idGenerator, onNewCache, onNewValue) {\n this.idGenerator = idGenerator;\n this.onNewCache = onNewCache;\n this.onNewValue = onNewValue;\n this.sortedCacheKeys = [];\n this.caches = {};\n }\n\n getCache(key) {\n if (!this.caches[key]) {\n const cache = new Cache(this.idGenerator, this.onNewValue);\n cache.key = key;\n this.sortedCacheKeys.push(key);\n this.sortedCacheKeys.sort(sortMq);\n const keyIndex = this.sortedCacheKeys.indexOf(key);\n const insertBeforeMedia = keyIndex < this.sortedCacheKeys.length - 1 ? this.sortedCacheKeys[keyIndex + 1] : void 0;\n this.caches[key] = cache;\n this.onNewCache(key, cache, insertBeforeMedia);\n }\n\n return this.caches[key];\n }\n\n getSortedCacheKeys() {\n return this.sortedCacheKeys;\n }\n\n}\nexport class Cache {\n constructor(idGenerator, onNewValue) {\n this.cache = {};\n this.idGenerator = idGenerator;\n this.onNewValue = onNewValue;\n }\n\n addValue(key, value) {\n const cached = this.cache[key];\n\n if (cached) {\n return cached;\n }\n\n const id = this.idGenerator.next();\n this.cache[key] = id;\n this.onNewValue(this, id, value);\n return id;\n }\n\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTZXF1ZW50aWFsSURHZW5lcmF0b3IiLCJzb3J0TXEiLCJNdWx0aUNhY2hlIiwiY29uc3RydWN0b3IiLCJpZEdlbmVyYXRvciIsIm9uTmV3Q2FjaGUiLCJvbk5ld1ZhbHVlIiwic29ydGVkQ2FjaGVLZXlzIiwiY2FjaGVzIiwiZ2V0Q2FjaGUiLCJrZXkiLCJjYWNoZSIsIkNhY2hlIiwicHVzaCIsInNvcnQiLCJrZXlJbmRleCIsImluZGV4T2YiLCJpbnNlcnRCZWZvcmVNZWRpYSIsImxlbmd0aCIsImdldFNvcnRlZENhY2hlS2V5cyIsImFkZFZhbHVlIiwidmFsdWUiLCJjYWNoZWQiLCJpZCIsIm5leHQiXSwic291cmNlcyI6WyJzcmMvY2FjaGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNlcXVlbnRpYWxJREdlbmVyYXRvciBmcm9tIFwiLi9zZXF1ZW50aWFsLWlkLWdlbmVyYXRvclwiO1xuaW1wb3J0IHNvcnRNcSBmcm9tIFwiLi9zb3J0LWNzcy1tZWRpYS1xdWVyaWVzXCI7XG5cbnR5cGUgT25OZXdDYWNoZUZuPFQ+ID0gKFxuICBrZXk6IHN0cmluZyxcbiAgY2FjaGU6IENhY2hlPFQ+LFxuICB2YWx1ZT86IHN0cmluZyB8IG51bGwsXG4pID0+IGFueTtcbnR5cGUgT25OZXdWYWx1ZUZuPFQ+ID0gKGNhY2hlOiBDYWNoZTxUPiwgaWQ6IHN0cmluZywgdmFsdWU6IFQpID0+IGFueTtcblxuZXhwb3J0IGNsYXNzIE11bHRpQ2FjaGU8VD4ge1xuICBjYWNoZXM6IHtcbiAgICBbeDogc3RyaW5nXTogQ2FjaGU8VD47XG4gIH07XG4gIGlkR2VuZXJhdG9yOiBTZXF1ZW50aWFsSURHZW5lcmF0b3I7XG4gIG9uTmV3Q2FjaGU6IE9uTmV3Q2FjaGVGbjxUPjtcbiAgb25OZXdWYWx1ZTogT25OZXdWYWx1ZUZuPFQ+O1xuICBzb3J0ZWRDYWNoZUtleXM6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkR2VuZXJhdG9yOiBTZXF1ZW50aWFsSURHZW5lcmF0b3IsXG4gICAgb25OZXdDYWNoZTogT25OZXdDYWNoZUZuPFQ+LFxuICAgIG9uTmV3VmFsdWU6IE9uTmV3VmFsdWVGbjxUPixcbiAgKSB7XG4gICAgdGhpcy5pZEdlbmVyYXRvciA9IGlkR2VuZXJhdG9yO1xuICAgIHRoaXMub25OZXdDYWNoZSA9IG9uTmV3Q2FjaGU7XG4gICAgdGhpcy5vbk5ld1ZhbHVlID0gb25OZXdWYWx1ZTtcbiAgICB0aGlzLnNvcnRlZENhY2hlS2V5cyA9IFtdO1xuICAgIHRoaXMuY2FjaGVzID0ge307XG4gIH1cblxuICBnZXRDYWNoZShrZXk6IHN0cmluZyk6IENhY2hlPFQ+IHtcbiAgICBpZiAoIXRoaXMuY2FjaGVzW2tleV0pIHtcbiAgICAgIGNvbnN0IGNhY2hlID0gbmV3IENhY2hlKHRoaXMuaWRHZW5lcmF0b3IsIHRoaXMub25OZXdWYWx1ZSk7XG4gICAgICBjYWNoZS5rZXkgPSBrZXk7XG4gICAgICB0aGlzLnNvcnRlZENhY2hlS2V5cy5wdXNoKGtleSk7XG4gICAgICB0aGlzLnNvcnRlZENhY2hlS2V5cy5zb3J0KHNvcnRNcSk7XG4gICAgICBjb25zdCBrZXlJbmRleCA9IHRoaXMuc29ydGVkQ2FjaGVLZXlzLmluZGV4T2Yoa2V5KTtcbiAgICAgIGNvbnN0IGluc2VydEJlZm9yZU1lZGlhID1cbiAgICAgICAga2V5SW5kZXggPCB0aGlzLnNvcnRlZENhY2hlS2V5cy5sZW5ndGggLSAxXG4gICAgICAgICAgPyB0aGlzLnNvcnRlZENhY2hlS2V5c1trZXlJbmRleCArIDFdXG4gICAgICAgICAgOiB2b2lkIDA7XG4gICAgICB0aGlzLmNhY2hlc1trZXldID0gY2FjaGU7XG4gICAgICB0aGlzLm9uTmV3Q2FjaGUoa2V5LCBjYWNoZSwgaW5zZXJ0QmVmb3JlTWVkaWEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jYWNoZXNba2V5XTtcbiAgfVxuXG4gIGdldFNvcnRlZENhY2hlS2V5cygpIHtcbiAgICByZXR1cm4gdGhpcy5zb3J0ZWRDYWNoZUtleXM7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENhY2hlPFQ+IHtcbiAgY2FjaGU6IHtcbiAgICBbeDogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xuICBpZEdlbmVyYXRvcjogU2VxdWVudGlhbElER2VuZXJhdG9yO1xuICBrZXk6IHN0cmluZztcbiAgb25OZXdWYWx1ZTogKGNhY2hlOiBDYWNoZTxUPiwgaWQ6IHN0cmluZywgdmFsdWU6IGFueSkgPT4gYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkR2VuZXJhdG9yOiBTZXF1ZW50aWFsSURHZW5lcmF0b3IsXG4gICAgb25OZXdWYWx1ZTogKGNhY2hlOiBDYWNoZTxUPiwgaWQ6IHN0cmluZywgdmFsdWU6IGFueSkgPT4gYW55LFxuICApIHtcbiAgICB0aGlzLmNhY2hlID0ge307XG4gICAgdGhpcy5pZEdlbmVyYXRvciA9IGlkR2VuZXJhdG9yO1xuICAgIHRoaXMub25OZXdWYWx1ZSA9IG9uTmV3VmFsdWU7XG4gIH1cblxuICBhZGRWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IFQpIHtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmNhY2hlW2tleV07XG4gICAgaWYgKGNhY2hlZCkge1xuICAgICAgcmV0dXJuIGNhY2hlZDtcbiAgICB9XG4gICAgY29uc3QgaWQgPSB0aGlzLmlkR2VuZXJhdG9yLm5leHQoKTtcbiAgICB0aGlzLmNhY2hlW2tleV0gPSBpZDtcbiAgICB0aGlzLm9uTmV3VmFsdWUodGhpcywgaWQsIHZhbHVlKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EscUJBQVAsTUFBa0MsMkJBQWxDO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQiwwQkFBbkI7QUFTQSxPQUFPLE1BQU1DLFVBQU4sQ0FBb0I7RUFTekJDLFdBQVcsQ0FDVEMsV0FEUyxFQUVUQyxVQUZTLEVBR1RDLFVBSFMsRUFJVDtJQUNBLEtBQUtGLFdBQUwsR0FBbUJBLFdBQW5CO0lBQ0EsS0FBS0MsVUFBTCxHQUFrQkEsVUFBbEI7SUFDQSxLQUFLQyxVQUFMLEdBQWtCQSxVQUFsQjtJQUNBLEtBQUtDLGVBQUwsR0FBdUIsRUFBdkI7SUFDQSxLQUFLQyxNQUFMLEdBQWMsRUFBZDtFQUNEOztFQUVEQyxRQUFRLENBQUNDLEdBQUQsRUFBd0I7SUFDOUIsSUFBSSxDQUFDLEtBQUtGLE1BQUwsQ0FBWUUsR0FBWixDQUFMLEVBQXVCO01BQ3JCLE1BQU1DLEtBQUssR0FBRyxJQUFJQyxLQUFKLENBQVUsS0FBS1IsV0FBZixFQUE0QixLQUFLRSxVQUFqQyxDQUFkO01BQ0FLLEtBQUssQ0FBQ0QsR0FBTixHQUFZQSxHQUFaO01BQ0EsS0FBS0gsZUFBTCxDQUFxQk0sSUFBckIsQ0FBMEJILEdBQTFCO01BQ0EsS0FBS0gsZUFBTCxDQUFxQk8sSUFBckIsQ0FBMEJiLE1BQTFCO01BQ0EsTUFBTWMsUUFBUSxHQUFHLEtBQUtSLGVBQUwsQ0FBcUJTLE9BQXJCLENBQTZCTixHQUE3QixDQUFqQjtNQUNBLE1BQU1PLGlCQUFpQixHQUNyQkYsUUFBUSxHQUFHLEtBQUtSLGVBQUwsQ0FBcUJXLE1BQXJCLEdBQThCLENBQXpDLEdBQ0ksS0FBS1gsZUFBTCxDQUFxQlEsUUFBUSxHQUFHLENBQWhDLENBREosR0FFSSxLQUFLLENBSFg7TUFJQSxLQUFLUCxNQUFMLENBQVlFLEdBQVosSUFBbUJDLEtBQW5CO01BQ0EsS0FBS04sVUFBTCxDQUFnQkssR0FBaEIsRUFBcUJDLEtBQXJCLEVBQTRCTSxpQkFBNUI7SUFDRDs7SUFDRCxPQUFPLEtBQUtULE1BQUwsQ0FBWUUsR0FBWixDQUFQO0VBQ0Q7O0VBRURTLGtCQUFrQixHQUFHO0lBQ25CLE9BQU8sS0FBS1osZUFBWjtFQUNEOztBQXhDd0I7QUEyQzNCLE9BQU8sTUFBTUssS0FBTixDQUFlO0VBUXBCVCxXQUFXLENBQ1RDLFdBRFMsRUFFVEUsVUFGUyxFQUdUO0lBQ0EsS0FBS0ssS0FBTCxHQUFhLEVBQWI7SUFDQSxLQUFLUCxXQUFMLEdBQW1CQSxXQUFuQjtJQUNBLEtBQUtFLFVBQUwsR0FBa0JBLFVBQWxCO0VBQ0Q7O0VBRURjLFFBQVEsQ0FBQ1YsR0FBRCxFQUFjVyxLQUFkLEVBQXdCO0lBQzlCLE1BQU1DLE1BQU0sR0FBRyxLQUFLWCxLQUFMLENBQVdELEdBQVgsQ0FBZjs7SUFDQSxJQUFJWSxNQUFKLEVBQVk7TUFDVixPQUFPQSxNQUFQO0lBQ0Q7O0lBQ0QsTUFBTUMsRUFBRSxHQUFHLEtBQUtuQixXQUFMLENBQWlCb0IsSUFBakIsRUFBWDtJQUNBLEtBQUtiLEtBQUwsQ0FBV0QsR0FBWCxJQUFrQmEsRUFBbEI7SUFDQSxLQUFLakIsVUFBTCxDQUFnQixJQUFoQixFQUFzQmlCLEVBQXRCLEVBQTBCRixLQUExQjtJQUNBLE9BQU9FLEVBQVA7RUFDRDs7QUExQm1CIn0=","const uppercasePattern = /[A-Z]/g;\nconst msPattern = /^ms-/;\nconst cache = {};\nexport default function hyphenateStyleName(prop) {\n return prop in cache ? cache[prop] : cache[prop] = prop.replace(uppercasePattern, \"-$&\").toLowerCase().replace(msPattern, \"-ms-\");\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1cHBlcmNhc2VQYXR0ZXJuIiwibXNQYXR0ZXJuIiwiY2FjaGUiLCJoeXBoZW5hdGVTdHlsZU5hbWUiLCJwcm9wIiwicmVwbGFjZSIsInRvTG93ZXJDYXNlIl0sInNvdXJjZXMiOlsic3JjL2h5cGhlbmF0ZS1zdHlsZS1uYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHVwcGVyY2FzZVBhdHRlcm4gPSAvW0EtWl0vZztcbmNvbnN0IG1zUGF0dGVybiA9IC9ebXMtLztcbmNvbnN0IGNhY2hlID0ge307XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGh5cGhlbmF0ZVN0eWxlTmFtZShwcm9wOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcHJvcCBpbiBjYWNoZVxuICAgID8gY2FjaGVbcHJvcF1cbiAgICA6IChjYWNoZVtwcm9wXSA9IHByb3BcbiAgICAgICAgLnJlcGxhY2UodXBwZXJjYXNlUGF0dGVybiwgXCItJCZcIilcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UobXNQYXR0ZXJuLCBcIi1tcy1cIikpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxnQkFBZ0IsR0FBRyxRQUF6QjtBQUNBLE1BQU1DLFNBQVMsR0FBRyxNQUFsQjtBQUNBLE1BQU1DLEtBQUssR0FBRyxFQUFkO0FBRUEsZUFBZSxTQUFTQyxrQkFBVCxDQUE0QkMsSUFBNUIsRUFBa0Q7RUFDL0QsT0FBT0EsSUFBSSxJQUFJRixLQUFSLEdBQ0hBLEtBQUssQ0FBQ0UsSUFBRCxDQURGLEdBRUZGLEtBQUssQ0FBQ0UsSUFBRCxDQUFMLEdBQWNBLElBQUksQ0FDaEJDLE9BRFksQ0FDSkwsZ0JBREksRUFDYyxLQURkLEVBRVpNLFdBRlksR0FHWkQsT0FIWSxDQUdKSixTQUhJLEVBR08sTUFIUCxDQUZuQjtBQU1EIn0=","export default function capitalizeString(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}","import capitalizeString from './capitalizeString';\n\n\nexport default function prefixProperty(prefixProperties, property, style) {\n if (prefixProperties.hasOwnProperty(property)) {\n var newStyle = {};\n var requiredPrefixes = prefixProperties[property];\n var capitalizedProperty = capitalizeString(property);\n var keys = Object.keys(style);\n for (var i = 0; i < keys.length; i++) {\n var styleProperty = keys[i];\n if (styleProperty === property) {\n for (var j = 0; j < requiredPrefixes.length; j++) {\n newStyle[requiredPrefixes[j] + capitalizedProperty] = style[property];\n }\n }\n newStyle[styleProperty] = style[styleProperty];\n }\n return newStyle;\n }\n return style;\n}","export default function prefixValue(plugins, property, value, style, metaData) {\n for (var i = 0, len = plugins.length; i < len; ++i) {\n var processedValue = plugins[i](property, value, style, metaData);\n\n // we can stop processing if a value is returned\n // as all plugin criteria are unique\n if (processedValue) {\n return processedValue;\n }\n }\n}","function addIfNew(list, value) {\n if (list.indexOf(value) === -1) {\n list.push(value);\n }\n}\n\nexport default function addNewValuesOnly(list, values) {\n if (Array.isArray(values)) {\n for (var i = 0, len = values.length; i < len; ++i) {\n addIfNew(list, values[i]);\n }\n } else {\n addIfNew(list, values);\n }\n}","export default function isObject(value) {\n return value instanceof Object && !Array.isArray(value);\n}","\nvar w = [\"Webkit\"];\nvar m = [\"Moz\"];\nvar ms = [\"ms\"];\nvar wm = [\"Webkit\", \"Moz\"];\nvar wms = [\"Webkit\", \"ms\"];\nvar wmms = [\"Webkit\", \"Moz\", \"ms\"];\n\nexport default {\n plugins: [],\n prefixMap: { \"appearance\": wm, \"textEmphasisPosition\": w, \"textEmphasis\": w, \"textEmphasisStyle\": w, \"textEmphasisColor\": w, \"boxDecorationBreak\": w, \"maskImage\": w, \"maskMode\": w, \"maskRepeat\": w, \"maskPosition\": w, \"maskClip\": w, \"maskOrigin\": w, \"maskSize\": w, \"maskComposite\": w, \"mask\": w, \"maskBorderSource\": w, \"maskBorderMode\": w, \"maskBorderSlice\": w, \"maskBorderWidth\": w, \"maskBorderOutset\": w, \"maskBorderRepeat\": w, \"maskBorder\": w, \"maskType\": w, \"textDecorationStyle\": w, \"textDecorationSkip\": w, \"textDecorationLine\": w, \"textDecorationColor\": w, \"userSelect\": wmms, \"backdropFilter\": w, \"fontKerning\": w, \"scrollSnapType\": wms, \"scrollSnapPointsX\": wms, \"scrollSnapPointsY\": wms, \"scrollSnapDestination\": wms, \"scrollSnapCoordinate\": wms, \"clipPath\": w, \"shapeImageThreshold\": w, \"shapeImageMargin\": w, \"shapeImageOutside\": w, \"filter\": w, \"hyphens\": wms, \"flowInto\": wms, \"flowFrom\": wms, \"breakBefore\": wms, \"breakAfter\": wms, \"breakInside\": wms, \"regionFragment\": wms, \"writingMode\": wms, \"textOrientation\": w, \"tabSize\": m, \"fontFeatureSettings\": w, \"columnCount\": w, \"columnFill\": w, \"columnGap\": w, \"columnRule\": w, \"columnRuleColor\": w, \"columnRuleStyle\": w, \"columnRuleWidth\": w, \"columns\": w, \"columnSpan\": w, \"columnWidth\": w, \"wrapFlow\": ms, \"wrapThrough\": ms, \"wrapMargin\": ms, \"textSizeAdjust\": wms }\n};","var prefixes = ['-webkit-', '-moz-', ''];\n\nvar values = {\n 'zoom-in': true,\n 'zoom-out': true,\n grab: true,\n grabbing: true\n};\n\nexport default function cursor(property, value) {\n if (property === 'cursor' && values.hasOwnProperty(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}","import isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue';\n\n// http://caniuse.com/#search=cross-fade\nvar prefixes = ['-webkit-', ''];\n\nexport default function crossFade(property, value) {\n if (typeof value === 'string' && !isPrefixedValue(value) && value.indexOf('cross-fade(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/cross-fade\\(/g, prefix + 'cross-fade(');\n });\n }\n}","import isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue';\n\n// http://caniuse.com/#feat=css-filter-function\nvar prefixes = ['-webkit-', ''];\n\nexport default function filter(property, value) {\n if (typeof value === 'string' && !isPrefixedValue(value) && value.indexOf('filter(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/filter\\(/g, prefix + 'filter(');\n });\n }\n}","var values = {\n flex: ['-webkit-box', '-moz-box', '-ms-flexbox', '-webkit-flex', 'flex'],\n 'inline-flex': ['-webkit-inline-box', '-moz-inline-box', '-ms-inline-flexbox', '-webkit-inline-flex', 'inline-flex']\n};\n\nexport default function flex(property, value) {\n if (property === 'display' && values.hasOwnProperty(value)) {\n return values[value];\n }\n}","var alternativeValues = {\n 'space-around': 'justify',\n 'space-between': 'justify',\n 'flex-start': 'start',\n 'flex-end': 'end',\n 'wrap-reverse': 'multiple',\n wrap: 'multiple'\n};\n\nvar alternativeProps = {\n alignItems: 'WebkitBoxAlign',\n justifyContent: 'WebkitBoxPack',\n flexWrap: 'WebkitBoxLines',\n flexGrow: 'WebkitBoxFlex'\n};\n\nexport default function flexboxOld(property, value, style) {\n if (property === 'flexDirection' && typeof value === 'string') {\n if (value.indexOf('column') > -1) {\n style.WebkitBoxOrient = 'vertical';\n } else {\n style.WebkitBoxOrient = 'horizontal';\n }\n if (value.indexOf('reverse') > -1) {\n style.WebkitBoxDirection = 'reverse';\n } else {\n style.WebkitBoxDirection = 'normal';\n }\n }\n if (alternativeProps.hasOwnProperty(property)) {\n style[alternativeProps[property]] = alternativeValues[value] || value;\n }\n}","import isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue';\n\nvar prefixes = ['-webkit-', '-moz-', ''];\nvar values = /linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient/gi;\n\nexport default function gradient(property, value) {\n if (typeof value === 'string' && !isPrefixedValue(value) && values.test(value)) {\n return prefixes.map(function (prefix) {\n return value.replace(values, function (grad) {\n return prefix + grad;\n });\n });\n }\n}","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\"); } }; }();\n\nfunction isSimplePositionValue(value) {\n return typeof value === 'number' && !isNaN(value);\n}\n\nfunction isComplexSpanValue(value) {\n return typeof value === 'string' && value.includes('/');\n}\n\nvar alignmentValues = ['center', 'end', 'start', 'stretch'];\n\nvar displayValues = {\n 'inline-grid': ['-ms-inline-grid', 'inline-grid'],\n grid: ['-ms-grid', 'grid']\n};\n\nvar propertyConverters = {\n alignSelf: function alignSelf(value, style) {\n if (alignmentValues.indexOf(value) > -1) {\n style.msGridRowAlign = value;\n }\n },\n\n gridColumn: function gridColumn(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridColumn = value;\n } else if (isComplexSpanValue(value)) {\n var _value$split = value.split('/'),\n _value$split2 = _slicedToArray(_value$split, 2),\n start = _value$split2[0],\n end = _value$split2[1];\n\n propertyConverters.gridColumnStart(+start, style);\n\n var _end$split = end.split(/ ?span /),\n _end$split2 = _slicedToArray(_end$split, 2),\n maybeSpan = _end$split2[0],\n maybeNumber = _end$split2[1];\n\n if (maybeSpan === '') {\n propertyConverters.gridColumnEnd(+start + +maybeNumber, style);\n } else {\n propertyConverters.gridColumnEnd(+end, style);\n }\n } else {\n propertyConverters.gridColumnStart(value, style);\n }\n },\n\n gridColumnEnd: function gridColumnEnd(value, style) {\n var msGridColumn = style.msGridColumn;\n\n if (isSimplePositionValue(value) && isSimplePositionValue(msGridColumn)) {\n style.msGridColumnSpan = value - msGridColumn;\n }\n },\n\n gridColumnStart: function gridColumnStart(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridColumn = value;\n }\n },\n\n gridRow: function gridRow(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridRow = value;\n } else if (isComplexSpanValue(value)) {\n var _value$split3 = value.split('/'),\n _value$split4 = _slicedToArray(_value$split3, 2),\n start = _value$split4[0],\n end = _value$split4[1];\n\n propertyConverters.gridRowStart(+start, style);\n\n var _end$split3 = end.split(/ ?span /),\n _end$split4 = _slicedToArray(_end$split3, 2),\n maybeSpan = _end$split4[0],\n maybeNumber = _end$split4[1];\n\n if (maybeSpan === '') {\n propertyConverters.gridRowEnd(+start + +maybeNumber, style);\n } else {\n propertyConverters.gridRowEnd(+end, style);\n }\n } else {\n propertyConverters.gridRowStart(value, style);\n }\n },\n\n gridRowEnd: function gridRowEnd(value, style) {\n var msGridRow = style.msGridRow;\n\n if (isSimplePositionValue(value) && isSimplePositionValue(msGridRow)) {\n style.msGridRowSpan = value - msGridRow;\n }\n },\n\n gridRowStart: function gridRowStart(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridRow = value;\n }\n },\n\n gridTemplateColumns: function gridTemplateColumns(value, style) {\n style.msGridColumns = value;\n },\n\n gridTemplateRows: function gridTemplateRows(value, style) {\n style.msGridRows = value;\n },\n\n justifySelf: function justifySelf(value, style) {\n if (alignmentValues.indexOf(value) > -1) {\n style.msGridColumnAlign = value;\n }\n }\n};\n\nexport default function grid(property, value, style) {\n if (property === 'display' && value in displayValues) {\n return displayValues[value];\n }\n\n if (property in propertyConverters) {\n var propertyConverter = propertyConverters[property];\n propertyConverter(value, style);\n }\n}","import isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue';\n\n// http://caniuse.com/#feat=css-image-set\nvar prefixes = ['-webkit-', ''];\n\nexport default function imageSet(property, value) {\n if (typeof value === 'string' && !isPrefixedValue(value) && value.indexOf('image-set(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/image-set\\(/g, prefix + 'image-set(');\n });\n }\n}","var alternativeProps = {\n marginBlockStart: ['WebkitMarginBefore'],\n marginBlockEnd: ['WebkitMarginAfter'],\n marginInlineStart: ['WebkitMarginStart', 'MozMarginStart'],\n marginInlineEnd: ['WebkitMarginEnd', 'MozMarginEnd'],\n paddingBlockStart: ['WebkitPaddingBefore'],\n paddingBlockEnd: ['WebkitPaddingAfter'],\n paddingInlineStart: ['WebkitPaddingStart', 'MozPaddingStart'],\n paddingInlineEnd: ['WebkitPaddingEnd', 'MozPaddingEnd'],\n borderBlockStart: ['WebkitBorderBefore'],\n borderBlockStartColor: ['WebkitBorderBeforeColor'],\n borderBlockStartStyle: ['WebkitBorderBeforeStyle'],\n borderBlockStartWidth: ['WebkitBorderBeforeWidth'],\n borderBlockEnd: ['WebkitBorderAfter'],\n borderBlockEndColor: ['WebkitBorderAfterColor'],\n borderBlockEndStyle: ['WebkitBorderAfterStyle'],\n borderBlockEndWidth: ['WebkitBorderAfterWidth'],\n borderInlineStart: ['WebkitBorderStart', 'MozBorderStart'],\n borderInlineStartColor: ['WebkitBorderStartColor', 'MozBorderStartColor'],\n borderInlineStartStyle: ['WebkitBorderStartStyle', 'MozBorderStartStyle'],\n borderInlineStartWidth: ['WebkitBorderStartWidth', 'MozBorderStartWidth'],\n borderInlineEnd: ['WebkitBorderEnd', 'MozBorderEnd'],\n borderInlineEndColor: ['WebkitBorderEndColor', 'MozBorderEndColor'],\n borderInlineEndStyle: ['WebkitBorderEndStyle', 'MozBorderEndStyle'],\n borderInlineEndWidth: ['WebkitBorderEndWidth', 'MozBorderEndWidth']\n};\n\nexport default function logical(property, value, style) {\n if (Object.prototype.hasOwnProperty.call(alternativeProps, property)) {\n var alternativePropList = alternativeProps[property];\n for (var i = 0, len = alternativePropList.length; i < len; ++i) {\n style[alternativePropList[i]] = value;\n }\n }\n}","var prefixes = ['-webkit-', '-moz-', ''];\n\nvar properties = {\n maxHeight: true,\n maxWidth: true,\n width: true,\n height: true,\n columnWidth: true,\n minWidth: true,\n minHeight: true\n};\nvar values = {\n 'min-content': true,\n 'max-content': true,\n 'fill-available': true,\n 'fit-content': true,\n 'contain-floats': true\n};\n\nexport default function sizing(property, value) {\n if (properties.hasOwnProperty(property) && values.hasOwnProperty(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}","import hyphenateProperty from 'css-in-js-utils/lib/hyphenateProperty';\nimport isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue';\n\nimport capitalizeString from '../utils/capitalizeString';\n\nvar properties = {\n transition: true,\n transitionProperty: true,\n WebkitTransition: true,\n WebkitTransitionProperty: true,\n MozTransition: true,\n MozTransitionProperty: true\n};\n\nvar prefixMapping = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n ms: '-ms-'\n};\n\nfunction prefixValue(value, propertyPrefixMap) {\n if (isPrefixedValue(value)) {\n return value;\n }\n\n // only split multi values, not cubic beziers\n var multipleValues = value.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g);\n\n for (var i = 0, len = multipleValues.length; i < len; ++i) {\n var singleValue = multipleValues[i];\n var values = [singleValue];\n for (var property in propertyPrefixMap) {\n var dashCaseProperty = hyphenateProperty(property);\n\n if (singleValue.indexOf(dashCaseProperty) > -1 && dashCaseProperty !== 'order') {\n var prefixes = propertyPrefixMap[property];\n for (var j = 0, pLen = prefixes.length; j < pLen; ++j) {\n // join all prefixes and create a new value\n values.unshift(singleValue.replace(dashCaseProperty, prefixMapping[prefixes[j]] + dashCaseProperty));\n }\n }\n }\n\n multipleValues[i] = values.join(',');\n }\n\n return multipleValues.join(',');\n}\n\nexport default function transition(property, value, style, propertyPrefixMap) {\n // also check for already prefixed transitions\n if (typeof value === 'string' && properties.hasOwnProperty(property)) {\n var outputValue = prefixValue(value, propertyPrefixMap);\n // if the property is already prefixed\n var webkitOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (val) {\n return !/-moz-|-ms-/.test(val);\n }).join(',');\n\n if (property.indexOf('Webkit') > -1) {\n return webkitOutput;\n }\n\n var mozOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (val) {\n return !/-webkit-|-ms-/.test(val);\n }).join(',');\n\n if (property.indexOf('Moz') > -1) {\n return mozOutput;\n }\n\n style['Webkit' + capitalizeString(property)] = webkitOutput;\n style['Moz' + capitalizeString(property)] = mozOutput;\n return outputValue;\n }\n}","import createPrefixer from './createPrefixer';\n\nimport data from './data';\n\nimport backgroundClip from './plugins/backgroundClip';\nimport cursor from './plugins/cursor';\nimport crossFade from './plugins/crossFade';\nimport filter from './plugins/filter';\nimport flex from './plugins/flex';\nimport flexboxOld from './plugins/flexboxOld';\nimport gradient from './plugins/gradient';\nimport grid from './plugins/grid';\nimport imageSet from './plugins/imageSet';\nimport logical from './plugins/logical';\nimport position from './plugins/position';\nimport sizing from './plugins/sizing';\nimport transition from './plugins/transition';\n\nvar plugins = [backgroundClip, crossFade, cursor, filter, flexboxOld, gradient, grid, imageSet, logical, position, sizing, transition, flex];\n\nvar prefix = createPrefixer({\n prefixMap: data.prefixMap,\n plugins: plugins\n});\n\nexport { createPrefixer, prefix };","\n// https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip#Browser_compatibility\nexport default function backgroundClip(property, value) {\n if (typeof value === 'string' && value === 'text') {\n return ['-webkit-text', 'text'];\n }\n}","export default function position(property, value) {\n if (property === 'position' && value === 'sticky') {\n return ['-webkit-sticky', 'sticky'];\n }\n}","import prefixProperty from './utils/prefixProperty';\nimport prefixValue from './utils/prefixValue';\n\nimport addNewValuesOnly from './utils/addNewValuesOnly';\nimport isObject from './utils/isObject';\n\nexport default function createPrefixer(_ref) {\n var prefixMap = _ref.prefixMap,\n plugins = _ref.plugins;\n\n return function prefix(style) {\n for (var property in style) {\n var value = style[property];\n\n // handle nested objects\n if (isObject(value)) {\n style[property] = prefix(value);\n // handle array values\n } else if (Array.isArray(value)) {\n var combinedValue = [];\n\n for (var i = 0, len = value.length; i < len; ++i) {\n var processedValue = prefixValue(plugins, property, value[i], style, prefixMap);\n addNewValuesOnly(combinedValue, processedValue || value[i]);\n }\n\n // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n if (combinedValue.length > 0) {\n style[property] = combinedValue;\n }\n } else {\n var _processedValue = prefixValue(plugins, property, value, style, prefixMap);\n\n // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n if (_processedValue) {\n style[property] = _processedValue;\n }\n\n style = prefixProperty(prefixMap, property, style);\n }\n }\n\n return style;\n };\n}","import hyphenate from \"./hyphenate-style-name\";\nimport { validateNoMixedHand } from \"./validate-no-mixed-hand\";\nimport { prefix } from \"inline-style-prefixer\";\nimport { MultiCache } from \"./cache\";\nexport default function injectStylePrefixed(styleCache, styles, media, pseudo) {\n const cache = styleCache.getCache(media);\n let classString = \"\";\n\n for (const originalKey in styles) {\n const originalVal = styles[originalKey];\n\n if (originalVal === void 0 || originalVal === null) {\n continue;\n }\n\n if (typeof originalVal !== \"object\") {\n // Non-null and non-undefined primitive value\n if (process.env.NODE_ENV !== \"production\") {\n validateValueType(originalVal, originalKey);\n }\n\n const propValPair = `${hyphenate(originalKey)}:${originalVal}`;\n const key = `${pseudo}${propValPair}`;\n const cachedId = cache.cache[key];\n\n if (cachedId !== void 0) {\n // cache hit\n classString += \" \" + cachedId;\n continue;\n } else {\n // cache miss\n let block = \"\";\n const prefixed = prefix({\n [originalKey]: originalVal\n });\n\n for (const prefixedKey in prefixed) {\n const prefixedVal = prefixed[prefixedKey];\n const prefixedValType = typeof prefixedVal;\n\n if (prefixedValType === \"string\" || prefixedValType === \"number\") {\n const prefixedPair = `${hyphenate(prefixedKey)}:${prefixedVal}`;\n\n if (prefixedPair !== propValPair) {\n block += `${prefixedPair};`;\n }\n } else if (Array.isArray(prefixedVal)) {\n const hyphenated = hyphenate(prefixedKey);\n\n for (let i = 0; i < prefixedVal.length; i++) {\n const prefixedPair = `${hyphenated}:${prefixedVal[i]}`;\n\n if (prefixedPair !== propValPair) {\n block += `${prefixedPair};`;\n }\n }\n }\n }\n\n block += propValPair; // ensure original prop/val is last (for hydration)\n\n const id = cache.addValue(key, {\n pseudo,\n block\n });\n classString += \" \" + id;\n }\n } else {\n // Non-null object value\n if (originalKey[0] === \":\") {\n classString += \" \" + injectStylePrefixed(styleCache, originalVal, media, pseudo + originalKey);\n } else if (originalKey.substring(0, 6) === \"@media\") {\n classString += \" \" + injectStylePrefixed(styleCache, originalVal, originalKey.substr(7), pseudo);\n }\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n const conflicts = validateNoMixedHand(styles);\n\n if (conflicts.length) {\n conflicts.forEach(({\n shorthand,\n longhand\n }) => {\n const short = JSON.stringify({\n [shorthand.property]: shorthand.value\n });\n const long = JSON.stringify({\n [longhand.property]: longhand.value\n }); // eslint-disable-next-line no-console\n\n console.warn(`Styles \\`${short}\\` and \\`${long}\\` in object yielding class \"${classString.slice(1)}\" may result in unexpected behavior. Mixing shorthand and longhand properties within the same style object is unsupported with atomic rendering.`);\n });\n }\n } // remove leading space\n\n\n return classString.slice(1);\n}\n\nfunction validateValueType(value, key) {\n if (value === null || Array.isArray(value) || typeof value !== \"number\" && typeof value !== \"string\") {\n throw new Error(`Unsupported style value: ${JSON.stringify(value)} used in property ${JSON.stringify(key)}`);\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJoeXBoZW5hdGUiLCJ2YWxpZGF0ZU5vTWl4ZWRIYW5kIiwicHJlZml4IiwiTXVsdGlDYWNoZSIsImluamVjdFN0eWxlUHJlZml4ZWQiLCJzdHlsZUNhY2hlIiwic3R5bGVzIiwibWVkaWEiLCJwc2V1ZG8iLCJjYWNoZSIsImdldENhY2hlIiwiY2xhc3NTdHJpbmciLCJvcmlnaW5hbEtleSIsIm9yaWdpbmFsVmFsIiwidmFsaWRhdGVWYWx1ZVR5cGUiLCJwcm9wVmFsUGFpciIsImtleSIsImNhY2hlZElkIiwiYmxvY2siLCJwcmVmaXhlZCIsInByZWZpeGVkS2V5IiwicHJlZml4ZWRWYWwiLCJwcmVmaXhlZFZhbFR5cGUiLCJwcmVmaXhlZFBhaXIiLCJBcnJheSIsImlzQXJyYXkiLCJoeXBoZW5hdGVkIiwiaSIsImxlbmd0aCIsImlkIiwiYWRkVmFsdWUiLCJzdWJzdHJpbmciLCJzdWJzdHIiLCJjb25mbGljdHMiLCJmb3JFYWNoIiwic2hvcnRoYW5kIiwibG9uZ2hhbmQiLCJzaG9ydCIsIkpTT04iLCJzdHJpbmdpZnkiLCJwcm9wZXJ0eSIsInZhbHVlIiwibG9uZyIsImNvbnNvbGUiLCJ3YXJuIiwic2xpY2UiLCJFcnJvciJdLCJzb3VyY2VzIjpbInNyYy9pbmplY3Qtc3R5bGUtcHJlZml4ZWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZGVjbGFyZSB2YXIgX19ERVZfXzogYm9vbGVhbjtcblxuaW1wb3J0IGh5cGhlbmF0ZSBmcm9tIFwiLi9oeXBoZW5hdGUtc3R5bGUtbmFtZVwiO1xuaW1wb3J0IHt2YWxpZGF0ZU5vTWl4ZWRIYW5kfSBmcm9tIFwiLi92YWxpZGF0ZS1uby1taXhlZC1oYW5kXCI7XG5pbXBvcnQge3ByZWZpeH0gZnJvbSBcImlubGluZS1zdHlsZS1wcmVmaXhlclwiO1xuXG5pbXBvcnQgdHlwZSB7U3R5bGVPYmplY3R9IGZyb20gXCJzdHlsZXRyb24tc3RhbmRhcmRcIjtcblxuaW1wb3J0IHtNdWx0aUNhY2hlfSBmcm9tIFwiLi9jYWNoZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbmplY3RTdHlsZVByZWZpeGVkKFxuICBzdHlsZUNhY2hlOiBNdWx0aUNhY2hlPHtcbiAgICBwc2V1ZG86IHN0cmluZztcbiAgICBibG9jazogc3RyaW5nO1xuICB9PixcbiAgc3R5bGVzOiBTdHlsZU9iamVjdCxcbiAgbWVkaWE6IHN0cmluZyxcbiAgcHNldWRvOiBzdHJpbmcsXG4pIHtcbiAgY29uc3QgY2FjaGUgPSBzdHlsZUNhY2hlLmdldENhY2hlKG1lZGlhKTtcbiAgbGV0IGNsYXNzU3RyaW5nID0gXCJcIjtcbiAgZm9yIChjb25zdCBvcmlnaW5hbEtleSBpbiBzdHlsZXMpIHtcbiAgICBjb25zdCBvcmlnaW5hbFZhbCA9IHN0eWxlc1tvcmlnaW5hbEtleV07XG5cbiAgICBpZiAob3JpZ2luYWxWYWwgPT09IHZvaWQgMCB8fCBvcmlnaW5hbFZhbCA9PT0gbnVsbCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxWYWwgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgIC8vIE5vbi1udWxsIGFuZCBub24tdW5kZWZpbmVkIHByaW1pdGl2ZSB2YWx1ZVxuICAgICAgaWYgKF9fREVWX18pIHtcbiAgICAgICAgdmFsaWRhdGVWYWx1ZVR5cGUob3JpZ2luYWxWYWwsIG9yaWdpbmFsS2V5KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJvcFZhbFBhaXIgPSBgJHtoeXBoZW5hdGUob3JpZ2luYWxLZXkpfToke1xuICAgICAgICBvcmlnaW5hbFZhbCBhcyBhbnkgYXMgc3RyaW5nXG4gICAgICB9YDtcbiAgICAgIGNvbnN0IGtleSA9IGAke3BzZXVkb30ke3Byb3BWYWxQYWlyfWA7XG4gICAgICBjb25zdCBjYWNoZWRJZCA9IGNhY2hlLmNhY2hlW2tleV07XG4gICAgICBpZiAoY2FjaGVkSWQgIT09IHZvaWQgMCkge1xuICAgICAgICAvLyBjYWNoZSBoaXRcbiAgICAgICAgY2xhc3NTdHJpbmcgKz0gXCIgXCIgKyBjYWNoZWRJZDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjYWNoZSBtaXNzXG4gICAgICAgIGxldCBibG9jayA9IFwiXCI7XG4gICAgICAgIGNvbnN0IHByZWZpeGVkID0gcHJlZml4KHtbb3JpZ2luYWxLZXldOiBvcmlnaW5hbFZhbH0pO1xuICAgICAgICBmb3IgKGNvbnN0IHByZWZpeGVkS2V5IGluIHByZWZpeGVkKSB7XG4gICAgICAgICAgY29uc3QgcHJlZml4ZWRWYWwgPSBwcmVmaXhlZFtwcmVmaXhlZEtleV07XG4gICAgICAgICAgY29uc3QgcHJlZml4ZWRWYWxUeXBlID0gdHlwZW9mIHByZWZpeGVkVmFsO1xuICAgICAgICAgIGlmIChwcmVmaXhlZFZhbFR5cGUgPT09IFwic3RyaW5nXCIgfHwgcHJlZml4ZWRWYWxUeXBlID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICBjb25zdCBwcmVmaXhlZFBhaXIgPSBgJHtoeXBoZW5hdGUocHJlZml4ZWRLZXkpfToke3ByZWZpeGVkVmFsfWA7XG4gICAgICAgICAgICBpZiAocHJlZml4ZWRQYWlyICE9PSBwcm9wVmFsUGFpcikge1xuICAgICAgICAgICAgICBibG9jayArPSBgJHtwcmVmaXhlZFBhaXJ9O2A7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHByZWZpeGVkVmFsKSkge1xuICAgICAgICAgICAgY29uc3QgaHlwaGVuYXRlZCA9IGh5cGhlbmF0ZShwcmVmaXhlZEtleSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByZWZpeGVkVmFsLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHByZWZpeGVkUGFpciA9IGAke2h5cGhlbmF0ZWR9OiR7cHJlZml4ZWRWYWxbaV19YDtcbiAgICAgICAgICAgICAgaWYgKHByZWZpeGVkUGFpciAhPT0gcHJvcFZhbFBhaXIpIHtcbiAgICAgICAgICAgICAgICBibG9jayArPSBgJHtwcmVmaXhlZFBhaXJ9O2A7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYmxvY2sgKz0gcHJvcFZhbFBhaXI7IC8vIGVuc3VyZSBvcmlnaW5hbCBwcm9wL3ZhbCBpcyBsYXN0IChmb3IgaHlkcmF0aW9uKVxuICAgICAgICBjb25zdCBpZCA9IGNhY2hlLmFkZFZhbHVlKGtleSwge3BzZXVkbywgYmxvY2t9KTtcbiAgICAgICAgY2xhc3NTdHJpbmcgKz0gXCIgXCIgKyBpZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm9uLW51bGwgb2JqZWN0IHZhbHVlXG4gICAgICBpZiAob3JpZ2luYWxLZXlbMF0gPT09IFwiOlwiKSB7XG4gICAgICAgIGNsYXNzU3RyaW5nICs9XG4gICAgICAgICAgXCIgXCIgK1xuICAgICAgICAgIGluamVjdFN0eWxlUHJlZml4ZWQoXG4gICAgICAgICAgICBzdHlsZUNhY2hlLFxuICAgICAgICAgICAgb3JpZ2luYWxWYWwgYXMgU3R5bGVPYmplY3QsXG4gICAgICAgICAgICBtZWRpYSxcbiAgICAgICAgICAgIHBzZXVkbyArIG9yaWdpbmFsS2V5LFxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKG9yaWdpbmFsS2V5LnN1YnN0cmluZygwLCA2KSA9PT0gXCJAbWVkaWFcIikge1xuICAgICAgICBjbGFzc1N0cmluZyArPVxuICAgICAgICAgIFwiIFwiICtcbiAgICAgICAgICBpbmplY3RTdHlsZVByZWZpeGVkKFxuICAgICAgICAgICAgc3R5bGVDYWNoZSxcbiAgICAgICAgICAgIG9yaWdpbmFsVmFsIGFzIFN0eWxlT2JqZWN0LFxuICAgICAgICAgICAgb3JpZ2luYWxLZXkuc3Vic3RyKDcpLFxuICAgICAgICAgICAgcHNldWRvLFxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKF9fREVWX18pIHtcbiAgICBjb25zdCBjb25mbGljdHMgPSB2YWxpZGF0ZU5vTWl4ZWRIYW5kKHN0eWxlcyk7XG4gICAgaWYgKGNvbmZsaWN0cy5sZW5ndGgpIHtcbiAgICAgIGNvbmZsaWN0cy5mb3JFYWNoKCh7c2hvcnRoYW5kLCBsb25naGFuZH0pID0+IHtcbiAgICAgICAgY29uc3Qgc2hvcnQgPSBKU09OLnN0cmluZ2lmeSh7W3Nob3J0aGFuZC5wcm9wZXJ0eV06IHNob3J0aGFuZC52YWx1ZX0pO1xuICAgICAgICBjb25zdCBsb25nID0gSlNPTi5zdHJpbmdpZnkoe1tsb25naGFuZC5wcm9wZXJ0eV06IGxvbmdoYW5kLnZhbHVlfSk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgU3R5bGVzIFxcYCR7c2hvcnR9XFxgIGFuZCBcXGAke2xvbmd9XFxgIGluIG9iamVjdCB5aWVsZGluZyBjbGFzcyBcIiR7Y2xhc3NTdHJpbmcuc2xpY2UoXG4gICAgICAgICAgICAxLFxuICAgICAgICAgICl9XCIgbWF5IHJlc3VsdCBpbiB1bmV4cGVjdGVkIGJlaGF2aW9yLiBNaXhpbmcgc2hvcnRoYW5kIGFuZCBsb25naGFuZCBwcm9wZXJ0aWVzIHdpdGhpbiB0aGUgc2FtZSBzdHlsZSBvYmplY3QgaXMgdW5zdXBwb3J0ZWQgd2l0aCBhdG9taWMgcmVuZGVyaW5nLmAsXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyByZW1vdmUgbGVhZGluZyBzcGFjZVxuICByZXR1cm4gY2xhc3NTdHJpbmcuc2xpY2UoMSk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlVmFsdWVUeXBlKHZhbHVlLCBrZXkpIHtcbiAgaWYgKFxuICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHxcbiAgICAodHlwZW9mIHZhbHVlICE9PSBcIm51bWJlclwiICYmIHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIilcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFVuc3VwcG9ydGVkIHN0eWxlIHZhbHVlOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICB2YWx1ZSxcbiAgICAgICl9IHVzZWQgaW4gcHJvcGVydHkgJHtKU09OLnN0cmluZ2lmeShrZXkpfWAsXG4gICAgKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFFQSxPQUFPQSxTQUFQLE1BQXNCLHdCQUF0QjtBQUNBLFNBQVFDLG1CQUFSLFFBQWtDLDBCQUFsQztBQUNBLFNBQVFDLE1BQVIsUUFBcUIsdUJBQXJCO0FBSUEsU0FBUUMsVUFBUixRQUF5QixTQUF6QjtBQUVBLGVBQWUsU0FBU0MsbUJBQVQsQ0FDYkMsVUFEYSxFQUtiQyxNQUxhLEVBTWJDLEtBTmEsRUFPYkMsTUFQYSxFQVFiO0VBQ0EsTUFBTUMsS0FBSyxHQUFHSixVQUFVLENBQUNLLFFBQVgsQ0FBb0JILEtBQXBCLENBQWQ7RUFDQSxJQUFJSSxXQUFXLEdBQUcsRUFBbEI7O0VBQ0EsS0FBSyxNQUFNQyxXQUFYLElBQTBCTixNQUExQixFQUFrQztJQUNoQyxNQUFNTyxXQUFXLEdBQUdQLE1BQU0sQ0FBQ00sV0FBRCxDQUExQjs7SUFFQSxJQUFJQyxXQUFXLEtBQUssS0FBSyxDQUFyQixJQUEwQkEsV0FBVyxLQUFLLElBQTlDLEVBQW9EO01BQ2xEO0lBQ0Q7O0lBQ0QsSUFBSSxPQUFPQSxXQUFQLEtBQXVCLFFBQTNCLEVBQXFDO01BQ25DO01BQ0EsMkNBQWE7UUFDWEMsaUJBQWlCLENBQUNELFdBQUQsRUFBY0QsV0FBZCxDQUFqQjtNQUNEOztNQUVELE1BQU1HLFdBQVcsR0FBSSxHQUFFZixTQUFTLENBQUNZLFdBQUQsQ0FBYyxJQUM1Q0MsV0FDRCxFQUZEO01BR0EsTUFBTUcsR0FBRyxHQUFJLEdBQUVSLE1BQU8sR0FBRU8sV0FBWSxFQUFwQztNQUNBLE1BQU1FLFFBQVEsR0FBR1IsS0FBSyxDQUFDQSxLQUFOLENBQVlPLEdBQVosQ0FBakI7O01BQ0EsSUFBSUMsUUFBUSxLQUFLLEtBQUssQ0FBdEIs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","import hyphenate from \"./hyphenate-style-name\";\nimport validateKeyframesObject from \"./validate-keyframes-object\";\nexport function atomicSelector(id, pseudo) {\n let selector = `.${id}`;\n\n if (pseudo) {\n selector += pseudo;\n }\n\n return selector;\n}\nexport function keyframesToBlock(keyframes) {\n if (process.env.NODE_ENV !== \"production\") {\n validateKeyframesObject(keyframes);\n }\n\n if (process.env.NODE_ENV !== \"production\" && typeof Object.getPrototypeOf(keyframes) !== \"undefined\") {\n if (Object.getPrototypeOf(keyframes) !== Object.getPrototypeOf({})) {\n // eslint-disable-next-line no-console\n console.warn(\"Only plain objects should be used as animation values. Unexpectedly recieved:\", keyframes);\n }\n }\n\n let result = \"\";\n\n for (const animationState in keyframes) {\n result += `${animationState}{${declarationsToBlock(keyframes[animationState])}}`;\n }\n\n return result;\n}\nexport function declarationsToBlock(style) {\n let css = \"\";\n\n for (const prop in style) {\n const val = style[prop];\n\n if (typeof val === \"string\" || typeof val === \"number\") {\n css += `${hyphenate(prop)}:${val};`;\n }\n } // trim trailing semicolon\n\n\n return css.slice(0, -1);\n}\nexport function keyframesBlockToRule(id, block) {\n return `@keyframes ${id}{${block}}`;\n}\nexport function fontFaceBlockToRule(id, block) {\n return `@font-face{font-family:${id};${block}}`;\n}\nexport function styleBlockToRule(selector, block) {\n return `${selector}{${block}}`;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJoeXBoZW5hdGUiLCJ2YWxpZGF0ZUtleWZyYW1lc09iamVjdCIsImF0b21pY1NlbGVjdG9yIiwiaWQiLCJwc2V1ZG8iLCJzZWxlY3RvciIsImtleWZyYW1lc1RvQmxvY2siLCJrZXlmcmFtZXMiLCJPYmplY3QiLCJnZXRQcm90b3R5cGVPZiIsImNvbnNvbGUiLCJ3YXJuIiwicmVzdWx0IiwiYW5pbWF0aW9uU3RhdGUiLCJkZWNsYXJhdGlvbnNUb0Jsb2NrIiwic3R5bGUiLCJjc3MiLCJwcm9wIiwidmFsIiwic2xpY2UiLCJrZXlmcmFtZXNCbG9ja1RvUnVsZSIsImJsb2NrIiwiZm9udEZhY2VCbG9ja1RvUnVsZSIsInN0eWxlQmxvY2tUb1J1bGUiXSwic291cmNlcyI6WyJzcmMvY3NzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImRlY2xhcmUgdmFyIF9fREVWX186IGJvb2xlYW47XG5cbmltcG9ydCBoeXBoZW5hdGUgZnJvbSBcIi4vaHlwaGVuYXRlLXN0eWxlLW5hbWVcIjtcbmltcG9ydCB2YWxpZGF0ZUtleWZyYW1lc09iamVjdCBmcm9tIFwiLi92YWxpZGF0ZS1rZXlmcmFtZXMtb2JqZWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBhdG9taWNTZWxlY3RvcihpZDogc3RyaW5nLCBwc2V1ZG86IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBzZWxlY3RvciA9IGAuJHtpZH1gO1xuICBpZiAocHNldWRvKSB7XG4gICAgc2VsZWN0b3IgKz0gcHNldWRvO1xuICB9XG4gIHJldHVybiBzZWxlY3Rvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGtleWZyYW1lc1RvQmxvY2soa2V5ZnJhbWVzOiB7W3g6IHN0cmluZ106IGFueX0pOiBzdHJpbmcge1xuICBpZiAoX19ERVZfXykge1xuICAgIHZhbGlkYXRlS2V5ZnJhbWVzT2JqZWN0KGtleWZyYW1lcyk7XG4gIH1cbiAgaWYgKF9fREVWX18gJiYgdHlwZW9mIE9iamVjdC5nZXRQcm90b3R5cGVPZihrZXlmcmFtZXMpICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZihrZXlmcmFtZXMpICE9PSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoe30pKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIk9ubHkgcGxhaW4gb2JqZWN0cyBzaG91bGQgYmUgdXNlZCBhcyBhbmltYXRpb24gdmFsdWVzLiBVbmV4cGVjdGVkbHkgcmVjaWV2ZWQ6XCIsXG4gICAgICAgIGtleWZyYW1lcyxcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGxldCByZXN1bHQgPSBcIlwiO1xuICBmb3IgKGNvbnN0IGFuaW1hdGlvblN0YXRlIGluIGtleWZyYW1lcykge1xuICAgIHJlc3VsdCArPSBgJHthbmltYXRpb25TdGF0ZX17JHtkZWNsYXJhdGlvbnNUb0Jsb2NrKFxuICAgICAga2V5ZnJhbWVzW2FuaW1hdGlvblN0YXRlXSxcbiAgICApfX1gO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJhdGlvbnNUb0Jsb2NrKHN0eWxlOiBhbnkpOiBzdHJpbmcge1xuICBsZXQgY3NzID0gXCJcIjtcbiAgZm9yIChjb25zdCBwcm9wIGluIHN0eWxlKSB7XG4gICAgY29uc3QgdmFsID0gc3R5bGVbcHJvcF07XG4gICAgaWYgKHR5cGVvZiB2YWwgPT09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHZhbCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgY3NzICs9IGAke2h5cGhlbmF0ZShwcm9wKX06JHt2YWx9O2A7XG4gICAgfVxuICB9XG4gIC8vIHRyaW0gdHJhaWxpbmcgc2VtaWNvbG9uXG4gIHJldHVybiBjc3Muc2xpY2UoMCwgLTEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ga2V5ZnJhbWVzQmxvY2tUb1J1bGUoaWQ6IHN0cmluZywgYmxvY2s6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgQGtleWZyYW1lcyAke2lkfXske2Jsb2NrfX1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9udEZhY2VCbG9ja1RvUnVsZShpZDogc3RyaW5nLCBibG9jazogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBAZm9udC1mYWNle2ZvbnQtZmFtaWx5OiR7aWR9OyR7YmxvY2t9fWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHlsZUJsb2NrVG9SdWxlKHNlbGVjdG9yOiBzdHJpbmcsIGJsb2NrOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7c2VsZWN0b3J9eyR7YmxvY2t9fWA7XG59XG4iXSwibWFwcGluZ3MiOiJBQUVBLE9BQU9BLFNBQVAsTUFBc0Isd0JBQXRCO0FBQ0EsT0FBT0MsdUJBQVAsTUFBb0MsNkJBQXBDO0FBRUEsT0FBTyxTQUFTQyxjQUFULENBQXdCQyxFQUF4QixFQUFvQ0MsTUFBcEMsRUFBNEQ7RUFDakUsSUFBSUMsUUFBUSxHQUFJLElBQUdGLEVBQUcsRUFBdEI7O0VBQ0EsSUFBSUMsTUFBSixFQUFZO0lBQ1ZDLFFBQVEsSUFBSUQsTUFBWjtFQUNEOztFQUNELE9BQU9DLFFBQVA7QUFDRDtBQUVELE9BQU8sU0FBU0MsZ0JBQVQsQ0FBMEJDLFNBQTFCLEVBQWlFO0VBQ3RFLDJDQUFhO0lBQ1hOLHVCQUF1QixDQUFDTSxTQUFELENBQXZCO0VBQ0Q7O0VBQ0QsSUFBSSx5Q0FBVyxPQUFPQyxNQUFNLENBQUNDLGNBQVAsQ0FBc0JGLFNBQXRCLENBQVAsS0FBNEMsV0FBM0QsRUFBd0U7SUFDdEUsSUFBSUMsTUFBTSxDQUFDQyxjQUFQLENBQXNCRixTQUF0QixNQUFxQ0MsTUFBTSxDQUFDQyxjQUFQLENBQXNCLEVBQXRCLENBQXpDLEVBQW9FO01BQ2xFO01BQ0FDLE9BQU8sQ0FBQ0MsSUFBUixDQUNFLCtFQURGLEVBRUVKLFNBRkY7SUFJRDtFQUNGOztFQUNELElBQUlLLE1BQU0sR0FBRyxFQUFiOztFQUNBLEtBQUssTUFBTUMsY0FBWCxJQUE2Qk4sU0FBN0IsRUFBd0M7SUFDdENLLE1BQU0sSUFBSyxHQUFFQyxjQUFlLElBQUdDLG1CQUFtQixDQUNoRFAsU0FBUyxDQUFDTSxjQUFELENBRHVDLENBRWhELEdBRkY7RUFHRDs7RUFDRCxPQUFPRCxNQUFQO0FBQ0Q7QUFFRCxPQUFPLFNBQVNFLG1CQUFULENBQTZCQyxLQUE3QixFQUFpRDtFQUN0RCxJQUFJQyxHQUFHLEdBQUcsRUFBVjs7RUFDQSxLQUFLLE1BQU1DLElBQVgsSUFBbUJGLEtBQW5CLEVBQTBCO0lBQ3hCLE1BQU1HLEdBQUcsR0FBR0gsS0FBSyxDQUFDRSxJQUFELENBQWpCOztJQUNBLElBQUksT0FBT0MsR0FBUCxLQUFlLFFBQWYsSUFBMkIsT0FBT0EsR0FBUCxLQUFlLFFBQTlDLEVBQXdEO01BQ3RERixHQUFHLElBQUssR0FBRWhCLFNBQVMsQ0FBQ2lCLElBQUQsQ0FBTyxJQUFHQyxHQUFJLEdBQWpDO0lBQ0Q7RUFDRixDQVBxRCxDQVF0RDs7O0VBQ0EsT0FBT0YsR0FBRyxDQUFDRyxLQUFKLENBQVUsQ0FBVixFQUFhLENBQUMsQ0FBZCxDQUFQO0FBQ0Q7QUFFRCxPQUFPLFNBQVNDLG9CQUFULENBQThCakIsRUFBOUIsRUFBMENrQixLQUExQyxFQUFpRTtFQUN0RSxPQUFRLGNBQWFsQixFQUFHLElBQUdrQixLQUFNLEdBQWpDO0FBQ0Q7QUFFRCxPQUFPLFNBQVNDLG1CQUFULENBQTZCbkIsRUFBN0IsRUFBeUNrQixLQUF6QyxFQUFnRTtFQUNyRSxPQUFRLDBCQUF5QmxCLEVBQUcsSUFBR2tCLEtBQU0sR0FBN0M7QUFDRDtBQUVELE9BQU8sU0FBU0UsZ0JBQVQsQ0FBMEJsQixRQUExQixFQUE0Q2dCLEtBQTVDLEVBQW1FO0VBQ3hFLE9BQVEsR0FBRWhCLFFBQVMsSUFBR2dCLEtBQU0sR0FBNUI7QUFDRCJ9","/* eslint-env browser */\nconst STYLES_HYDRATOR = /\\.([^{:]+)(:[^{]+)?{(?:[^}]*;)?([^}]*?)}/g;\nconst KEYFRAMES_HYRDATOR = /@keyframes ([^{]+){((?:(?:from|to|(?:\\d+\\.?\\d*%))\\{(?:[^}])*})*)}/g;\nconst FONT_FACE_HYDRATOR = /@font-face\\{font-family:([^;]+);([^}]*)\\}/g;\n\nfunction hydrateStyles(cache, hydrator, css) {\n let match;\n\n while (match = hydrator.exec(css)) {\n const [, id, pseudo, key] = match;\n\n if (true && process.env.NODE_ENV !== \"production\" && window.__STYLETRON_DEVTOOLS__) {\n hydrateDevtoolsRule(match[0]);\n }\n\n const fullKey = pseudo ? `${pseudo}${key}` : key;\n cache.cache[fullKey] = id; // set cache without triggering side effects\n\n cache.idGenerator.increment(); // increment id\n }\n}\n\nfunction hydrate(cache, hydrator, css) {\n let match;\n\n while (match = hydrator.exec(css)) {\n const [, id, key] = match;\n\n if (true && process.env.NODE_ENV !== \"production\" && window.__STYLETRON_DEVTOOLS__) {\n hydrateDevtoolsRule(match[0]);\n }\n\n cache.cache[key] = id; // set cache without triggering side effects\n\n cache.idGenerator.increment(); // increment id\n }\n}\n\nimport SequentialIDGenerator from \"../sequential-id-generator\";\nimport { Cache, MultiCache } from \"../cache\";\nimport injectStylePrefixed from \"../inject-style-prefixed\";\nimport { styleBlockToRule, atomicSelector, keyframesBlockToRule, declarationsToBlock, keyframesToBlock, fontFaceBlockToRule } from \"../css\";\nimport { insertRuleIntoDevtools, hydrateDevtoolsRule } from \"../dev-tool\";\n\nclass StyletronClient {\n constructor(opts = {}) {\n this.styleElements = {};\n const styleIdGenerator = new SequentialIDGenerator(opts.prefix);\n\n const onNewStyle = (cache, id, value) => {\n const {\n pseudo,\n block\n } = value;\n const sheet = this.styleElements[cache.key].sheet;\n const selector = atomicSelector(id, pseudo);\n const rule = styleBlockToRule(selector, block);\n\n try {\n sheet.insertRule(rule, sheet.cssRules.length);\n\n if (true && process.env.NODE_ENV !== \"production\" && window.__STYLETRON_DEVTOOLS__) {\n insertRuleIntoDevtools(selector, block);\n }\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(`Failed to inject CSS: \"${rule}\". Perhaps this has invalid or un-prefixed properties?`);\n }\n }\n }; // Setup style cache\n\n\n this.styleCache = new MultiCache(styleIdGenerator, (media, _cache, insertBeforeMedia) => {\n const styleElement = document.createElement(\"style\");\n styleElement.media = media;\n\n if (insertBeforeMedia === void 0) {\n this.container.appendChild(styleElement);\n } else {\n const insertBeforeIndex = findSheetIndexWithMedia(this.container.children, insertBeforeMedia);\n this.container.insertBefore(styleElement, this.container.children[insertBeforeIndex]);\n }\n\n this.styleElements[media] = styleElement;\n }, onNewStyle);\n this.keyframesCache = new Cache(new SequentialIDGenerator(opts.prefix), (cache, id, value) => {\n this.styleCache.getCache(\"\");\n const sheet = this.styleElements[\"\"].sheet;\n const rule = keyframesBlockToRule(id, keyframesToBlock(value));\n\n try {\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(`Failed to inject CSS: \"${rule}\". Perhaps this has invalid or un-prefixed properties?`);\n }\n }\n });\n this.fontFaceCache = new Cache(new SequentialIDGenerator(opts.prefix), (cache, id, value) => {\n this.styleCache.getCache(\"\");\n const sheet = this.styleElements[\"\"].sheet;\n const rule = fontFaceBlockToRule(id, declarationsToBlock(value));\n\n try {\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(`Failed to inject CSS: \"${rule}\". Perhaps this has invalid or un-prefixed properties?`);\n }\n }\n });\n\n if (opts.container) {\n this.container = opts.container;\n } // Hydrate\n\n\n if (opts.hydrate && opts.hydrate.length > 0) {\n // infer container from parent element\n if (!this.container) {\n const parentElement = opts.hydrate[0].parentElement;\n\n if (parentElement !== null && parentElement !== void 0) {\n this.container = parentElement;\n }\n }\n\n for (let i = 0; i < opts.hydrate.length; i++) {\n const element = opts.hydrate[i];\n const hydrateType = element.getAttribute(\"data-hydrate\");\n\n if (hydrateType === \"font-face\") {\n hydrate(this.fontFaceCache, FONT_FACE_HYDRATOR, element.textContent);\n continue;\n }\n\n if (hydrateType === \"keyframes\") {\n hydrate(this.keyframesCache, KEYFRAMES_HYRDATOR, element.textContent);\n continue;\n }\n\n const key = element.media ? element.media : \"\";\n this.styleElements[key] = element;\n const cache = new Cache(styleIdGenerator, onNewStyle);\n cache.key = key;\n hydrateStyles(cache, STYLES_HYDRATOR, element.textContent);\n this.styleCache.sortedCacheKeys.push(key);\n this.styleCache.caches[key] = cache;\n }\n }\n\n if (!this.container) {\n if (document.head === null) {\n throw new Error(\"No container provided and `document.head` was null\");\n }\n\n this.container = document.head;\n }\n }\n\n renderStyle(style) {\n return injectStylePrefixed(this.styleCache, style, \"\", \"\");\n }\n\n renderFontFace(fontFace) {\n const key = declarationsToBlock(fontFace);\n return this.fontFaceCache.addValue(key, fontFace);\n }\n\n renderKeyframes(keyframes) {\n const key = keyframesToBlock(keyframes);\n return this.keyframesCache.addValue(key, keyframes);\n }\n\n}\n\nexport default StyletronClient;\n\nfunction findSheetIndexWithMedia(children, media) {\n let index = 0;\n\n for (; index < children.length; index++) {\n const child = children[index];\n\n if (child.tagName === \"STYLE\" && child.media === media) {\n return index;\n }\n }\n\n return -1;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVFlMRVNfSFlEUkFUT1IiLCJLRVlGUkFNRVNfSFlSREFUT1IiLCJGT05UX0ZBQ0VfSFlEUkFUT1IiLCJoeWRyYXRlU3R5bGVzIiwiY2FjaGUiLCJoeWRyYXRvciIsImNzcyIsIm1hdGNoIiwiZXhlYyIsImlkIiwicHNldWRvIiwia2V5Iiwid2luZG93IiwiX19TVFlMRVRST05fREVWVE9PTFNfXyIsImh5ZHJhdGVEZXZ0b29sc1J1bGUiLCJmdWxsS2V5IiwiaWRHZW5lcmF0b3IiLCJpbmNyZW1lbnQiLCJoeWRyYXRlIiwiU2VxdWVudGlhbElER2VuZXJhdG9yIiwiQ2FjaGUiLCJNdWx0aUNhY2hlIiwiaW5qZWN0U3R5bGVQcmVmaXhlZCIsInN0eWxlQmxvY2tUb1J1bGUiLCJhdG9taWNTZWxlY3RvciIsImtleWZyYW1lc0Jsb2NrVG9SdWxlIiwiZGVjbGFyYXRpb25zVG9CbG9jayIsImtleWZyYW1lc1RvQmxvY2siLCJmb250RmFjZUJsb2NrVG9SdWxlIiwiaW5zZXJ0UnVsZUludG9EZXZ0b29scyIsIlN0eWxldHJvbkNsaWVudCIsImNvbnN0cnVjdG9yIiwib3B0cyIsInN0eWxlRWxlbWVudHMiLCJzdHlsZUlkR2VuZXJhdG9yIiwicHJlZml4Iiwib25OZXdTdHlsZSIsInZhbHVlIiwiYmxvY2siLCJzaGVldCIsInNlbGVjdG9yIiwicnVsZSIsImluc2VydFJ1bGUiLCJjc3NSdWxlcyIsImxlbmd0aCIsImUiLCJjb25zb2xlIiwid2FybiIsInN0eWxlQ2FjaGUiLCJtZWRpYSIsIl9jYWNoZSIsImluc2VydEJlZm9yZU1lZGlhIiwic3R5bGVFbGVtZW50IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY29udGFpbmVyIiwiYXBwZW5kQ2hpbGQiLCJpbnNlcnRCZWZvcmVJbmRleCIsImZpbmRTaGVldEluZGV4V2l0aE1lZGlhIiwiY2hpbGRyZW4iLCJpbnNlcnRCZWZvcmUiLCJrZXlmcmFtZXNDYWNoZSIsImdldENhY2hlIiwiZm9udEZhY2VDYWNoZSIsInBhcmVudEVsZW1lbnQiLCJpIiwiZWxlbWVudCIsImh5ZHJhdGVUeXBlIiwiZ2V0QXR0cmlidXRlIiwidGV4dENvbnRlbnQiLCJzb3J0ZWRDYWNoZUtleXMiLCJwdXNoIiwiY2FjaGVzIiwiaGVhZCIsIkVycm9yIiwicmVuZGVyU3R5bGUiLCJzdHlsZSIsInJlbmRlckZvbnRGYWNlIiwiZm9udEZhY2UiLCJhZGRWYWx1ZSIsInJlbmRlcktleWZyYW1lcyIsImtleWZyYW1lcyIsImluZGV4IiwiY2hpbGQiLCJ0YWdOYW1lIl0sInNvdXJjZXMiOlsic3JjL2NsaWVudC9jbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbmRlY2xhcmUgdmFyIF9fREVWX186IGJvb2xlYW47XG5cbmRlY2xhcmUgdmFyIF9fQlJPV1NFUl9fOiBib29sZWFuO1xuXG5jb25zdCBTVFlMRVNfSFlEUkFUT1IgPSAvXFwuKFteezpdKykoOltee10rKT97KD86W159XSo7KT8oW159XSo/KX0vZztcbmNvbnN0IEtFWUZSQU1FU19IWVJEQVRPUiA9XG4gIC9Aa2V5ZnJhbWVzIChbXntdKyl7KCg/Oig/OmZyb218dG98KD86XFxkK1xcLj9cXGQqJSkpXFx7KD86W159XSkqfSkqKX0vZztcbmNvbnN0IEZPTlRfRkFDRV9IWURSQVRPUiA9IC9AZm9udC1mYWNlXFx7Zm9udC1mYW1pbHk6KFteO10rKTsoW159XSopXFx9L2c7XG5cbnR5cGUgaHlkcmF0b3JUID1cbiAgfCB0eXBlb2YgU1RZTEVTX0hZRFJBVE9SXG4gIHwgdHlwZW9mIEtFWUZSQU1FU19IWVJEQVRPUlxuICB8IHR5cGVvZiBGT05UX0ZBQ0VfSFlEUkFUT1I7XG5cbmZ1bmN0aW9uIGh5ZHJhdGVTdHlsZXM8VD4oY2FjaGU6IENhY2hlPFQ+LCBoeWRyYXRvcjogaHlkcmF0b3JULCBjc3M6IHN0cmluZykge1xuICBsZXQgbWF0Y2g7XG4gIHdoaWxlICgobWF0Y2ggPSBoeWRyYXRvci5leGVjKGNzcykpKSB7XG4gICAgY29uc3QgWywgaWQsIHBzZXVkbywga2V5XSA9IG1hdGNoO1xuICAgIGlmIChfX0JST1dTRVJfXyAmJiBfX0RFVl9fICYmIHdpbmRvdy5fX1NUWUxFVFJPTl9ERVZUT09MU19fKSB7XG4gICAgICBoeWRyYXRlRGV2dG9vbHNSdWxlKG1hdGNoWzBdKTtcbiAgICB9XG4gICAgY29uc3QgZnVsbEtleSA9IHBzZXVkbyA/IGAke3BzZXVkb30ke2tleX1gIDoga2V5O1xuICAgIGNhY2hlLmNhY2hlW2Z1bGxLZXldID0gaWQ7IC8vIHNldCBjYWNoZSB3aXRob3V0IHRyaWdnZXJpbmcgc2lkZSBlZmZlY3RzXG4gICAgY2FjaGUuaWRHZW5lcmF0b3IuaW5jcmVtZW50KCk7IC8vIGluY3JlbWVudCBpZFxuICB9XG59XG5cbmZ1bmN0aW9uIGh5ZHJhdGU8VD4oY2FjaGU6IENhY2hlPFQ+LCBoeWRyYXRvcjogaHlkcmF0b3JULCBjc3M6IHN0cmluZykge1xuICBsZXQgbWF0Y2g7XG4gIHdoaWxlICgobWF0Y2ggPSBoeWRyYXRvci5leGVjKGNzcykpKSB7XG4gICAgY29uc3QgWywgaWQsIGtleV0gPSBtYXRjaDtcbiAgICBpZiAoX19CUk9XU0VSX18gJiYgX19ERVZfXyAmJiB3aW5kb3cuX19TVFlMRVRST05fREVWVE9PTFNfXykge1xuICAgICAgaHlkcmF0ZURldnRvb2xzUnVsZShtYXRjaFswXSk7XG4gICAgfVxuICAgIGNhY2hlLmNhY2hlW2tleV0gPSBpZDsgLy8gc2V0IGNhY2hlIHdpdGhvdXQgdHJpZ2dlcmluZyBzaWRlIGVmZmVjdHNcbiAgICBjYWNoZS5pZEdlbmVyYXRvci5pbmNyZW1lbnQoKTsgLy8gaW5jcmVtZW50IGlkXG4gIH1cbn1cblxuaW1wb3J0IFNlcXVlbnRpYWxJREdlbmVyYXRvciBmcm9tIFwiLi4vc2VxdWVudGlhbC1pZC1nZW5lcmF0b3JcIjtcblxuaW1wb3J0IHR5cGUge1xuICBTdGFuZGFyZEVuZ2luZSxcbiAgS2V5ZnJhbWVzT2JqZWN0LFxuICBGb250RmFjZU9iamVjdCxcbiAgU3R5bGVPYmplY3QsXG59IGZyb20gXCJzdHlsZXRyb24tc3RhbmRhcmRcIjtcblxuaW1wb3J0IHtDYWNoZSwgTXVsdGlDYWNoZX0gZnJvbSBcIi4uL2NhY2hlXCI7XG5cbmltcG9ydCBpbmplY3RTdHlsZVByZWZpeGVkIGZyb20gXCIuLi9pbmplY3Qtc3R5bGUtcHJlZml4ZWRcIjtcblxuaW1wb3J0IHtcbiAgc3R5bGVCbG9ja1RvUnVsZSxcbiAgYXRvbWljU2VsZWN0b3IsXG4gIGtleWZyYW1lc0Jsb2NrVG9SdWxlLFxuICBkZWNsYXJhdGlvbnNUb0Jsb2NrLFxuICBrZXlmcmFtZXNUb0Jsb2NrLFxuICBmb250RmFjZUJsb2NrVG9SdWxlLFxufSBmcm9tIFwiLi4vY3NzXCI7XG5pbXBvcnQge2luc2VydFJ1bGVJbnRvRGV2dG9vbHMsIGh5ZHJhdGVEZXZ0b29sc1J1bGV9IGZyb20gXCIuLi9kZXYtdG9vbFwiO1xuXG50eXBlIGh5ZHJhdGVUID1cbiAgfCBIVE1MQ29sbGVjdGlvbk9mPEhUTUxTdHlsZUVsZW1lbnQ+XG4gIHwgQXJyYXk8SFRNTFN0eWxlRWxlbWVudD5cbiAgfCBOb2RlTGlzdE9mPEhUTUxTdHlsZUVsZW1lbnQ+O1xuXG50eXBlIG9wdGlvbnNUID0ge1xuICBoeWRyYXRlPzogaHlkcmF0ZVQ7XG4gIGNvbnRhaW5lcj86IEVsZW1lbnQ7XG4gIHByZWZpeD86IHN0cmluZztcbn07XG5cbmNsYXNzIFN0eWxldHJvbkNsaWVudCBpbXBsZW1lbnRzIFN0YW5kYXJkRW5naW5lIHtcbiAgY29udGFpbmVyOiBFbGVtZW50O1xuICBzdHlsZUVsZW1lbnRzOiB7XG4gICAgW3g6IHN0cmluZ106IEhUTUxTdHlsZUVsZW1lbnQ7XG4gIH07XG4gIGZvbnRGYWNlU2hlZXQ6IEhUTUxTdHlsZUVsZW1lbnQ7XG4gIGtleWZyYW1lc1NoZWV0OiBIVE1MU3R5bGVFbGVtZW50O1xuXG4gIHN0eWxlQ2FjaGU6IE11bHRpQ2FjaGU8e1xuICAgIHBzZXVkbzogc3RyaW5nO1xuICAgIGJsb2NrOiBzdHJpbmc7XG4gIH0+O1xuICBrZXlmcmFtZXNDYWNoZTogQ2FjaGU8S2V5ZnJhbWVzT2JqZWN0PjtcbiAgZm9udEZhY2VDYWNoZTogQ2FjaGU8Rm9udEZhY2VPYmplY3Q+O1xuXG4gIGNvbnN0cnVjdG9yKG9wdHM6IG9wdGlvbnNUID0ge30pIHtcbiAgICB0aGlzLnN0eWxlRWxlbWVudHMgPSB7fTtcblxuICAgIGNvbnN0IHN0eWxlSWRHZW5lcmF0b3IgPSBuZXcgU2VxdWVudGlhbElER2VuZXJhdG9yKG9wdHMucHJlZml4KTtcbiAgICBjb25zdCBvbk5ld1N0eWxlID0gKGNhY2hlLCBpZCwgdmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IHtwc2V1ZG8sIGJsb2NrfSA9IHZhbHVlO1xuICAgICAgY29uc3Qgc2hlZXQ6IENTU1N0eWxlU2hlZXQgPSB0aGlzLnN0eWxlRWxlbWVudHNbY2FjaGUua2V5XS5zaGVldCBhcyBhbnk7XG4gICAgICBjb25zdCBzZWxlY3RvciA9IGF0b21pY1NlbGVjdG9yKGlkLCBwc2V1ZG8pO1xuICAgICAgY29uc3QgcnVsZSA9IHN0eWxlQmxvY2tUb1J1bGUoc2VsZWN0b3IsIGJsb2NrKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNoZWV0Lmluc2VydFJ1bGUocnVsZSwgc2hlZXQuY3NzUnVsZXMubGVuZ3RoKTtcbiAgICAgICAgaWYgKF9fQlJPV1NFUl9fICYmIF9fREVWX18gJiYgd2luZG93Ll9fU1RZTEVUUk9OX0RFVlRPT0xTX18pIHtcbiAgICAgICAgICBpbnNlcnRSdWxlSW50b0RldnRvb2xzKHNlbGVjdG9yLCBibG9jayk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKF9fREVWX18pIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIGBGYWlsZWQgdG8gaW5qZWN0IENTUzogXCIke3J1bGV9XCIuIFBlcmhhcHMgdGhpcyBoYXMgaW52YWxpZCBvciB1bi1wcmVmaXhlZCBwcm9wZXJ0aWVzP2AsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBTZXR1cCBzdHlsZSBjYWNoZVxuICAgIHRoaXMuc3R5bGVDYWNoZSA9IG5ldyBNdWx0aUNhY2hlKFxuICAgICAgc3R5bGVJZEdlbmVyYXRvcixcbiAgICAgIChtZWRpYSwgX2NhY2hlLCBpbnNlcnRCZWZvcmVNZWRpYSkgPT4ge1xuICAgICAgICBjb25zdCBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgICAgIHN0eWxlRWxlbWVudC5tZWRpYSA9IG1lZGlhO1xuICAgICAgICBpZiAoaW5zZXJ0QmVmb3JlTWVkaWEgPT09IHZvaWQgMCkge1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgaW5zZXJ0QmVmb3JlSW5kZXggPSBmaW5kU2hlZXRJbmRleFdpdGhNZWRpYShcbiAgICAgICAgICAgIHRoaXMuY29udGFpbmVyLmNoaWxkcmVuLFxuICAgICAgICAgICAgaW5zZXJ0QmVmb3JlTWVkaWEsXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICBzdHlsZUVsZW1lbnQsXG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5jaGlsZHJlbltpbnNlcnRCZWZvcmVJbmRleF0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3R5bGVFbGVtZW50c1ttZWRpYV0gPSBzdHlsZUVsZW1lbnQ7XG4gICAgICB9LFxuICAgICAgb25OZXdTdHlsZSxcbiAgICApO1xuXG4gICAgdGhpcy5rZXlmcmFtZXNDYWNoZSA9IG5ldyBDYWNoZShcbiAgICAgIG5ldyBTZXF1ZW50aWFsSURHZW5lcmF0b3Iob3B0cy5wcmVmaXgpLFxuICAgICAgKGNhY2hlLCBpZCwgdmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5zdHlsZUNhY2hlLmdldENhY2hlKFwiXCIpO1xuICAgICAgICBjb25zdCBzaGVldDogQ1NTU3R5bGVTaGVldCA9IHRoaXMuc3R5bGVFbGVtZW50c1tcIlwiXS5zaGVldCBhcyBhbnk7XG4gICAgICAgIGNvbnN0IHJ1bGUgPSBrZXlmcmFtZXNCbG9ja1RvUnVsZShpZCwga2V5ZnJhbWVzVG9CbG9jayh2YWx1ZSkpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHNoZWV0Lmluc2VydFJ1bGUocnVsZSwgc2hlZXQuY3NzUnVsZXMubGVuZ3RoKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChfX0RFVl9fKSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICBgRmFpbGVkIHRvIGluamVjdCBDU1M6IFwiJHtydWxlfVwiLiBQZXJoYXBzIHRoaXMgaGFzIGludmFsaWQgb3IgdW4tcHJlZml4ZWQgcHJvcGVydGllcz9gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHRoaXMuZm9udEZhY2VDYWNoZSA9IG5ldyBDYWNoZShcbiAgICAgIG5ldyBTZXF1ZW50aWFsSURHZW5lcmF0b3Iob3B0cy5wcmVmaXgpLFxuICAgICAgKGNhY2hlLCBpZCwgdmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5zdHlsZUNhY2hlLmdldENhY2hlKFwiXCIpO1xuICAgICAgICBjb25zdCBzaGVldDogQ1NTU3R5bGVTaGVldCA9IHRoaXMuc3R5bGVFbGVtZW50c1tcIlwiXS5zaGVldCBhcyBhbnk7XG4gICAgICAgIGNvbnN0IHJ1bGUgPSBmb250RmFjZUJsb2NrVG9SdWxlKGlkLCBkZWNsYXJhdGlvbnNUb0Jsb2NrKHZhbHVlKSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc2hlZXQuaW5zZXJ0UnVsZShydWxlLCBzaGVldC5jc3NSdWxlcy5sZW5ndGgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKF9fREVWX18pIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgIGBGYWlsZWQgdG8gaW5qZWN0IENTUzogXCIke3J1bGV9XCIuIFBlcmhhcHMgdGhpcyBoYXMgaW52YWxpZCBvciB1bi1wcmVmaXhlZCBwcm9wZXJ0aWVzP2AsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKG9wdHMuY29udGFpbmVyKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lciA9IG9wdHMuY29udGFpbmVyO1xuICAgIH1cblxuICAgIC8vIEh5ZHJhdGVcbiAgICBpZiAob3B0cy5oeWRyYXRlICYmIG9wdHMuaHlkcmF0ZS5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBpbmZlciBjb250YWluZXIgZnJvbSBwYXJlbnQgZWxlbWVudFxuICAgICAgaWYgKCF0aGlzLmNvbnRhaW5lcikge1xuICAgICAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gb3B0cy5oeWRyYXRlWzBdLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIGlmIChwYXJlbnRFbGVtZW50ICE9PSBudWxsICYmIHBhcmVudEVsZW1lbnQgIT09IHZvaWQgMCkge1xuICAgICAgICAgIHRoaXMuY29udGFpbmVyID0gcGFyZW50RWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdHMuaHlkcmF0ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gb3B0cy5oeWRyYXRlW2ldO1xuICAgICAgICBjb25zdCBoeWRyYXRlVHlwZSA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKFwiZGF0YS1oeWRyYXRlXCIpO1xuICAgICAgICBpZiAoaHlkcmF0ZVR5cGUgPT09IFwiZm9udC1mYWNlXCIpIHtcbiAgICAgICAgICBoeWRyYXRlKHRoaXMuZm9udEZhY2VDYWNoZSwgRk9OVF9GQUNFX0hZRFJBVE9SLCBlbGVtZW50LnRleHRDb250ZW50KTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaHlkcmF0ZVR5cGUgPT09IFwia2V5ZnJhbWVzXCIpIHtcbiAgICAgICAgICBoeWRyYXRlKHRoaXMua2V5ZnJhbWVzQ2FjaGUsIEtFWUZSQU1FU19IWVJEQVRPUiwgZWxlbWVudC50ZXh0Q29udGVudCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qga2V5ID0gZWxlbWVudC5tZWRpYSA/IGVsZW1lbnQubWVkaWEgOiBcIlwiO1xuICAgICAgICB0aGlzLnN0eWxlRWxlbWVudHNba2V5XSA9IGVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNhY2hlID0gbmV3IENhY2hlKHN0eWxlSWRHZW5lcmF0b3IsIG9uTmV3U3R5bGUpO1xuICAgICAgICBjYWNoZS5rZXkgPSBrZXk7XG4gICAgICAgIGh5ZHJhdGVTdHlsZXMoY2FjaGUsIFNUWUxFU19IWURSQVRPUiwgZWxlbWVudC50ZXh0Q29udGVudCk7XG4gICAgICAgIHRoaXMuc3R5bGVDYWNoZS5zb3J0ZWRDYWNoZUtleXMucHVzaChrZXkpO1xuICAgICAgICB0aGlzLnN0eWxlQ2FjaGUuY2FjaGVzW2tleV0gPSBjYWNoZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29udGFpbmVyKSB7XG4gICAgICBpZiAoZG9jdW1lbnQuaGVhZCA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb250YWluZXIgcHJvdmlkZWQgYW5kIGBkb2N1bWVudC5oZWFkYCB3YXMgbnVsbFwiKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29udGFpbmVyID0gZG9jdW1lbnQuaGVhZDtcbiAgICB9XG4gIH1cblxuICByZW5kZXJTdHlsZShzdHlsZTogU3R5bGVPYmplY3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbmplY3RTdHlsZVByZWZpeGVkKHRoaXMuc3R5bGVDYWNoZSwgc3R5bGUsIFwiXCIsIFwiXCIpO1xuICB9XG5cbiAgcmVuZGVyRm9udEZhY2UoZm9udEZhY2U6IEZvbnRGYWNlT2JqZWN0KTogc3RyaW5nIHtcbiAgICBjb25zdCBrZXkgPSBkZWNsYXJhdGlvbnNUb0Jsb2NrKGZvbnRGYWNlKTtcbiAgICByZXR1cm4gdGhpcy5mb250RmFjZUNhY2hlLmFkZFZhbHVlKGtleSwgZm9udEZhY2UpO1xuICB9XG5cbiAgcmVuZGVyS2V5ZnJhbWVzKGtleWZyYW1lczogS2V5ZnJhbWVzT2JqZWN0KTogc3RyaW5nIHtcbiAgICBjb25zdCBrZXkgPSBrZXlmcmFtZXNUb0Jsb2NrKGtleWZyYW1lcyk7XG4gICAgcmV0dXJuIHRoaXMua2V5ZnJhbWVzQ2FjaGUuYWRkVmFsdWUoa2V5LCBrZXlmcmFtZXMpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFN0eWxldHJvbkNsaWVudDtcblxuZnVuY3Rpb24gZmluZFNoZWV0SW5kZXhXaXRoTWVkaWEoY2hpbGRyZW4sIG1lZGlhKSB7XG4gIGxldCBpbmRleCA9IDA7XG4gIGZvciAoOyBpbmRleCA8IGNoaWxkcmVuLmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGNvbnN0IGNoaWxkID0gY2hpbGRyZW5baW5kZXhdO1xuICAgIGlmIChcbiAgICAgIGNoaWxkLnRhZ05hbWUgPT09IFwiU1RZTEVcIiAmJlxuICAgICAgKGNoaWxkIGFzIGFueSBhcyBIVE1MU3R5bGVFbGVtZW50KS5tZWRpYSA9PT0gbWVkaWFcbiAgICApIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBTUEsTUFBTUEsZUFBZSxHQUFHLDJD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","import * as React from \"react\";\nimport { Client as Styletron } from \"styletron-engine-atomic\";\nimport { Provider, DebugEngine } from \"styletron-react\";\nconst debugEngine = process.env.NODE_ENV !== `production` ? new DebugEngine() : undefined;\nexport function wrapRootElement({\n element\n}, {\n prefix,\n debug\n}) {\n const enableDebug = debug === true || typeof debug === `undefined`;\n const styleElements = document.querySelectorAll(`._styletron_hydrate_`);\n return /*#__PURE__*/React.createElement(Provider, {\n value: new Styletron({\n hydrate: styleElements,\n prefix\n }),\n debugMode: enableDebug ? debugEngine : undefined,\n debugAfterHydration: enableDebug\n }, element);\n}","import { ADD_THEME, REMOVE_THEME, RESET_THEME } from './constants';\n\n// The initial state of this store.\nconst initialState = {\n theme: [],\n};\n\nexport { initialState };\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case ADD_THEME: {\n const cloneTheme = [...state.theme];\n cloneTheme.unshift(action.payload.theme);\n\n return {\n ...state,\n theme: cloneTheme,\n };\n }\n case REMOVE_THEME: {\n const cloneTheme = [...state.theme];\n const themeIndex = cloneTheme.indexOf(action.payload.theme);\n\n if (themeIndex !== -1) {\n cloneTheme.splice(themeIndex, 1);\n }\n\n return {\n ...state,\n theme: cloneTheme,\n };\n }\n case RESET_THEME: {\n return {\n ...state,\n theme: [],\n };\n }\n default: {\n return state;\n }\n }\n};\n","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","import { applyMiddleware, combineReducers, legacy_createStore as createStore } from 'redux';\n\nimport { INITIAL_STATE_KEY } from '../config/theme/constants';\nimport { composeWithDevTools } from 'redux-devtools-extension';\nimport site from './Site/reducers';\nimport thunk from 'redux-thunk';\n\nconst reducer = combineReducers({\n site,\n});\n\nexport const initiateStore = (initialState, middleWares = []) =>\n createStore(reducer, initialState, composeWithDevTools(applyMiddleware(thunk, ...middleWares)));\n\nlet store = null;\n\n// added so we don't error out when compiling for SSR\nif (typeof window !== 'undefined') {\n store = store || initiateStore(window[INITIAL_STATE_KEY] && JSON.parse(window[INITIAL_STATE_KEY]));\n delete window[INITIAL_STATE_KEY];\n} else {\n // When we are creating a store for the SSR..\n store = store || initiateStore();\n}\n\nexport default store;\n\nexport const getStore = () => store;\n","import { Provider } from 'react-redux';\nimport React from 'react';\nimport { getStore } from './store';\n\nexport default ({ element }) => {element};\n","import './src/assets/global.css';\n\nimport ReactDOM from 'react-dom';\nimport config from 'react-reveal/globals';\nimport type { Container } from 'react-dom';\nimport type { ShouldUpdateScrollArgs } from 'gatsby';\nimport type { ReactElement } from 'react';\n\nconfig({ ssrFadeout: true });\n\nexport function shouldUpdateScroll({ routerProps: { location } }: ShouldUpdateScrollArgs) {\n // Anchor links should not reset the scroll of the page\n if (location.hash !== '') return;\n\n window.scrollTo(0, 0);\n const body = document.getElementsByTagName('body')[0];\n body.scrollTop = 0;\n return false;\n}\n\n// this is a hack to fix missing styles on refresh in production\n// reference: https://github.com/gatsbyjs/gatsby/issues/17676#issuecomment-535796737\nexport function replaceHydrateFunction() {\n return (element: ReactElement, container: Container, callback: () => void) => {\n ReactDOM.render(element, container, callback);\n };\n}\n\nexport { default as wrapRootElement } from './src/state/ReduxWrapper';\n","interface IEDocument extends Document {\n documentMode: any;\n}\n\nexport const INITIAL_STATE_KEY = '__INITIAL_STATE__';\n\nexport const inServer = typeof window === 'undefined';\n\nexport const inBrowser = typeof window !== 'undefined';\n\nexport const isMobile = inBrowser && window.orientation > -1;\n\n// @todo: Check that !!(document as IEDocument).documentMode) successfully finds IE browsers\nexport const isIE = /*@cc_on!@*/ false || (!inServer && !!(document as IEDocument).documentMode);\n\nexport const isDevelopment = process.env.NODE_ENV === 'development';\n\nexport const isIOS = inBrowser && window.CSS && CSS.supports('-webkit-overflow-scrolling: touch');\n","// THEME\nexport const ADD_THEME = 'ADD_THEME';\nexport const REMOVE_THEME = 'REMOVE_THEME';\nexport const RESET_THEME = 'RESET_THEME';\n","import invariant from \"invariant\";\n\n////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n\n var dynamicMatch = paramRe.exec(routeSegment);\n\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : invariant(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n\n return match || default_ || null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\nvar match = function match(path, uri) {\n return pick([{ path: path }], uri);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// \n// // instead of\n// \n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname);\n\n // ?a=b, /users?b=c => /users?a=b\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n }\n\n // profile, /users/789 => /users/789/profile\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n }\n\n // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar paramRe = /^:(.+)/;\n\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return { route: route, score: score, index: index };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\n\nvar segmentize = function segmentize(uri) {\n return uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\n\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\nexport { startsWith, pick, match, resolve, insertParams, validateRedirect, shallowCompare };","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; };\n\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n\n\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\n\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n var resolveTransition = function resolveTransition() {};\n\n return {\n get location() {\n return location;\n },\n\n get transitioning() {\n return transitioning;\n },\n\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({ location: location, action: \"POP\" });\n };\n\n source.addEventListener(\"popstate\", popstateListener);\n\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, { key: Date.now() + \"\" });\n // try...catch iOS Safari limits to 100 pushState calls\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({ location: location, action: \"PUSH\" });\n });\n return transition;\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n\n return {\n get location() {\n return stack[index];\n },\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n\n history: {\n get entries() {\n return stack;\n },\n get index() {\n return index;\n },\n get state() {\n return states[index];\n },\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n index++;\n stack.push({ pathname: pathname, search: search.length ? \"?\" + search : search });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n stack[index] = { pathname: pathname, search: search };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n\n index = newIndex;\n }\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate;\n\n////////////////////////////////////////////////////////////////////////////////\n\nexport { globalHistory, navigate, createHistory, createMemorySource };","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; };\n\nfunction _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; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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; }\n\nfunction _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; }\n\n/* eslint-disable jsx-a11y/anchor-has-content */\nimport React, { useContext, createContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport { startsWith, pick, resolve, match, insertParams, validateRedirect, shallowCompare } from \"./lib/utils\";\nimport { globalHistory, navigate, createHistory, createMemorySource } from \"./lib/history\";\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar createNamedContext = function createNamedContext(name, defaultValue) {\n var Ctx = createContext(defaultValue);\n Ctx.displayName = name;\n return Ctx;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Location Context/Provider\nvar LocationContext = createNamedContext(\"Location\");\n\n// sets up a listener if there isn't one already so apps don't need to be\n// wrapped in some top level provider\nvar Location = function Location(_ref) {\n var children = _ref.children;\n return React.createElement(\n LocationContext.Consumer,\n null,\n function (context) {\n return context ? children(context) : React.createElement(\n LocationProvider,\n null,\n children\n );\n }\n );\n};\n\nvar LocationProvider = function (_React$Component) {\n _inherits(LocationProvider, _React$Component);\n\n function LocationProvider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, LocationProvider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n context: _this.getContext(),\n refs: { unlisten: null }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n LocationProvider.prototype.getContext = function getContext() {\n var _props$history = this.props.history,\n navigate = _props$history.navigate,\n location = _props$history.location;\n\n return { navigate: navigate, location: location };\n };\n\n LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {\n if (isRedirect(error)) {\n var _navigate = this.props.history.navigate;\n\n _navigate(error.uri, { replace: true });\n } else {\n throw error;\n }\n };\n\n LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevState.context.location !== this.state.context.location) {\n this.props.history._onTransitionComplete();\n }\n };\n\n LocationProvider.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n var refs = this.state.refs,\n history = this.props.history;\n\n history._onTransitionComplete();\n refs.unlisten = history.listen(function () {\n Promise.resolve().then(function () {\n // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306\n requestAnimationFrame(function () {\n if (!_this2.unmounted) {\n _this2.setState(function () {\n return { context: _this2.getContext() };\n });\n }\n });\n });\n });\n };\n\n LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n var refs = this.state.refs;\n\n this.unmounted = true;\n refs.unlisten();\n };\n\n LocationProvider.prototype.render = function render() {\n var context = this.state.context,\n children = this.props.children;\n\n return React.createElement(\n LocationContext.Provider,\n { value: context },\n typeof children === \"function\" ? children(context) : children || null\n );\n };\n\n return LocationProvider;\n}(React.Component);\n\n////////////////////////////////////////////////////////////////////////////////\n\n\nLocationProvider.defaultProps = {\n history: globalHistory\n};\nprocess.env.NODE_ENV !== \"production\" ? LocationProvider.propTypes = {\n history: PropTypes.object.isRequired\n} : void 0;\nvar ServerLocation = function ServerLocation(_ref2) {\n var url = _ref2.url,\n children = _ref2.children;\n\n var searchIndex = url.indexOf(\"?\");\n var searchExists = searchIndex > -1;\n var pathname = void 0;\n var search = \"\";\n var hash = \"\";\n\n if (searchExists) {\n pathname = url.substring(0, searchIndex);\n search = url.substring(searchIndex);\n } else {\n pathname = url;\n }\n\n return React.createElement(\n LocationContext.Provider,\n {\n value: {\n location: {\n pathname: pathname,\n search: search,\n hash: hash\n },\n navigate: function navigate() {\n throw new Error(\"You can't call navigate on the server.\");\n }\n }\n },\n children\n );\n};\n////////////////////////////////////////////////////////////////////////////////\n// Sets baseuri and basepath for nested routers and links\nvar BaseContext = createNamedContext(\"Base\", {\n baseuri: \"/\",\n basepath: \"/\",\n navigate: globalHistory.navigate\n});\n\n////////////////////////////////////////////////////////////////////////////////\n// The main event, welcome to the show everybody.\nvar Router = function Router(props) {\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (baseContext) {\n return React.createElement(\n Location,\n null,\n function (locationContext) {\n return React.createElement(RouterImpl, _extends({}, baseContext, locationContext, props));\n }\n );\n }\n );\n};\n\nvar RouterImpl = function (_React$PureComponent) {\n _inherits(RouterImpl, _React$PureComponent);\n\n function RouterImpl() {\n _classCallCheck(this, RouterImpl);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n\n RouterImpl.prototype.render = function render() {\n var _props = this.props,\n location = _props.location,\n _navigate2 = _props.navigate,\n basepath = _props.basepath,\n primary = _props.primary,\n children = _props.children,\n baseuri = _props.baseuri,\n _props$component = _props.component,\n component = _props$component === undefined ? \"div\" : _props$component,\n domProps = _objectWithoutProperties(_props, [\"location\", \"navigate\", \"basepath\", \"primary\", \"children\", \"baseuri\", \"component\"]);\n\n var routes = React.Children.toArray(children).reduce(function (array, child) {\n var routes = createRoute(basepath)(child);\n return array.concat(routes);\n }, []);\n var pathname = location.pathname;\n\n\n var match = pick(routes, pathname);\n\n if (match) {\n var params = match.params,\n uri = match.uri,\n route = match.route,\n element = match.route.value;\n\n // remove the /* from the end for child routes relative paths\n\n basepath = route.default ? basepath : route.path.replace(/\\*$/, \"\");\n\n var props = _extends({}, params, {\n uri: uri,\n location: location,\n navigate: function navigate(to, options) {\n return _navigate2(resolve(to, uri), options);\n }\n });\n\n var clone = React.cloneElement(element, props, element.props.children ? React.createElement(\n Router,\n { location: location, primary: primary },\n element.props.children\n ) : undefined);\n\n // using 'div' for < 16.3 support\n var FocusWrapper = primary ? FocusHandler : component;\n // don't pass any props to 'div'\n var wrapperProps = primary ? _extends({ uri: uri, location: location, component: component }, domProps) : domProps;\n\n return React.createElement(\n BaseContext.Provider,\n {\n value: { baseuri: uri, basepath: basepath, navigate: props.navigate }\n },\n React.createElement(\n FocusWrapper,\n wrapperProps,\n clone\n )\n );\n } else {\n // Not sure if we want this, would require index routes at every level\n // warning(\n // false,\n // `\\n\\nNothing matched:\\n\\t${\n // location.pathname\n // }\\n\\nPaths checked: \\n\\t${routes\n // .map(route => route.path)\n // .join(\n // \"\\n\\t\"\n // )}\\n\\nTo get rid of this warning, add a default NotFound component as child of Router:\n // \\n\\tlet NotFound = () =>
Not Found!
\n // \\n\\t\\n\\t \\n\\t {/* ... */}\\n\\t`\n // );\n return null;\n }\n };\n\n return RouterImpl;\n}(React.PureComponent);\n\nRouterImpl.defaultProps = {\n primary: true\n};\n\n\nvar FocusContext = createNamedContext(\"Focus\");\n\nvar FocusHandler = function FocusHandler(_ref3) {\n var uri = _ref3.uri,\n location = _ref3.location,\n component = _ref3.component,\n domProps = _objectWithoutProperties(_ref3, [\"uri\", \"location\", \"component\"]);\n\n return React.createElement(\n FocusContext.Consumer,\n null,\n function (requestFocus) {\n return React.createElement(FocusHandlerImpl, _extends({}, domProps, {\n component: component,\n requestFocus: requestFocus,\n uri: uri,\n location: location\n }));\n }\n );\n};\n\n// don't focus on initial render\nvar initialRender = true;\nvar focusHandlerCount = 0;\n\nvar FocusHandlerImpl = function (_React$Component2) {\n _inherits(FocusHandlerImpl, _React$Component2);\n\n function FocusHandlerImpl() {\n var _temp2, _this4, _ret2;\n\n _classCallCheck(this, FocusHandlerImpl);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) {\n if (!_this4.state.shouldFocus && node) {\n node.focus();\n }\n }, _temp2), _possibleConstructorReturn(_this4, _ret2);\n }\n\n FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n var initial = prevState.uri == null;\n if (initial) {\n return _extends({\n shouldFocus: true\n }, nextProps);\n } else {\n var myURIChanged = nextProps.uri !== prevState.uri;\n var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri;\n return _extends({\n shouldFocus: myURIChanged || navigatedUpToMe\n }, nextProps);\n }\n };\n\n FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {\n focusHandlerCount++;\n this.focus();\n };\n\n FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {\n focusHandlerCount--;\n if (focusHandlerCount === 0) {\n initialRender = true;\n }\n };\n\n FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevProps.location !== this.props.location && this.state.shouldFocus) {\n this.focus();\n }\n };\n\n FocusHandlerImpl.prototype.focus = function focus() {\n if (process.env.NODE_ENV === \"test\") {\n // getting cannot read property focus of null in the tests\n // and that bit of global `initialRender` state causes problems\n // should probably figure it out!\n return;\n }\n\n var requestFocus = this.props.requestFocus;\n\n\n if (requestFocus) {\n requestFocus(this.node);\n } else {\n if (initialRender) {\n initialRender = false;\n } else if (this.node) {\n // React polyfills [autofocus] and it fires earlier than cDM,\n // so we were stealing focus away, this line prevents that.\n if (!this.node.contains(document.activeElement)) {\n this.node.focus();\n }\n }\n }\n };\n\n FocusHandlerImpl.prototype.render = function render() {\n var _this5 = this;\n\n var _props2 = this.props,\n children = _props2.children,\n style = _props2.style,\n requestFocus = _props2.requestFocus,\n _props2$component = _props2.component,\n Comp = _props2$component === undefined ? \"div\" : _props2$component,\n uri = _props2.uri,\n location = _props2.location,\n domProps = _objectWithoutProperties(_props2, [\"children\", \"style\", \"requestFocus\", \"component\", \"uri\", \"location\"]);\n\n return React.createElement(\n Comp,\n _extends({\n style: _extends({ outline: \"none\" }, style),\n tabIndex: \"-1\",\n ref: function ref(n) {\n return _this5.node = n;\n }\n }, domProps),\n React.createElement(\n FocusContext.Provider,\n { value: this.requestFocus },\n this.props.children\n )\n );\n };\n\n return FocusHandlerImpl;\n}(React.Component);\n\npolyfill(FocusHandlerImpl);\n\nvar k = function k() {};\n\n////////////////////////////////////////////////////////////////////////////////\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = function forwardRef(C) {\n return C;\n };\n}\n\nvar Link = forwardRef(function (_ref4, ref) {\n var innerRef = _ref4.innerRef,\n props = _objectWithoutProperties(_ref4, [\"innerRef\"]);\n\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref5) {\n var basepath = _ref5.basepath,\n baseuri = _ref5.baseuri;\n return React.createElement(\n Location,\n null,\n function (_ref6) {\n var location = _ref6.location,\n navigate = _ref6.navigate;\n\n var to = props.to,\n state = props.state,\n replace = props.replace,\n _props$getProps = props.getProps,\n getProps = _props$getProps === undefined ? k : _props$getProps,\n anchorProps = _objectWithoutProperties(props, [\"to\", \"state\", \"replace\", \"getProps\"]);\n\n var href = resolve(to, baseuri);\n var encodedHref = encodeURI(href);\n var isCurrent = location.pathname === encodedHref;\n var isPartiallyCurrent = startsWith(location.pathname, encodedHref);\n\n return React.createElement(\"a\", _extends({\n ref: ref || innerRef,\n \"aria-current\": isCurrent ? \"page\" : undefined\n }, anchorProps, getProps({ isCurrent: isCurrent, isPartiallyCurrent: isPartiallyCurrent, href: href, location: location }), {\n href: href,\n onClick: function onClick(event) {\n if (anchorProps.onClick) anchorProps.onClick(event);\n if (shouldNavigate(event)) {\n event.preventDefault();\n var shouldReplace = replace;\n if (typeof replace !== \"boolean\" && isCurrent) {\n var _location$state = _extends({}, location.state),\n key = _location$state.key,\n restState = _objectWithoutProperties(_location$state, [\"key\"]);\n\n shouldReplace = shallowCompare(_extends({}, state), restState);\n }\n navigate(href, {\n state: state,\n replace: shouldReplace\n });\n }\n }\n }));\n }\n );\n }\n );\n});\n\nLink.displayName = \"Link\";\n\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes = {\n to: PropTypes.string.isRequired\n} : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nfunction RedirectRequest(uri) {\n this.uri = uri;\n}\n\nvar isRedirect = function isRedirect(o) {\n return o instanceof RedirectRequest;\n};\n\nvar redirectTo = function redirectTo(to) {\n throw new RedirectRequest(to);\n};\n\nvar RedirectImpl = function (_React$Component3) {\n _inherits(RedirectImpl, _React$Component3);\n\n function RedirectImpl() {\n _classCallCheck(this, RedirectImpl);\n\n return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n }\n\n // Support React < 16 with this hook\n RedirectImpl.prototype.componentDidMount = function componentDidMount() {\n var _props3 = this.props,\n navigate = _props3.navigate,\n to = _props3.to,\n from = _props3.from,\n _props3$replace = _props3.replace,\n replace = _props3$replace === undefined ? true : _props3$replace,\n state = _props3.state,\n noThrow = _props3.noThrow,\n baseuri = _props3.baseuri,\n props = _objectWithoutProperties(_props3, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n Promise.resolve().then(function () {\n var resolvedTo = resolve(to, baseuri);\n navigate(insertParams(resolvedTo, props), { replace: replace, state: state });\n });\n };\n\n RedirectImpl.prototype.render = function render() {\n var _props4 = this.props,\n navigate = _props4.navigate,\n to = _props4.to,\n from = _props4.from,\n replace = _props4.replace,\n state = _props4.state,\n noThrow = _props4.noThrow,\n baseuri = _props4.baseuri,\n props = _objectWithoutProperties(_props4, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n var resolvedTo = resolve(to, baseuri);\n if (!noThrow) redirectTo(insertParams(resolvedTo, props));\n return null;\n };\n\n return RedirectImpl;\n}(React.Component);\n\nvar Redirect = function Redirect(props) {\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref7) {\n var baseuri = _ref7.baseuri;\n return React.createElement(\n Location,\n null,\n function (locationContext) {\n return React.createElement(RedirectImpl, _extends({}, locationContext, { baseuri: baseuri }, props));\n }\n );\n }\n );\n};\n\nprocess.env.NODE_ENV !== \"production\" ? Redirect.propTypes = {\n from: PropTypes.string,\n to: PropTypes.string.isRequired\n} : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nvar Match = function Match(_ref8) {\n var path = _ref8.path,\n children = _ref8.children;\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref9) {\n var baseuri = _ref9.baseuri;\n return React.createElement(\n Location,\n null,\n function (_ref10) {\n var navigate = _ref10.navigate,\n location = _ref10.location;\n\n var resolvedPath = resolve(path, baseuri);\n var result = match(resolvedPath, location.pathname);\n return children({\n navigate: navigate,\n location: location,\n match: result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null\n });\n }\n );\n }\n );\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Hooks\n\nvar useLocation = function useLocation() {\n var context = useContext(LocationContext);\n\n if (!context) {\n throw new Error(\"useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.location;\n};\n\nvar useNavigate = function useNavigate() {\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useNavigate hook was used but a BaseContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.navigate;\n};\n\nvar useParams = function useParams() {\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n\n var results = match(context.basepath, location.pathname);\n\n return results ? results.params : null;\n};\n\nvar useMatch = function useMatch(path) {\n if (!path) {\n throw new Error(\"useMatch(path: string) requires an argument of a string to match against\");\n }\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n\n var resolvedPath = resolve(path, context.baseuri);\n var result = match(resolvedPath, location.pathname);\n return result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar stripSlashes = function stripSlashes(str) {\n return str.replace(/(^\\/+|\\/+$)/g, \"\");\n};\n\nvar createRoute = function createRoute(basepath) {\n return function (element) {\n if (!element) {\n return null;\n }\n\n if (element.type === React.Fragment && element.props.children) {\n return React.Children.map(element.props.children, createRoute(basepath));\n }\n !(element.props.path || element.props.default || element.type === Redirect) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \": Children of must have a `path` or `default` prop, or be a ``. None found on element type `\" + element.type + \"`\") : invariant(false) : void 0;\n\n !!(element.type === Redirect && (!element.props.from || !element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" requires both \\\"from\\\" and \\\"to\\\" props when inside a .\") : invariant(false) : void 0;\n\n !!(element.type === Redirect && !validateRedirect(element.props.from, element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.\") : invariant(false) : void 0;\n\n if (element.props.default) {\n return { value: element, default: true };\n }\n\n var elementPath = element.type === Redirect ? element.props.from : element.props.path;\n\n var path = elementPath === \"/\" ? basepath : stripSlashes(basepath) + \"/\" + stripSlashes(elementPath);\n\n return {\n value: element,\n default: element.props.default,\n path: element.props.children ? stripSlashes(path) + \"/*\" : path\n };\n };\n};\n\nvar shouldNavigate = function shouldNavigate(event) {\n return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n////////////////////////////////////////////////////////////////////////\nexport { Link, Location, LocationProvider, Match, Redirect, Router, ServerLocation, createHistory, createMemorySource, isRedirect, navigate, redirectTo, globalHistory, match as matchPath, useLocation, useNavigate, useParams, useMatch, resolve , BaseContext };","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n(function() {\n'use strict';\n\n// Exit early if we're not running in a browser.\nif (typeof window !== 'object') {\n return;\n}\n\n// Exit early if all IntersectionObserver and IntersectionObserverEntry\n// features are natively supported.\nif ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype,\n 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n}\n\n\n/**\n * A local reference to the document.\n */\nvar document = window.document;\n\n\n/**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\nvar registry = [];\n\n\n/**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\nfunction IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = entry.rootBounds;\n this.boundingClientRect = entry.boundingClientRect;\n this.intersectionRect = entry.intersectionRect || getEmptyRect();\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n}\n\n\n/**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\nfunction IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (options.root && options.root.nodeType != 1) {\n throw new Error('root must be an Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function(margin) {\n return margin.value + margin.unit;\n }).join(' ');\n}\n\n\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\n/**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n/**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\nIntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n\n/**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.observe = function(target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function(item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({element: target, entry: null});\n this._monitorIntersections();\n this._checkForIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n\n return item.element != target;\n });\n if (!this._observationTargets.length) {\n this._unmonitorIntersections();\n this._unregisterInstance();\n }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = [];\n this._unmonitorIntersections();\n this._unregisterInstance();\n};\n\n\n/**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\nIntersectionObserver.prototype.takeRecords = function() {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n};\n\n\n/**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function(t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n};\n\n\n/**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array} An array of margin objects with the keys\n * value and unit.\n */\nIntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function(margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {value: parseFloat(parts[1]), unit: parts[2]};\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n};\n\n\n/**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function() {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n this._monitoringInterval = setInterval(\n this._checkForIntersections, this.POLL_INTERVAL);\n }\n else {\n addEvent(window, 'resize', this._checkForIntersections, true);\n addEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in window) {\n this._domObserver = new MutationObserver(this._checkForIntersections);\n this._domObserver.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function() {\n if (this._monitoringIntersections) {\n this._monitoringIntersections = false;\n\n clearInterval(this._monitoringInterval);\n this._monitoringInterval = null;\n\n removeEvent(window, 'resize', this._checkForIntersections, true);\n removeEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this._domObserver) {\n this._domObserver.disconnect();\n this._domObserver = null;\n }\n }\n};\n\n\n/**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\nIntersectionObserver.prototype._checkForIntersections = function() {\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function(item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, rootRect);\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootRect,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n};\n\n\n/**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\nIntersectionObserver.prototype._computeTargetAndRootIntersection =\n function(target, rootRect) {\n\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var targetRect = getBoundingClientRect(target);\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return;\n\n if (parent == this.root || parent == document) {\n atRoot = true;\n parentRect = rootRect;\n } else {\n // If the element has a non-visible overflow, and it's not the \n // or element, update the intersection rect.\n // Note: and cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n if (parent != document.body &&\n parent != document.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n\n if (!intersectionRect) break;\n }\n parent = getParentNode(parent);\n }\n return intersectionRect;\n};\n\n\n/**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n var rootRect;\n if (this.root) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use / instead of window since scroll bars affect size.\n var html = document.documentElement;\n var body = document.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n};\n\n\n/**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {Object} rect The rect object to expand.\n * @return {Object} The expanded rect.\n * @private\n */\nIntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n var margins = this._rootMarginValues.map(function(margin, i) {\n return margin.unit == 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n\n return newRect;\n};\n\n\n/**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\nIntersectionObserver.prototype._hasCrossedThreshold =\n function(oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ?\n oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ?\n newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n};\n\n\n/**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\nIntersectionObserver.prototype._rootIsInDom = function() {\n return !this.root || containsDeep(document, this.root);\n};\n\n\n/**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\nIntersectionObserver.prototype._rootContainsTarget = function(target) {\n return containsDeep(this.root || document, target);\n};\n\n\n/**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\nIntersectionObserver.prototype._registerInstance = function() {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n};\n\n\n/**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\nIntersectionObserver.prototype._unregisterInstance = function() {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n};\n\n\n/**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\nfunction now() {\n return window.performance && performance.now && performance.now();\n}\n\n\n/**\n * Throttles a function and delays its execution, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\nfunction throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function() {\n fn();\n timer = null;\n }, timeout);\n }\n };\n}\n\n\n/**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\nfunction addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\nfunction removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object} The intersection rect or undefined if no intersection\n * is found.\n */\nfunction computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n\n return (width >= 0 && height >= 0) && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n}\n\n\n/**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {Object} The (possibly shimmed) rect of the element.\n */\nfunction getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n}\n\n\n/**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {Object} The empty rect.\n */\nfunction getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n}\n\n/**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\nfunction containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n\n node = getParentNode(node);\n }\n return false;\n}\n\n\n/**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\nfunction getParentNode(node) {\n var parent = node.parentNode;\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n\n if (parent && parent.assignedSlot) {\n // If the parent is distributed in a , return the parent of a slot.\n return parent.assignedSlot.parentNode;\n }\n\n return parent;\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}());\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nlet batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport const setBatch = newBatch => batch = newBatch; // Supply a getter just to skip dealing with ESM bindings\n\nexport const getBatch = () => batch;","import * as React from 'react';\nconst ContextKey = Symbol.for(`react-redux-context`);\nconst gT = typeof globalThis !== \"undefined\" ? globalThis :\n/* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */\n{};\n\nfunction getContext() {\n var _gT$ContextKey;\n\n if (!React.createContext) return {};\n const contextMap = (_gT$ContextKey = gT[ContextKey]) != null ? _gT$ContextKey : gT[ContextKey] = new Map();\n let realContext = contextMap.get(React.createContext);\n\n if (!realContext) {\n realContext = React.createContext(null);\n\n if (process.env.NODE_ENV !== 'production') {\n realContext.displayName = 'ReactRedux';\n }\n\n contextMap.set(React.createContext, realContext);\n }\n\n return realContext;\n}\n\nexport const ReactReduxContext = /*#__PURE__*/getContext();\nexport default ReactReduxContext;","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n\n/**\r\n * Hook factory, which creates a `useReduxContext` hook bound to a given context. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useReduxContext` hook bound to the specified context.\r\n */\nexport function createReduxContextHook(context = ReactReduxContext) {\n return function useReduxContext() {\n const contextValue = useContext(context);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a ');\n }\n\n return contextValue;\n };\n}\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const { store } = useReduxContext()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport const useReduxContext = /*#__PURE__*/createReduxContextHook();","import { useCallback, useDebugValue, useRef } from 'react';\nimport { createReduxContextHook, useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { ReactReduxContext } from '../components/Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStoreWithSelector = notInitialized;\nexport const initializeUseSelector = fn => {\n useSyncExternalStoreWithSelector = fn;\n};\n\nconst refEquality = (a, b) => a === b;\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context = ReactReduxContext) {\n const useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : createReduxContextHook(context);\n return function useSelector(selector, equalityFnOrOptions = {}) {\n const {\n equalityFn = refEquality,\n stabilityCheck = undefined,\n noopCheck = undefined\n } = typeof equalityFnOrOptions === 'function' ? {\n equalityFn: equalityFnOrOptions\n } : equalityFnOrOptions;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(`You must pass a selector to useSelector`);\n }\n\n if (typeof selector !== 'function') {\n throw new Error(`You must pass a function as a selector to useSelector`);\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(`You must pass a function as an equality function to useSelector`);\n }\n }\n\n const {\n store,\n subscription,\n getServerState,\n stabilityCheck: globalStabilityCheck,\n noopCheck: globalNoopCheck\n } = useReduxContext();\n const firstRun = useRef(true);\n const wrappedSelector = useCallback({\n [selector.name](state) {\n const selected = selector(state);\n\n if (process.env.NODE_ENV !== 'production') {\n const finalStabilityCheck = typeof stabilityCheck === 'undefined' ? globalStabilityCheck : stabilityCheck;\n\n if (finalStabilityCheck === 'always' || finalStabilityCheck === 'once' && firstRun.current) {\n const toCompare = selector(state);\n\n if (!equalityFn(selected, toCompare)) {\n let stack = undefined;\n\n try {\n throw new Error();\n } catch (e) {\n ;\n ({\n stack\n } = e);\n }\n\n console.warn('Selector ' + (selector.name || 'unknown') + ' returned a different result when called with the same parameters. This can lead to unnecessary rerenders.' + '\\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization', {\n state,\n selected,\n selected2: toCompare,\n stack\n });\n }\n }\n\n const finalNoopCheck = typeof noopCheck === 'undefined' ? globalNoopCheck : noopCheck;\n\n if (finalNoopCheck === 'always' || finalNoopCheck === 'once' && firstRun.current) {\n // @ts-ignore\n if (selected === state) {\n let stack = undefined;\n\n try {\n throw new Error();\n } catch (e) {\n ;\n ({\n stack\n } = e);\n }\n\n console.warn('Selector ' + (selector.name || 'unknown') + ' returned the root state when called. This can lead to unnecessary rerenders.' + '\\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.', {\n stack\n });\n }\n }\n\n if (firstRun.current) firstRun.current = false;\n }\n\n return selected;\n }\n\n }[selector.name], [selector, globalStabilityCheck, stabilityCheck]);\n const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, wrappedSelector, equalityFn);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return
{counter}
\r\n * }\r\n */\n\nexport const useSelector = /*#__PURE__*/createSelectorHook();","export const notInitialized = () => {\n throw new Error('uSES not initialized!');\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n const batch = getBatch();\n let first = null;\n let last = null;\n return {\n clear() {\n first = null;\n last = null;\n },\n\n notify() {\n batch(() => {\n let listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n\n get() {\n let listeners = [];\n let listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n\n subscribe(callback) {\n let isSubscribed = true;\n let listener = last = {\n callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n\n };\n}\n\nconst nullListeners = {\n notify() {},\n\n get: () => []\n};\nexport function createSubscription(store, parentSub) {\n let unsubscribe;\n let listeners = nullListeners; // Reasons to keep the subscription active\n\n let subscriptionsAmount = 0; // Is this specific subscription subscribed (or only nested ones?)\n\n let selfSubscribed = false;\n\n function addNestedSub(listener) {\n trySubscribe();\n const cleanupListener = listeners.subscribe(listener); // cleanup nested sub\n\n let removed = false;\n return () => {\n if (!removed) {\n removed = true;\n cleanupListener();\n tryUnsubscribe();\n }\n };\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return selfSubscribed;\n }\n\n function trySubscribe() {\n subscriptionsAmount++;\n\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n subscriptionsAmount--;\n\n if (unsubscribe && subscriptionsAmount === 0) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n function trySubscribeSelf() {\n if (!selfSubscribed) {\n selfSubscribed = true;\n trySubscribe();\n }\n }\n\n function tryUnsubscribeSelf() {\n if (selfSubscribed) {\n selfSubscribed = false;\n tryUnsubscribe();\n }\n }\n\n const subscription = {\n addNestedSub,\n notifyNestedSubs,\n handleChangeWrapper,\n isSubscribed,\n trySubscribe: trySubscribeSelf,\n tryUnsubscribe: tryUnsubscribeSelf,\n getListeners: () => listeners\n };\n return subscription;\n}","import * as React from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n// Matches logic in React's `shared/ExecutionEnvironment` file\n\nexport const canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\nexport const useIsomorphicLayoutEffect = canUseDOM ? React.useLayoutEffect : React.useEffect;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"reactReduxForwardedRef\"];\n\n/* eslint-disable valid-jsdoc, @typescript-eslint/no-unused-vars */\nimport hoistStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport defaultSelectorFactory from '../connect/selectorFactory';\nimport { mapDispatchToPropsFactory } from '../connect/mapDispatchToProps';\nimport { mapStateToPropsFactory } from '../connect/mapStateToProps';\nimport { mergePropsFactory } from '../connect/mergeProps';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport shallowEqual from '../utils/shallowEqual';\nimport warning from '../utils/warning';\nimport { ReactReduxContext } from './Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStore = notInitialized;\nexport const initializeConnect = fn => {\n useSyncExternalStore = fn;\n}; // Define some constant arrays just to avoid re-creating these\n\nconst EMPTY_ARRAY = [null, 0];\nconst NO_SUBSCRIPTION_ARRAY = [null, null]; // Attempts to stringify whatever not-really-a-component value we were given\n// for logging in an error message\n\nconst stringifyComponent = Comp => {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\n// This is \"just\" a `useLayoutEffect`, but with two modifications:\n// - we need to fall back to `useEffect` in SSR to avoid annoying warnings\n// - we extract this to a separate function to avoid closing over values\n// and causing memory leaks\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(() => effectFunc(...effectArgs), dependencies);\n} // Effect callback, extracted: assign the latest props values to refs for later usage\n\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, // actualChildProps: unknown,\nchildPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n} // Effect callback, extracted: subscribe to the Redux store or nearest connected ancestor,\n// check for updates after dispatched actions, and trigger re-renders.\n\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, // forceComponentUpdateDispatch: React.Dispatch,\nadditionalSubscribeListener) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return () => {}; // Capture values for checking if and when this component unmounts\n\n let didUnsubscribe = false;\n let lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n const checkForUpdates = () => {\n if (didUnsubscribe || !isMounted.current) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n } // TODO We're currently calling getState ourselves here, rather than letting `uSES` do it\n\n\n const latestStoreState = store.getState();\n let newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // TODO This is hacky and not how `uSES` is meant to be used\n // Trigger the React `useSyncExternalStore` subscriber\n\n additionalSubscribeListener();\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n const unsubscribeWrapper = () => {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n} // Reducer initial state creation for our update reducer\n\n\nconst initStateUpdates = () => EMPTY_ARRAY;\n\nfunction strictEqual(a, b) {\n return a === b;\n}\n/**\r\n * Infers the type of props that a connector will inject into a component.\r\n */\n\n\nlet hasWarnedAboutDeprecatedPureOption = false;\n/**\r\n * Connects a React component to a Redux store.\r\n *\r\n * - Without arguments, just wraps the component, without changing the behavior / props\r\n *\r\n * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior\r\n * is to override ownProps (as stated in the docs), so what remains is everything that's\r\n * not a state or dispatch prop\r\n *\r\n * - When 3rd param is passed, we don't know if ownProps propagate and whether they\r\n * should be valid component props, because it depends on mergeProps implementation.\r\n * As such, it is the user's responsibility to extend ownProps interface from state or\r\n * dispatch props or both when applicable\r\n *\r\n * @param mapStateToProps A function that extracts values from state\r\n * @param mapDispatchToProps Setup for dispatching actions\r\n * @param mergeProps Optional callback to merge state and dispatch props together\r\n * @param options Options for configuring the connection\r\n *\r\n */\n\nfunction connect(mapStateToProps, mapDispatchToProps, mergeProps, {\n // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.\n // @ts-ignore\n pure,\n areStatesEqual = strictEqual,\n areOwnPropsEqual = shallowEqual,\n areStatePropsEqual = shallowEqual,\n areMergedPropsEqual = shallowEqual,\n // use React's forwardRef to expose a ref of the wrapped component\n forwardRef = false,\n // the context consumer to use\n context = ReactReduxContext\n} = {}) {\n if (process.env.NODE_ENV !== 'production') {\n if (pure !== undefined && !hasWarnedAboutDeprecatedPureOption) {\n hasWarnedAboutDeprecatedPureOption = true;\n warning('The `pure` option has been removed. `connect` is now always a \"pure/memoized\" component');\n }\n }\n\n const Context = context;\n const initMapStateToProps = mapStateToPropsFactory(mapStateToProps);\n const initMapDispatchToProps = mapDispatchToPropsFactory(mapDispatchToProps);\n const initMergeProps = mergePropsFactory(mergeProps);\n const shouldHandleStateChanges = Boolean(mapStateToProps);\n\n const wrapWithConnect = WrappedComponent => {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(`You must pass a component to the function returned by connect. Instead received ${stringifyComponent(WrappedComponent)}`);\n }\n\n const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n const displayName = `Connect(${wrappedComponentName})`;\n const selectorFactoryOptions = {\n shouldHandleStateChanges,\n displayName,\n wrappedComponentName,\n WrappedComponent,\n // @ts-ignore\n initMapStateToProps,\n // @ts-ignore\n initMapDispatchToProps,\n initMergeProps,\n areStatesEqual,\n areStatePropsEqual,\n areOwnPropsEqual,\n areMergedPropsEqual\n };\n\n function ConnectFunction(props) {\n const [propsContext, reactReduxForwardedRef, wrapperProps] = React.useMemo(() => {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n const {\n reactReduxForwardedRef\n } = props,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]);\n const ContextToUse = React.useMemo(() => {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && // @ts-ignore\n isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n const contextValue = React.useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(`Could not find \"store\" in the context of ` + `\"${displayName}\". Either wrap the root component in a , ` + `or pass a custom React context provider to and the corresponding ` + `React context consumer to ${displayName} in connect options.`);\n } // Based on the previous check, one of these must be true\n\n\n const store = didStoreComeFromProps ? props.store : contextValue.store;\n const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState;\n const childPropsSelector = React.useMemo(() => {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return defaultSelectorFactory(store.dispatch, selectorFactoryOptions);\n }, [store]);\n const [subscription, notifyNestedSubs] = React.useMemo(() => {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n const subscription = createSubscription(store, didStoreComeFromProps ? undefined : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n const notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]); // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n const overriddenContextValue = React.useMemo(() => {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // Set up refs to coordinate values between the subscription effect and the render logic\n\n const lastChildProps = React.useRef();\n const lastWrapperProps = React.useRef(wrapperProps);\n const childPropsFromStoreUpdate = React.useRef();\n const renderIsScheduled = React.useRef(false);\n const isProcessingDispatch = React.useRef(false);\n const isMounted = React.useRef(false);\n const latestSubscriptionCallbackError = React.useRef();\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n const actualChildPropsSelector = React.useMemo(() => {\n const selector = () => {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n };\n\n return selector;\n }, [store, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n const subscribeForReact = React.useMemo(() => {\n const subscribe = reactListener => {\n if (!subscription) {\n return () => {};\n }\n\n return subscribeUpdates(shouldHandleStateChanges, store, subscription, // @ts-ignore\n childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, reactListener);\n };\n\n return subscribe;\n }, [subscription]);\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs]);\n let actualChildProps;\n\n try {\n actualChildProps = useSyncExternalStore( // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing\n subscribeForReact, // TODO This is incredibly hacky. We've already processed the store update and calculated new child props,\n // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.\n actualChildPropsSelector, getServerState ? () => childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector);\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n ;\n err.message += `\\nThe error may be correlated with this previous error:\\n${latestSubscriptionCallbackError.current.stack}\\n\\n`;\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(() => {\n latestSubscriptionCallbackError.current = undefined;\n childPropsFromStoreUpdate.current = undefined;\n lastChildProps.current = actualChildProps;\n }); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n const renderedWrappedComponent = React.useMemo(() => {\n return (\n /*#__PURE__*/\n // @ts-ignore\n React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }))\n );\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n const renderedChild = React.useMemo(() => {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n }\n\n const _Connect = React.memo(ConnectFunction);\n\n // Add a hacky cast to get the right output type\n const Connect = _Connect;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n const _forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n // @ts-ignore\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n\n const forwarded = _forwarded;\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n\n return wrapWithConnect;\n}\n\nexport default connect;","import * as React from 'react';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider({\n store,\n context,\n children,\n serverState,\n stabilityCheck = 'once',\n noopCheck = 'once'\n}) {\n const contextValue = React.useMemo(() => {\n const subscription = createSubscription(store);\n return {\n store,\n subscription,\n getServerState: serverState ? () => serverState : undefined,\n stabilityCheck,\n noopCheck\n };\n }, [store, serverState, stabilityCheck, noopCheck]);\n const previousState = React.useMemo(() => store.getState(), [store]);\n useIsomorphicLayoutEffect(() => {\n const {\n subscription\n } = contextValue;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return () => {\n subscription.tryUnsubscribe();\n subscription.onStateChange = undefined;\n };\n }, [contextValue, previousState]);\n const Context = context || ReactReduxContext; // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype\n\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nexport default Provider;","import { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext, createReduxContextHook } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context = ReactReduxContext) {\n const useReduxContext = // @ts-ignore\n context === ReactReduxContext ? useDefaultReduxContext : // @ts-ignore\n createReduxContextHook(context);\n return function useStore() {\n const {\n store\n } = useReduxContext(); // @ts-ignore\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport const useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context = ReactReduxContext) {\n const useStore = // @ts-ignore\n context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n const store = useStore(); // @ts-ignore\n\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n *
\r\n * {value}\r\n * \r\n *
\r\n * )\r\n * }\r\n */\n\nexport const useDispatch = /*#__PURE__*/createDispatchHook();","// The primary entry point assumes we're working with standard ReactDOM/RN, but\n// older versions that do not include `useSyncExternalStore` (React 16.9 - 17.x).\n// Because of that, the useSyncExternalStore compat shim is needed.\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch';\nimport { initializeUseSelector } from './hooks/useSelector';\nimport { initializeConnect } from './components/connect';\ninitializeUseSelector(useSyncExternalStoreWithSelector);\ninitializeConnect(useSyncExternalStore); // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };\nexport * from './exports';","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","\"use strict\";function insertRule(e){try{return sheet.insertRule(e,sheet.cssRules.length)}catch(e){console.warn(\"react-reveal - animation failed\")}}function cascade(e,n,t,o,r){var s=Math.log(o),i=Math.log(r),a=(i-s)/(t-n);return Math.exp(s+a*(e-n))}function animation(e){if(!sheet)return\"\";var n=\"@keyframes \"+(name+counter)+\"{\"+e+\"}\",t=effectMap[e];return t?\"\"+name+t:(sheet.insertRule(n,sheet.cssRules.length),effectMap[e]=counter,\"\"+name+counter++)}function hideAll(){globalHide||(exports.globalHide=globalHide=!0,window.removeEventListener(\"scroll\",hideAll,!0),insertRule(\".\"+namespace+\" { opacity: 0; }\"),window.removeEventListener(\"orientationchange\",hideAll,!0),window.document.removeEventListener(\"visibilitychange\",hideAll))}function config(e){var n=e.ssrFadeout;exports.fadeOutEnabled=fadeOutEnabled=n}Object.defineProperty(exports,\"__esModule\",{value:!0}),exports.insertRule=insertRule,exports.cascade=cascade,exports.animation=animation,exports.hideAll=hideAll,exports.default=config;var namespace=exports.namespace=\"react-reveal\",defaults=exports.defaults={duration:1e3,delay:0,count:1},ssr=exports.ssr=!0,observerMode=exports.observerMode=!1,raf=exports.raf=function(e){return window.setTimeout(e,66)},disableSsr=exports.disableSsr=function(){return exports.ssr=ssr=!1},fadeOutEnabled=exports.fadeOutEnabled=!1,ssrFadeout=exports.ssrFadeout=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return exports.fadeOutEnabled=fadeOutEnabled=e},globalHide=exports.globalHide=!1,ie10=exports.ie10=!1,collapseend=exports.collapseend=void 0,counter=1,effectMap={},sheet=!1,name=namespace+\"-\"+Math.floor(1e15*Math.random())+\"-\";if(\"undefined\"!=typeof window&&\"nodejs\"!==window.name&&window.document&&\"undefined\"!=typeof navigator){exports.observerMode=observerMode=\"IntersectionObserver\"in window&&\"IntersectionObserverEntry\"in window&&\"intersectionRatio\"in window.IntersectionObserverEntry.prototype&&/\\{\\s*\\[native code\\]\\s*\\}/.test(\"\"+IntersectionObserver),exports.raf=raf=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||raf,exports.ssr=ssr=window.document.querySelectorAll(\"div[data-reactroot]\").length>0,-1!==navigator.appVersion.indexOf(\"MSIE 10\")&&(exports.ie10=ie10=!0),ssr&&\"performance\"in window&&\"timing\"in window.performance&&\"domContentLoadedEventEnd\"in window.performance.timing&&window.performance.timing.domLoading&&Date.now()-window.performance.timing.domLoading<300&&(exports.ssr=ssr=!1),ssr&&window.setTimeout(disableSsr,1500),observerMode||(exports.collapseend=collapseend=document.createEvent(\"Event\"),collapseend.initEvent(\"collapseend\",!0,!0));var element=document.createElement(\"style\");document.head.appendChild(element),element.sheet&&element.sheet.cssRules&&element.sheet.insertRule&&(sheet=element.sheet,window.addEventListener(\"scroll\",hideAll,!0),window.addEventListener(\"orientationchange\",hideAll,!0),window.document.addEventListener(\"visibilitychange\",hideAll))}","'use strict';\n\nvar compose = require('redux').compose;\n\nexports.__esModule = true;\nexports.composeWithDevTools =\n typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\n ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\n : function () {\n if (arguments.length === 0) return undefined;\n if (typeof arguments[0] === 'object') return compose;\n return compose.apply(null, arguments);\n };\n\nexports.devToolsEnhancer =\n typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__\n ? window.__REDUX_DEVTOOLS_EXTENSION__\n : function () {\n return function (noop) {\n return noop;\n };\n };\n","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nexport default function _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.sal=t():e.sal=t()}(this,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"dist/\",n(n.s=0)}([function(e,t,n){\"use strict\";n.r(t);n(1);function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=l.threshold?(!function(e){e.target.classList.add(l.animateClassName),f(l.enterEventName,e)}(e),l.once&&t.unobserve(e.target)):l.once||function(e){e.target.classList.remove(l.animateClassName),f(l.exitEventName,e)}(e)}))},m=function(){d(),c.disconnect(),c=null},y=function(){document.body.classList.remove(l.disabledClassName),c=new IntersectionObserver(p,{rootMargin:l.rootMargin,threshold:l.threshold}),(u=[].filter.call(document.querySelectorAll(l.selector),(function(e){return!function(e){return e.classList.contains(l.animateClassName)}(e,l.animateClassName)}))).forEach((function(e){return c.observe(e)}))};t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l;if(e!==l&&(l=o({},l,{},e)),\"undefined\"==typeof window)return console.warn(a),{elements:u,disable:m,enable:y};if(!window.IntersectionObserver)throw d(),Error(s);return b()?d():y(),{elements:u,disable:m,enable:y}}},function(e,t,n){}]).default}));\n//# sourceMappingURL=sal.js.map","function _extends() { _extends = Object.assign ? Object.assign.bind() : 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; }; return _extends.apply(this, arguments); }\n\n/* eslint-env browser */\n\n/* eslint-disable no-unused-vars, no-redeclare, no-shadow */\nimport * as React from \"react\";\nimport { driver, getInitialStyle } from \"styletron-standard\";\nimport { addDebugMetadata, setupDevtoolsExtension, DebugEngine } from \"./dev-tool\";\nexport { DebugEngine };\nconst noopEngine = {\n renderStyle: () => \"\",\n renderKeyframes: () => \"\",\n renderFontFace: () => \"\"\n};\nconst StyletronContext = /*#__PURE__*/React.createContext(noopEngine);\nconst HydrationContext = /*#__PURE__*/React.createContext(false);\nconst DebugEngineContext = /*#__PURE__*/React.createContext(undefined); //todo: theme context removed\n\nclass DevProvider extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hydrating: Boolean(props.debugAfterHydration)\n };\n }\n\n componentDidMount() {\n if (true) {\n if (this.state.hydrating === true) {\n this.setState({\n hydrating: false\n });\n }\n }\n }\n\n render() {\n return /*#__PURE__*/React.createElement(StyletronContext.Provider, {\n value: this.props.value\n }, /*#__PURE__*/React.createElement(DebugEngineContext.Provider, {\n value: this.props.debug\n }, /*#__PURE__*/React.createElement(HydrationContext.Provider, {\n value: this.state.hydrating\n }, this.props.children)));\n }\n\n}\n\nexport const Provider = true && process.env.NODE_ENV !== \"production\" ? DevProvider : StyletronContext.Provider;\n\nif (true && process.env.NODE_ENV !== \"production\" && !window.__STYLETRON_DEVTOOLS__) {\n setupDevtoolsExtension();\n}\n\nfunction checkNoopEngine(engine) {\n // if no engine provided, we default to no-op, handy for tests\n // however, print a warning in other envs\n if (process.env.NODE_ENV !== \"test\") {\n engine === noopEngine && // eslint-disable-next-line no-console\n console.warn(process.env.NODE_ENV !== \"production\" ? `\nStyletron has been switched to a no-op (test) mode.\n\nA Styletron styled component was rendered, but no Styletron engine instance was provided in React context.\n\nDid you forget to provide a Styletron engine instance to React context via using the Styletron provider component?\n\nNote: Providers and Consumers must come from the exact same React.createContext call to work.\nIf your app has multiple instances of the \"styletron-react\" package in your node_module tree,\nyour Provider may be coming from a different React.createContext call, which means the styled components\nwill not recieve the provided engine instance. This scenario can arise, for example, when using \"npm link\".\n` : `Styletron Provider is not set up. Defaulting to no-op.`);\n }\n}\n\nexport function useStyletron() {\n const styletronEngine = React.useContext(StyletronContext);\n const debugEngine = React.useContext(DebugEngineContext);\n const hydrating = React.useContext(HydrationContext);\n checkNoopEngine(styletronEngine);\n const debugClassName = React.useRef(\"\");\n const prevDebugClassNameDeps = React.useRef([]);\n return [function css(style) {\n const className = driver(style, styletronEngine);\n\n if (!(true && process.env.NODE_ENV !== \"production\")) {\n return className;\n }\n\n const {\n stack,\n message\n } = new Error(\"stacktrace source\");\n const nextDeps = [debugEngine, hydrating];\n\n if (prevDebugClassNameDeps.current[0] !== nextDeps[0] || prevDebugClassNameDeps.current[1] !== nextDeps[1]) {\n if (debugEngine && !hydrating) {\n debugClassName.current = debugEngine.debug({\n stackInfo: {\n stack,\n message\n },\n stackIndex: 1\n });\n }\n\n prevDebugClassNameDeps.current = nextDeps;\n }\n\n if (debugClassName.current) {\n return `${debugClassName.current} ${className}`;\n }\n\n return className;\n }];\n}\nexport function createStyled({\n getInitialStyle,\n driver,\n wrapper\n}) {\n function styled(base, styleArg) {\n if (process.env.NODE_ENV !== \"production\") {\n if (base.__STYLETRON__) {\n /* eslint-disable no-console */\n console.warn(\"It appears you are passing a styled component into `styled`.\");\n console.warn(\"For composition with existing styled components, use `withStyle` or `withTransform` instead.\");\n /* eslint-enable no-console */\n }\n }\n\n const baseStyletron = {\n reducers: [],\n base: base,\n driver,\n getInitialStyle,\n wrapper\n };\n\n if (true && process.env.NODE_ENV !== \"production\") {\n addDebugMetadata(baseStyletron, 2);\n }\n\n return createStyledElementComponent(autoComposeShallow(baseStyletron, styleArg));\n }\n\n return styled;\n}\nexport const styled = createStyled({\n getInitialStyle,\n driver,\n wrapper: Component => Component\n});\nexport const withTransform = (component, transformer) => {\n const styletron = component.__STYLETRON__;\n\n if (true && process.env.NODE_ENV !== \"production\") {\n addDebugMetadata(styletron, 2);\n }\n\n return createStyledElementComponent(composeDynamic(styletron, transformer));\n};\nexport const withStyleDeep = (component, styleArg) => {\n // @ts-ignore\n const styletron = component.__STYLETRON__;\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!styletron) {\n /* eslint-disable no-console */\n console.warn(\"The first parameter to `withStyle` must be a styled component (without extra wrappers).\");\n /* eslint-enable no-console */\n }\n }\n\n if (true && process.env.NODE_ENV !== \"production\") {\n addDebugMetadata(styletron, 2);\n return createStyledElementComponent(addExtension(autoComposeDeep(styletron, styleArg), component, styleArg));\n } else {\n return createStyledElementComponent(autoComposeDeep(styletron, styleArg));\n }\n};\nexport const withStyle = withStyleDeep;\nexport const withWrapper = (component, wrapper) => {\n const styletron = component.__STYLETRON__;\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!styletron) {\n /* eslint-disable no-console */\n console.warn(\"The first parameter to `withWrapper` must be a styled component (without extra wrappers).\");\n /* eslint-enable no-console */\n }\n }\n\n const composed = {\n getInitialStyle: styletron.getInitialStyle,\n base: styletron.base,\n driver: styletron.driver,\n wrapper: wrapper,\n reducers: styletron.reducers\n };\n\n if (true && process.env.NODE_ENV !== \"production\") {\n addDebugMetadata(composed, 2);\n }\n\n return createStyledElementComponent(composed);\n};\nexport function autoComposeShallow(styletron, styleArg) {\n if (typeof styleArg === \"function\") {\n return dynamicComposeShallow(styletron, styleArg);\n }\n\n return staticComposeShallow(styletron, styleArg);\n}\n\nfunction addExtension(composed, component, styleArg) {\n return { ...composed,\n ext: {\n with: styleArg,\n name: component.displayName,\n base: component.__STYLETRON__.base,\n getInitialStyle: component.__STYLETRON__.reducers.length ? component.__STYLETRON__.reducers[0].reducer : component.__STYLETRON__.getInitialStyle\n }\n };\n}\n\nexport function autoComposeDeep(styletron, styleArg) {\n if (typeof styleArg === \"function\") {\n return dynamicComposeDeep(styletron, styleArg);\n }\n\n return staticComposeDeep(styletron, styleArg);\n}\nexport function staticComposeShallow(styletron, style) {\n return composeStatic(styletron, createShallowMergeReducer(style));\n}\nexport function staticComposeDeep(styletron, style) {\n return composeStatic(styletron, createDeepMergeReducer(style));\n}\nexport function dynamicComposeShallow(styletron, styleFn) {\n return composeDynamic(styletron, (style, props) => shallowMerge(style, styleFn(props)));\n}\nexport function dynamicComposeDeep(styletron, styleFn) {\n return composeDynamic(styletron, (style, props) => deepMerge(style, styleFn(props)));\n}\nexport function createShallowMergeReducer(style) {\n return {\n reducer: inputStyle => shallowMerge(inputStyle, style),\n assignmentCommutative: true,\n factory: createShallowMergeReducer,\n style: style\n };\n}\nexport function createDeepMergeReducer(style) {\n return {\n reducer: inputStyle => deepMerge(inputStyle, style),\n assignmentCommutative: true,\n factory: createDeepMergeReducer,\n style: style\n };\n}\nexport function composeStatic(styletron, reducerContainer) {\n if (styletron.reducers.length === 0) {\n const style = reducerContainer.reducer(styletron.getInitialStyle());\n const result = {\n reducers: styletron.reducers,\n base: styletron.base,\n driver: styletron.driver,\n wrapper: styletron.wrapper,\n getInitialStyle: () => style\n };\n\n if (true && process.env.NODE_ENV !== \"production\") {\n result.debug = styletron.debug;\n }\n\n return result;\n } else {\n const last = styletron.reducers[0];\n\n if (last.assignmentCommutative === true && reducerContainer.assignmentCommutative === true) {\n const composed = reducerContainer.reducer(last.style);\n const result = {\n getInitialStyle: styletron.getInitialStyle,\n base: styletron.base,\n driver: styletron.driver,\n wrapper: styletron.wrapper,\n reducers: [last.factory(composed)].concat(styletron.reducers.slice(1))\n };\n\n if (true && process.env.NODE_ENV !== \"production\") {\n result.debug = styletron.debug;\n }\n\n return result;\n }\n\n return composeDynamic(styletron, reducerContainer.reducer);\n }\n}\nexport function composeDynamic(styletron, reducer) {\n const composed = {\n getInitialStyle: styletron.getInitialStyle,\n base: styletron.base,\n driver: styletron.driver,\n wrapper: styletron.wrapper,\n // @ts-ignore\n reducers: [{\n assignmentCommutative: false,\n reducer\n }].concat(styletron.reducers)\n };\n\n if (true && process.env.NODE_ENV !== \"production\") {\n composed.debug = styletron.debug;\n }\n\n return composed;\n}\nexport function createStyledElementComponent(styletron) {\n const {\n reducers,\n base,\n driver,\n wrapper,\n getInitialStyle,\n ext\n } = styletron;\n\n if (true && process.env.NODE_ENV !== \"production\") {\n var debugStackInfo, debugStackIndex;\n\n if (styletron.debug) {\n debugStackInfo = styletron.debug.stackInfo;\n debugStackIndex = styletron.debug.stackIndex;\n }\n }\n\n if (true && process.env.NODE_ENV !== \"production\") {\n var debugClassName;\n }\n\n const StyledElement = /*#__PURE__*/React.forwardRef((props, ref) => {\n const styletron = React.useContext(StyletronContext);\n const debugEngine = React.useContext(DebugEngineContext);\n const hydrating = React.useContext(HydrationContext);\n checkNoopEngine(styletron);\n const elementProps = omitPrefixedKeys(props);\n let style = resolveStyle(getInitialStyle, reducers, props);\n\n if (props.$style) {\n if (typeof props.$style === \"function\") {\n style = deepMerge(style, props.$style(props));\n } else {\n style = deepMerge(style, props.$style);\n }\n }\n\n const styleClassString = driver(style, styletron);\n const Element = props.$as ? props.$as : base;\n elementProps.className = props.className ? `${props.className} ${styleClassString}` : styleClassString;\n\n if (true && process.env.NODE_ENV !== \"production\" && debugEngine && !hydrating) {\n if (!debugClassName) {\n debugClassName = debugEngine.debug({\n stackInfo: debugStackInfo,\n stackIndex: debugStackIndex\n });\n }\n\n const joined = `${debugClassName} ${elementProps.className}`;\n elementProps.className = joined;\n }\n\n if (true && process.env.NODE_ENV !== \"production\" && window.__STYLETRON_DEVTOOLS__) {\n window.__STYLETRON_DEVTOOLS__.stylesMap.set(elementProps.className, style);\n\n if (ext) {\n window.__STYLETRON_DEVTOOLS__.extensionsMap.set(elementProps.className, {\n base: ext.base,\n displayName: ext.name,\n initialStyles: ext.getInitialStyle({}, props),\n styleOverrides: typeof ext.with === \"function\" ? ext.with(props) : ext.with\n });\n }\n }\n\n if (props.$ref) {\n // eslint-disable-next-line no-console\n console.warn(\"The prop `$ref` has been deprecated. Use `ref` instead. Refs are now forwarded with React.forwardRef.\");\n }\n\n return /*#__PURE__*/React.createElement(Element, _extends({}, elementProps, {\n ref: ref || props.$ref\n }));\n });\n const Wrapped = wrapper(StyledElement);\n Wrapped.__STYLETRON__ = {\n base,\n reducers,\n driver,\n wrapper,\n getInitialStyle\n };\n\n if (process.env.NODE_ENV !== \"production\") {\n let displayName;\n\n if (typeof base === \"string\") {\n displayName = base;\n } else if (base.displayName) {\n displayName = base.displayName;\n } else if (base.name) {\n displayName = base.name;\n } else {\n displayName = \"Unknown\";\n }\n\n Wrapped.displayName = `Styled(${displayName})`;\n }\n\n return Wrapped;\n} // Utility functions\n\nexport function resolveStyle(getInitialStyle, reducers, props) {\n let result = getInitialStyle();\n let i = reducers.length;\n\n while (i--) {\n // Cast to allow passing unused props param in case of static reducer\n const reducer = reducers[i].reducer;\n result = reducer(result, props);\n }\n\n return result;\n}\n\nfunction isObject(x) {\n return typeof x === \"object\" && x !== null;\n}\n\nfunction omitPrefixedKeys(source) {\n const result = {};\n\n for (const key in source) {\n if (key[0] !== \"$\") {\n result[key] = source[key];\n }\n }\n\n return result;\n}\n\nfunction deepMerge(a, b) {\n const result = assign({}, a);\n\n for (const key in b) {\n const val = b[key];\n\n if (isObject(val) && isObject(a[key])) {\n result[key] = deepMerge(a[key], val);\n } else {\n result[key] = val;\n }\n }\n\n return result;\n}\n\nfunction shallowMerge(a, b) {\n return assign(assign({}, a), b);\n}\n\nfunction assign(target, source) {\n for (const key in source) {\n target[key] = source[key];\n }\n\n return target;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImRyaXZlciIsImdldEluaXRpYWxTdHlsZSIsImFkZERlYnVnTWV0YWRhdGEiLCJzZXR1cERldnRvb2xzRXh0ZW5zaW9uIiwiRGVidWdFbmdpbmUiLCJub29wRW5naW5lIiwicmVuZGVyU3R5bGUiLCJyZW5kZXJLZXlmcmFtZXMiLCJyZW5kZXJGb250RmFjZSIsIlN0eWxldHJvbkNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiSHlkcmF0aW9uQ29udGV4dCIsIkRlYnVnRW5naW5lQ29udGV4dCIsInVuZGVmaW5lZCIsIkRldlByb3ZpZGVyIiwiQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInN0YXRlIiwiaHlkcmF0aW5nIiwiQm9vbGVhbiIsImRlYnVnQWZ0ZXJIeWRyYXRpb24iLCJjb21wb25lbnREaWRNb3VudCIsInNldFN0YXRlIiwicmVuZGVyIiwidmFsdWUiLCJkZWJ1ZyIsImNoaWxkcmVuIiwiUHJvdmlkZXIiLCJ3aW5kb3ciLCJfX1NUWUxFVFJPTl9ERVZUT09MU19fIiwiY2hlY2tOb29wRW5naW5lIiwiZW5naW5lIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29uc29sZSIsIndhcm4iLCJ1c2VTdHlsZXRyb24iLCJzdHlsZXRyb25FbmdpbmUiLCJ1c2VDb250ZXh0IiwiZGVidWdFbmdpbmUiLCJkZWJ1Z0NsYXNzTmFtZSIsInVzZVJlZiIsInByZXZEZWJ1Z0NsYXNzTmFtZURlcHMiLCJjc3MiLCJzdHlsZSIsImNsYXNzTmFtZSIsInN0YWNrIiwibWVzc2FnZSIsIkVycm9yIiwibmV4dERlcHMiLCJjdXJyZW50Iiwic3RhY2tJbmZvIiwic3RhY2tJbmRleCIsImNyZWF0ZVN0eWxlZCIsIndyYXBwZXIiLCJzdHlsZWQiLCJiYXNlIiwic3R5bGVBcmciLCJfX1NUWUxFVFJPTl9fIiwiYmFzZVN0eWxldHJvbiIsInJlZHVjZXJzIiwiY3JlYXRlU3R5bGVkRWxlbWVudENvbXBvbmVudCIsImF1dG9Db21wb3NlU2hhbGxvdyIsIndpdGhUcmFuc2Zvcm0iLCJjb21wb25lbnQiLCJ0cmFuc2Zvcm1lciIsInN0eWxldHJvbiIsImNvbXBvc2VEeW5hbWljIiwid2l0aFN0eWxlRGVlcCIsImFkZEV4dGVuc2lvbiIsImF1dG9Db21wb3NlRGVlcCIsIndpdGhTdHlsZSIsIndpdGhXcmFwcGVyIiwiY29tcG9zZWQiLCJkeW5hbWljQ29tcG9zZVNoYWxsb3ciLCJzdGF0aWNDb21wb3NlU2hhbGxvdyIsImV4dCIsIndpdGgiLCJuYW1lIiwiZGlzcGxheU5hbWUiLCJsZW5ndGgiLCJyZWR1Y2VyIiwiZHluYW1pY0NvbXBvc2VEZWVwIiwic3RhdGljQ29tcG9zZURlZXAiLCJjb21wb3NlU3RhdGljIiwiY3JlYXRlU2hhbGxvd01lcmdlUmVkdWNlciIsImNyZWF0ZURlZXBNZXJnZVJlZHVjZXIiLCJzdHlsZUZuIiwic2hhbGxvd01lcmdlIiwiZGVlcE1lcmdlIiwiaW5wdXRTdHlsZSIsImFzc2lnbm1lbnRDb21tdXRhdGl2ZSIsImZhY3RvcnkiLCJyZWR1Y2VyQ29udGFpbmVyIiwicmVzdWx0IiwibGFzdCIsImNvbmNhdCIsInNsaWNlIiwiZGVidWdTdGFja0luZm8iLCJkZWJ1Z1N0YWNrSW5kZXgiLCJTdHlsZWRFbGVtZW50IiwiZm9yd2FyZFJlZiIsInJlZiIsImVsZW1lbnRQcm9wcyIsIm9taXRQcmVmaXhlZEtleXMiLCJyZXNvbHZlU3R5bGUiLCIkc3R5bGUiLCJzdHlsZUNsYXNzU3RyaW5nIiwiRWxlbWVudCIsIiRhcyIsImpvaW5lZCIsInN0eWxlc01hcCIsInNldCIsImV4dGVuc2lvbnNNYXAiLCJpbml0aWFsU3R5bGVzIiwic3R5bGVPdmVycmlkZXMiLCIkcmVmIiwiV3JhcHBlZCIsImkiLCJpc09iamVjdCIsIngiLCJzb3VyY2UiLCJrZXkiLCJhIiwiYiIsImFzc2lnbiIsInZhbCIsInRhcmdldCJdLCJzb3VyY2VzIjpbInNyYy9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWVudiBicm93c2VyICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycywgbm8tcmVkZWNsYXJlLCBuby1zaGFkb3cgKi9cblxuZGVjbGFyZSB2YXIgX19ERVZfXzogYm9vbGVhbjtcblxuZGVjbGFyZSB2YXIgX19CUk9XU0VSX186IGJvb2xlYW47XG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIF9fU1RZTEVUUk9OX0RFVlRPT0xTX186IGFueTtcbiAgfVxufVxuXG5kZWNsYXJlIHZhciBwcm9jZXNzOiBhbnk7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtcbiAgZHJpdmVyLFxuICBnZXRJbml0aWFsU3R5bGUsXG4gIHR5cGUgU3RhbmRhcmRFbmdpbmUsXG4gIHR5cGUgU3R5bGVPYmplY3QsXG59IGZyb20gXCJzdHlsZXRyb24tc3RhbmRhcmRcIjtcblxuaW1wb3J0IHR5cGUge1xuICBTdHlsZXRyb24sXG4gIFN0eWxldHJvbkNvbXBvbmVudCxcbiAgUmVkdWNlckNvbnRhaW5lcixcbiAgQXNzaWdubWVudENvbW11dGF0aXZlUmVkdWNlckNvbnRhaW5lcixcbiAgTm9uQXNzaWdubWVudENvbW11dGF0aXZlUmVkdWNlckNvbnRhaW5lcixcbiAgU3R5bGVkRm4sXG4gIFdpdGhTdHlsZUZuLFxuICBXaXRoVHJhbnNmb3JtRm4sXG4gIFdpdGhXcmFwcGVyRm4sXG4gIFN0eWxldHJvblByb3BzLFxufSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgYWRkRGVidWdNZXRhZGF0YSxcbiAgc2V0dXBEZXZ0b29sc0V4dGVuc2lvbixcbiAgRGVidWdFbmdpbmUsXG59IGZyb20gXCIuL2Rldi10b29sXCI7XG5cbmV4cG9ydCB7RGVidWdFbmdpbmV9O1xuZXhwb3J0IHR5cGUge1N0eWxlT2JqZWN0fTtcbmV4cG9ydCB0eXBlIHtTdHlsZXRyb25Qcm9wc307XG5leHBvcnQgdHlwZSB7U3R5bGV0cm9uQ29tcG9uZW50fTtcblxuY29uc3Qgbm9vcEVuZ2luZSA9IHtcbiAgcmVuZGVyU3R5bGU6ICgpID0+IFwiXCIsXG4gIHJlbmRlcktleWZyYW1lczogKCkgPT4gXCJcIixcbiAgcmVuZGVyRm9udEZhY2U6ICgpID0+IFwiXCIsXG59O1xuXG5jb25zdCBTdHlsZXRyb25Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxTdGFuZGFyZEVuZ2luZT4obm9vcEVuZ2luZSk7XG5jb25zdCBIeWRyYXRpb25Db250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChmYWxzZSk7XG5jb25zdCBEZWJ1Z0VuZ2luZUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PFxuICBJbnN0YW5jZVR5cGU8dHlwZW9mIERlYnVnRW5naW5lPiB8IHVuZGVmaW5lZFxuPih1bmRlZmluZWQpO1xuLy90b2RvOiB0aGVtZSBjb250ZXh0IHJlbW92ZWRcblxudHlwZSBEZXZQcm92aWRlclByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICB2YWx1ZTogU3RhbmRhcmRFbmdpbmU7XG4gIGRlYnVnQWZ0ZXJIeWRyYXRpb24/OiBib29sZWFuO1xuICBkZWJ1Zz86IGFueTtcbn07XG5cbmNsYXNzIERldlByb3ZpZGVyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFxuICBEZXZQcm92aWRlclByb3BzLFxuICB7XG4gICAgaHlkcmF0aW5nOiBib29sZWFuO1xuICB9XG4+IHtcbiAgY29uc3RydWN0b3IocHJvcHM6IERldlByb3ZpZGVyUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGh5ZHJhdGluZzogQm9vbGVhbihwcm9wcy5kZWJ1Z0FmdGVySHlkcmF0aW9uKSxcbiAgICB9O1xuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgaWYgKF9fQlJPV1NFUl9fKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5oeWRyYXRpbmcgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaHlkcmF0aW5nOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGV0cm9uQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dGhpcy5wcm9wcy52YWx1ZX0+XG4gICAgICAgIDxEZWJ1Z0VuZ2luZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3RoaXMucHJvcHMuZGVidWd9PlxuICAgICAgICAgIDxIeWRyYXRpb25Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGlzLnN0YXRlLmh5ZHJhdGluZ30+XG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICA8L0h5ZHJhdGlvbkNvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgIDwvRGVidWdFbmdpbmVDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgPC9TdHlsZXRyb25Db250ZXh0LlByb3ZpZGVyPlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFByb3ZpZGVyID1cbiAgX19CUk9XU0VSX18gJiYgX19ERVZfXyA/IERldlByb3ZpZGVyIDogU3R5bGV0cm9uQ29udGV4dC5Qcm92aWRlcjtcblxuaWYgKF9fQlJPV1NFUl9fICYmIF9fREVWX18gJiYgIXdpbmRvdy5fX1NUWUxFVFJPTl9ERVZUT09MU19fKSB7XG4gIHNldHVwRGV2dG9vbHNFeHRlbnNpb24oKTtcbn1cblxudHlwZSBjcmVhdGVTdHlsZWRPcHRzID0ge1xuICBnZXRJbml0aWFsU3R5bGU6ICgpID0+IFN0eWxlT2JqZWN0O1xuICBkcml2ZXI6IHR5cGVvZiBkcml2ZXI7XG4gIHdyYXBwZXI6IChmYzogUmVhY3QuRkM8YW55PikgPT4gUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+O1xufTtcblxuZnVuY3Rpb24gY2hlY2tOb29wRW5naW5lKGVuZ2luZTogU3RhbmRhcmRFbmdpbmUpIHtcbiAgLy8gaWYgbm8gZW5naW5lIHByb3ZpZGVkLCB3ZSBkZWZhdWx0IHRvIG5vLW9wLCBoYW5keSBmb3IgdGVzdHNcbiAgLy8gaG93ZXZlciwgcHJpbnQgYSB3YXJuaW5nIGluIG90aGVyIGVudnNcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInRlc3RcIikge1xuICAgIGVuZ2luZSA9PT0gbm9vcEVuZ2luZSAmJlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgX19ERVZfX1xuICAgICAgICAgID8gYFxuU3R5bGV0cm9uIGhhcyBiZWVuIHN3aXRjaGVkIHRvIGEgbm8tb3AgKHRlc3QpIG1vZGUuXG5cbkEgU3R5bGV0cm9uIHN0eWxlZCBjb21wb25lbnQgd2FzIHJlbmRlcmVkLCBidXQgbm8gU3R5bGV0cm9uIGVuZ2luZSBpbnN0YW5jZSB3YXMgcHJvdmlkZWQgaW4gUmVhY3QgY29udGV4dC5cblxuRGlkIHlvdSBmb3JnZXQgdG8gcHJvdmlkZSBhIFN0eWxldHJvbiBlbmdpbmUgaW5zdGFuY2UgdG8gUmVhY3QgY29udGV4dCB2aWEgdXNpbmcgdGhlIFN0eWxldHJvbiBwcm92aWRlciBjb21wb25lbnQ/XG5cbk5vdGU6IFByb3ZpZGVycyBhbmQgQ29uc3VtZXJzIG11c3QgY29tZSBmcm9tIHRoZSBleGFjdCBzYW1lIFJlYWN0LmNyZWF0ZUNvbnRleHQgY2FsbCB0byB3b3JrLlxuSWYgeW91ciBhcHAgaGFzIG11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGUgXCJzdHlsZXRyb24tcmVhY3RcIiBwYWNrYWdlIGluIHlvdXIgbm9kZV9tb2R1bGUgdHJlZSxcbnlvdXIgUHJvdmlkZXIgbWF5IGJlIGNvbWluZyBmcm9tIGEgZGlmZmVyZW50IFJlYWN0LmNyZWF0ZUNvbnRleHQgY2FsbCwgd2hpY2ggbWVhbnMgdGhlIHN0eWxlZCBjb21wb25lbnRzXG53aWxsIG5vdCByZWNpZXZlIHRoZSBwcm92aWRlZCBlbmdpbmUgaW5zdGFuY2UuIFRoaXMgc2NlbmFyaW8gY2FuIGFyaXNlLCBmb3IgZXhhbXBsZSwgd2hlbiB1c2luZyBcIm5wbSBsaW5rXCIuXG5gXG4gICAgICAgICAgOiBgU3R5bGV0cm9uIFByb3ZpZGVyIGlzIG5vdCBzZXQgdXAuIERlZmF1bHRpbmcgdG8gbm8tb3AuYCxcbiAgICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVN0eWxldHJvbigpOiBbKHN0eWxlOiBTdHlsZU9iamVjdCkgPT4gc3RyaW5nXSB7XG4gIGNvbnN0IHN0eWxldHJvbkVuZ2luZTogU3RhbmRhcmRFbmdpbmUgPSBSZWFjdC51c2VDb250ZXh0KFN0eWxldHJvbkNvbnRleHQpO1xuICBjb25zdCBkZWJ1Z0VuZ2luZSA9IFJlYWN0LnVzZUNvbnRleHQoRGVidWdFbmdpbmVDb250ZXh0KTtcbiAgY29uc3QgaHlkcmF0aW5nID0gUmVhY3QudXNlQ29udGV4dChIeWRyYXRpb25Db250ZXh0KTtcbiAgY2hlY2tOb29wRW5naW5lKHN0eWxldHJvbkVuZ2luZSk7XG5cbiAgY29uc3QgZGVidWdDbGFzc05hbWUgPSBSZWFjdC51c2VSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPihcIlwiKTtcbiAgY29uc3QgcHJldkRlYnVnQ2xhc3NOYW1lRGVwcyA9IFJlYWN0LnVzZVJlZihbXSk7XG5cbiAgcmV0dXJuIFtcbiAgICBmdW5jdGlvbiBjc3Moc3R5bGU6IFN0eWxlT2JqZWN0KSB7XG4gICAgICBjb25zdCBjbGFzc05hbWUgPSBkcml2ZXIoc3R5bGUsIHN0eWxldHJvbkVuZ2luZSk7XG4gICAgICBpZiAoIShfX0JST1dTRVJfXyAmJiBfX0RFVl9fKSkge1xuICAgICAgICByZXR1cm4gY2xhc3NOYW1lO1xuICAgICAgfVxuICAgICAgY29uc3Qge3N0YWNrLCBtZXNzYWdlfSA9IG5ldyBFcnJvcihcInN0YWNrdHJhY2Ugc291cmNlXCIpO1xuXG4gICAgICBjb25zdCBuZXh0RGVwcyA9IFtkZWJ1Z0VuZ2luZSwgaHlkcmF0aW5nXTtcbiAgICAgIGlmIChcbiAgICAgICAgcHJldkRlYnVnQ2xhc3NOYW1lRGVwcy5jdXJyZW50WzBdICE9PSBuZXh0RGVwc1swXSB8fFxuICAgICAgICBwcmV2RGVidWdDbGFzc05hbWVEZXBzLmN1cnJlbnRbMV0gIT09IG5leHREZXBzWzFdXG4gICAgICApIHtcbiAgICAgICAgaWYgKGRlYnVnRW5naW5lICYmICFoeWRyYXRpbmcpIHtcbiAgICAgICAgICBkZWJ1Z0NsYXNzTmFtZS5jdXJyZW50ID0gZGVidWdFbmdpbmUuZGVidWcoe1xuICAgICAgICAgICAgc3RhY2tJbmZvOiB7c3RhY2ssIG1lc3NhZ2V9LFxuICAgICAgICAgICAgc3RhY2tJbmRleDogMSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBwcmV2RGVidWdDbGFzc05hbWVEZXBzLmN1cnJlbnQgPSBuZXh0RGVwcztcbiAgICAgIH1cblxuICAgICAgaWYgKGRlYnVnQ2xhc3NOYW1lLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGAke2RlYnVnQ2xhc3NOYW1lLmN1cnJlbnR9ICR7Y2xhc3NOYW1lfWA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjbGFzc05hbWU7XG4gICAgfSxcbiAgXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN0eWxlZCh7XG4gIGdldEluaXRpYWxTdHlsZSxcbiAgZHJpdmVyLFxuICB3cmFwcGVyLFxufTogY3JlYXRlU3R5bGVkT3B0cyk6IFN0eWxlZEZuIHtcbiAgZnVuY3Rpb24gc3R5bGVkKGJhc2U6IGFueSwgc3R5bGVBcmcpIHtcbiAgICBpZiAoX19ERVZfXykge1xuICAgICAgaWYgKGJhc2UuX19TVFlMRVRST05fXykge1xuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBcIkl0IGFwcGVhcnMgeW91IGFyZSBwYXNzaW5nIGEgc3R5bGVkIGNvbXBvbmVudCBpbnRvIGBzdHlsZWRgLlwiLFxuICAgICAgICApO1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgXCJGb3IgY29tcG9zaXRpb24gd2l0aCBleGlzdGluZyBzdHlsZWQgY29tcG9uZW50cywgdXNlIGB3aXRoU3R5bGVgIG9yIGB3aXRoVHJhbnNmb3JtYCBpbnN0ZWFkLlwiLFxuICAgICAgICApO1xuICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWNvbnNvbGUgKi9cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBiYXNlU3R5bGV0cm9uOiBTdHlsZXRyb24gPSB7XG4gICAgICByZWR1Y2VyczogW10sXG4gICAgICBiYXNlOiBiYXNlLFxuICAgICAgZHJpdmVyLFxuICAgICAgZ2V0SW5pdGlhbFN0eWxlLFxuICAgICAgd3JhcHBlcixcbiAgICB9O1xuXG4gICAgaWYgKF9fQlJPV1NFUl9fICYmIF9fREVWX18pIHtcbiAgICAgIGFkZERlYnVnTWV0YWRhdGEoYmFzZVN0eWxldHJvbiwgMik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNyZWF0ZVN0eWxlZEVsZW1lbnRDb21wb25lbnQoXG4gICAgICBhdXRvQ29tcG9zZVNoYWxsb3coYmFzZVN0eWxldHJvbiwgc3R5bGVBcmcpLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gc3R5bGVkO1xufVxuXG5leHBvcnQgY29uc3Qgc3R5bGVkOiBTdHlsZWRGbiA9IGNyZWF0ZVN0eWxlZCh7XG4gIGdldEluaXRpYWxTdHlsZSxcbiAgZHJpdmVyLFxuICB3cmFwcGVyOiBDb21wb25lbnQgPT4gQ29tcG9uZW50LFxufSk7XG5cbmV4cG9ydCBjb25zdCB3aXRoVHJhbnNmb3JtOiBXaXRoVHJhbnNmb3JtRm4gPSAoY29tcG9uZW50LCB0cmFuc2Zvcm1lcikgPT4ge1xuICBjb25zdCBzdHlsZXRyb24gPSBjb21wb25lbnQuX19TVFlMRVRST05fXztcblxuICBpZiAoX19CUk9XU0VSX18gJiYgX19ERVZfXykge1xuICAgIGFkZERlYnVnTWV0YWRhdGEoc3R5bGV0cm9uLCAyKTtcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVTdHlsZWRFbGVtZW50Q29tcG9uZW50KGNvbXBvc2VEeW5hbWljKHN0eWxldHJvbiwgdHJhbnNmb3JtZXIpKTtcbn07XG5cbmV4cG9ydCBjb25zdCB3aXRoU3R5bGVEZWVwOiBXaXRoU3R5bGVGbiA9IChjb21wb25lbnQsIHN0eWxlQXJnKSA9PiB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3Qgc3R5bGV0cm9uID0gY29tcG9uZW50Ll9fU1RZTEVUUk9OX187XG5cbiAgaWYgKF9fREVWX18pIHtcbiAgICBpZiAoIXN0eWxldHJvbikge1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIlRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8gYHdpdGhTdHlsZWAgbXVzdCBiZSBhIHN0eWxlZCBjb21wb25lbnQgKHdpdGhvdXQgZXh0cmEgd3JhcHBlcnMpLlwiLFxuICAgICAgKTtcbiAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tY29uc29sZSAqL1xuICAgIH1cbiAgfVxuXG4gIGlmIChfX0JST1dTRVJfXyAmJiBfX0RFVl9fKSB7XG4gICAgYWRkRGVidWdNZXRhZGF0YShzdHlsZXRyb24sIDIpO1xuICAgIHJldHVybiBjcmVhdGVTdHlsZWRFbGVtZW50Q29tcG9uZW50KFxuICAgICAgYWRkRXh0ZW5zaW9uKGF1dG9Db21wb3NlRGVlcChzdHlsZXRyb24sIHN0eWxlQXJnKSwgY29tcG9uZW50LCBzdHlsZUFyZyksXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY3JlYXRlU3R5bGVkRWxlbWVudENvbXBvbmVudChhdXRvQ29tcG9zZURlZXAoc3R5bGV0cm9uLCBzdHlsZUFyZykpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgd2l0aFN0eWxlID0gd2l0aFN0eWxlRGVlcDtcblxuZXhwb3J0IGNvbnN0IHdpdGhXcmFwcGVyOiBXaXRoV3JhcHBlckZuID0gKGNvbXBvbmVudCwgd3JhcHBlcikgPT4ge1xuICBjb25zdCBzdHlsZXRyb24gPSBjb21wb25lbnQuX19TVFlMRVRST05fXztcblxuICBpZiAoX19ERVZfXykge1xuICAgIGlmICghc3R5bGV0cm9uKSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiVGhlIGZpcnN0IHBhcmFtZXRlciB0byBgd2l0aFdyYXBwZXJgIG11c3QgYmUgYSBzdHlsZWQgY29tcG9uZW50ICh3aXRob3V0IGV4dHJhIHdyYXBwZXJzKS5cIixcbiAgICAgICk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWNvbnNvbGUgKi9cbiAgICB9XG4gIH1cblxuICBjb25zdCBjb21wb3NlZCA9IHtcbiAgICBnZXRJbml0aWFsU3R5bGU6IHN0eWxldHJvbi5nZXRJbml0aWFsU3R5bGUsXG4gICAgYmFzZTogc3R5bGV0cm9uLmJhc2UsXG4gICAgZHJpdmVyOiBzdHlsZXRyb24uZHJpdmVyLFxuICAgIHdyYXBwZXI6IHdyYXBwZXIsXG4gICAgcmVkdWNlcnM6IHN0eWxldHJvbi5yZWR1Y2VycyxcbiAgfTtcblxuICBpZiAoX19CUk9XU0VSX18gJiYgX19ERVZfXykge1xuICAgIGFkZERlYnVnTWV0YWRhdGEoY29tcG9zZWQsIDIpO1xuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZVN0eWxlZEVsZW1lbnRDb21wb25lbnQoY29tcG9zZWQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGF1dG9Db21wb3NlU2hhbGxvdzxQcm9wcz4oXG4gIHN0eWxldHJvbjogU3R5bGV0cm9uLFxuICBzdHlsZUFyZzogU3R5bGVPYmplY3QgfCAoKGE6IFByb3BzKSA9PiBTdHlsZU9iamVjdCksXG4pIHtcbiAgaWYgKHR5cGVvZiBzdHlsZUFyZyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIGR5bmFtaWNDb21wb3NlU2hhbGxvdyhzdHlsZXRyb24sIHN0eWxlQXJnKTtcbiAgfVxuXG4gIHJldHVybiBzdGF0aWNDb21wb3NlU2hhbGxvdyhzdHlsZXRyb24sIHN0eWxlQXJnKTtcbn1cblxuZnVuY3Rpb24gYWRkRXh0ZW5zaW9uKGNvbXBvc2VkLCBjb21wb25lbnQsIHN0eWxlQXJnKSB7XG4gIHJldHVybiB7XG4gICAgLi4uY29tcG9zZWQsXG4gICAgZXh0OiB7XG4gICAgICB3aXRoOiBzdHlsZUFyZyxcbiAgICAgIG5hbWU6IGNvbXBvbmVudC5kaXNwbGF5TmFtZSxcbiAgICAgIGJhc2U6IGNvbXBvbmVudC5fX1NUWUxFVFJPTl9fLmJhc2UsXG4gICAgICBnZXRJbml0aWFsU3R5bGU6IGNvbXBvbmVudC5fX1NUWUxFVFJPTl9fLnJlZHVjZXJzLmxlbmd0aFxuICAgICAgICA/IGNvbXBvbmVudC5fX1NUWUxFVFJPTl9fLnJlZHVjZXJzWzBdLnJlZHVjZXJcbiAgICAgICAgOiBjb21wb25lbnQuX19TVFlMRVRST05fXy5nZXRJbml0aWFsU3R5bGUsXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF1dG9Db21wb3NlRGVlcDxQcm9wcz4oXG4gIHN0eWxldHJvbjogU3R5bGV0cm9uLFxuICBzdHlsZUFyZzogU3R5bGVPYmplY3QgfCAoKGE6IFByb3BzKSA9PiBTdHlsZU9iamVjdCksXG4pIHtcbiAgaWYgKHR5cGVvZiBzdHlsZUFyZyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIGR5bmFtaWNDb21wb3NlRGVlcChzdHlsZXRyb24sIHN0eWxlQXJnKTtcbiAgfVxuXG4gIHJldHVybiBzdGF0aWNDb21wb3NlRGVlcChzdHlsZXRyb24sIHN0eWxlQXJnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRpY0NvbXBvc2VTaGFsbG93KHN0eWxldHJvbjogU3R5bGV0cm9uLCBzdHlsZTogU3R5bGVPYmplY3QpIHtcbiAgcmV0dXJuIGNvbXBvc2VTdGF0aWMoc3R5bGV0cm9uLCBjcmVhdGVTaGFsbG93TWVyZ2VSZWR1Y2VyKHN0eWxlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0aWNDb21wb3NlRGVlcChzdHlsZXRyb246IFN0eWxldHJvbiwgc3R5bGU6IFN0eWxlT2JqZWN0KSB7XG4gIHJldHVybiBjb21wb3NlU3RhdGljKHN0eWxldHJvbiwgY3JlYXRlRGVlcE1lcmdlUmVkdWNlcihzdHlsZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZHluYW1pY0NvbXBvc2VTaGFsbG93PFByb3BzPihcbiAgc3R5bGV0cm9uOiBTdHlsZXRyb24sXG4gIHN0eWxlRm46IChhOiBQcm9wcykgPT4gU3R5bGVPYmplY3QsXG4pIHtcbiAgcmV0dXJuIGNvbXBvc2VEeW5hbWljPFByb3BzPihzdHlsZXRyb24sIChzdHlsZSwgcHJvcHMpID0+XG4gICAgc2hhbGxvd01lcmdlKHN0eWxlLCBzdHlsZUZuKHByb3BzKSksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkeW5hbWljQ29tcG9zZURlZXA8UHJvcHM+KFxuICBzdHlsZXRyb246IFN0eWxldHJvbixcbiAgc3R5bGVGbjogKGE6IFByb3BzKSA9PiBTdHlsZU9iamVjdCxcbikge1xuICByZXR1cm4gY29tcG9zZUR5bmFtaWM8UHJvcHM+KHN0eWxldHJvbiwgKHN0eWxlLCBwcm9wcykgPT5cbiAgICBkZWVwTWVyZ2Uoc3R5bGUsIHN0eWxlRm4ocHJvcHMpKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNoYWxsb3dNZXJnZVJlZHVjZXIoXG4gIHN0eWxlOiBTdHlsZU9iamVjdCxcbik6IEFzc2lnbm1lbnRDb21tdXRhdGl2ZVJlZHVjZXJDb250YWluZXIge1xuICByZXR1cm4ge1xuICAgIHJlZHVjZXI6IGlucHV0U3R5bGUgPT4gc2hhbGxvd01lcmdlKGlucHV0U3R5bGUsIHN0eWxlKSxcbiAgICBhc3NpZ25tZW50Q29tbXV0YXRpdmU6IHRydWUsXG4gICAgZmFjdG9yeTogY3JlYXRlU2hhbGxvd01lcmdlUmVkdWNlcixcbiAgICBzdHlsZTogc3R5bGUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWVwTWVyZ2VSZWR1Y2VyKFxuICBzdHlsZTogU3R5bGVPYmplY3QsXG4pOiBBc3NpZ25tZW50Q29tbXV0YXRpdmVSZWR1Y2VyQ29udGFpbmVyIHtcbiAgcmV0dXJuIHtcbiAgICByZWR1Y2VyOiBpbnB1dFN0eWxlID0+IGRlZXBNZXJnZShpbnB1dFN0eWxlLCBzdHlsZSksXG4gICAgYXNzaWdubWVudENvbW11dGF0aXZlOiB0cnVlLFxuICAgIGZhY3Rvcnk6IGNyZWF0ZURlZXBNZXJnZVJlZHVjZXIsXG4gICAgc3R5bGU6IHN0eWxlLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcG9zZVN0YXRpYyhcbiAgc3R5bGV0cm9uOiBTdHlsZXRyb24sXG4gIHJlZHVjZXJDb250YWluZXI6IEFzc2lnbm1lbnRDb21tdXRhdGl2ZVJlZHVjZXJDb250YWluZXIsXG4pIHtcbiAgaWYgKHN0eWxldHJvbi5yZWR1Y2Vycy5sZW5ndGggPT09IDApIHtcbiAgICBjb25zdCBzdHlsZSA9IHJlZHVjZXJDb250YWluZXIucmVkdWNlcihzdHlsZXRyb24uZ2V0SW5pdGlhbFN0eWxlKCkpO1xuICAgIGNvbnN0IHJlc3VsdDogU3R5bGV0cm9uID0ge1xuICAgICAgcmVkdWNlcnM6IHN0eWxldHJvbi5yZWR1Y2VycyxcbiAgICAgIGJhc2U6IHN0eWxldHJvbi5iYXNlLFxuICAgICAgZHJpdmVyOiBzdHlsZXRyb24uZHJpdmVyLFxuICAgICAgd3JhcHBlcjogc3R5bGV0cm9uLndyYXBwZXIsXG4gICAgICBnZXRJbml0aWFsU3R5bGU6ICgpID0+IHN0eWxlLFxuICAgIH07XG4gICAgaWYgKF9fQlJPV1NFUl9fICYmIF9fREVWX18pIHtcbiAgICAgIHJlc3VsdC5kZWJ1ZyA9IHN0eWxldHJvbi5kZWJ1ZztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBsYXN0ID0gc3R5bGV0cm9uLnJlZHVjZXJzWzBdO1xuXG4gICAgaWYgKFxuICAgICAgbGFzdC5hc3NpZ25tZW50Q29tbXV0YXRpdmUgPT09IHRydWUgJiZcbiAgICAgIHJlZHVjZXJDb250YWluZXIuYXNzaWdubWVudENvbW11dGF0aXZlID09PSB0cnVlXG4gICAgKSB7XG4gICAgICBjb25zdCBjb21wb3NlZCA9IHJlZHVjZXJDb250YWluZXIucmVkdWNlcihsYXN0LnN0eWxlKTtcblxuICAgICAgY29uc3QgcmVzdWx0OiBTdHlsZXRyb24gPSB7XG4gICAgICAgIGdldEluaXRpYWxTdHlsZTogc3R5bGV0cm9uLmdldEluaXRpYWxTdHlsZSxcbiAgICAgICAgYmFzZTogc3R5bGV0cm9uLmJhc2UsXG4gICAgICAgIGRyaXZlcjogc3R5bGV0cm9uLmRyaXZlcixcbiAgICAgICAgd3JhcHBlcjogc3R5bGV0cm9uLndyYXBwZXIsXG4gICAgICAgIHJlZHVjZXJzOiBbbGFzdC5mYWN0b3J5KGNvbXBvc2VkKV0uY29uY2F0KFxuICAgICAgICAgIHN0eWxldHJvbi5yZWR1Y2Vycy5zbGljZSgxKSBhcyBhbnksXG4gICAgICAgICksXG4gICAgICB9O1xuXG4gICAgICBpZiAoX19CUk9XU0VSX18gJiYgX19ERVZfXykge1xuICAgICAgICByZXN1bHQuZGVidWcgPSBzdHlsZXRyb24uZGVidWc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBvc2VEeW5hbWljKHN0eWxldHJvbiwgcmVkdWNlckNvbnRhaW5lci5yZWR1Y2VyKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcG9zZUR5bmFtaWM8UHJvcHM+KFxuICBzdHlsZXRyb246IFN0eWxldHJvbixcbiAgcmVkdWNlcjogKGI6IFN0eWxlT2JqZWN0LCBhOiBQcm9wcykgPT4gU3R5bGVPYmplY3QsXG4pIHtcbiAgY29uc3QgY29tcG9zZWQ6IFN0eWxldHJvbiA9IHtcbiAgICBnZXRJbml0aWFsU3R5bGU6IHN0eWxldHJvbi5nZXRJbml0aWFsU3R5bGUsXG4gICAgYmFzZTogc3R5bGV0cm9uLmJhc2UsXG4gICAgZHJpdmVyOiBzdHlsZXRyb24uZHJpdmVyLFxuICAgIHdyYXBwZXI6IHN0eWxldHJvbi53cmFwcGVyLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZWR1Y2VyczogW3thc3NpZ25tZW50Q29tbXV0YXRpdmU6IGZhbHNlLCByZWR1Y2VyfV0uY29uY2F0KFxuICAgICAgc3R5bGV0cm9uLnJlZHVjZXJzLFxuICAgICksXG4gIH07XG4gIGlmIChfX0JST1dTRVJfXyAmJiBfX0RFVl9fKSB7XG4gICAgY29tcG9zZWQuZGVidWcgPSBzdHlsZXRyb24uZGVidWc7XG4gIH1cbiAgcmV0dXJuIGNvbXBvc2VkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3R5bGVkRWxlbWVudENvbXBvbmVudChzdHlsZXRyb246IFN0eWxldHJvbikge1xuICBjb25zdCB7cmVkdWNlcnMsIGJhc2UsIGRyaXZlciwgd3JhcHBlciwgZ2V0SW5pdGlhbFN0eWxlLCBleHR9ID0gc3R5bGV0cm9uO1xuXG4gIGlmIChfX0JST1dTRVJfXyAmJiBfX0RFVl9fKSB7XG4gICAgdmFyIGRlYnVnU3RhY2tJbmZvLCBkZWJ1Z1N0YWNrSW5kZXg7XG4gICAgaWYgKHN0eWxldHJvbi5kZWJ1Zykge1xuICAgICAgZGVidWdTdGFja0luZm8gPSBzdHlsZXRyb24uZGVidWcuc3RhY2tJbmZvO1xuICAgICAgZGVidWdTdGFja0luZGV4ID0gc3R5bGV0cm9uLmRlYnVnLnN0YWNrSW5kZXg7XG4gICAgfVxuICB9XG5cbiAgaWYgKF9fQlJPV1NFUl9fICYmIF9fREVWX18pIHtcbiAgICB2YXIgZGVidWdDbGFzc05hbWU7XG4gIH1cblxuICBjb25zdCBTdHlsZWRFbGVtZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxTdHlsZXRyb25Qcm9wcywgYW55PigocHJvcHMsIHJlZikgPT4ge1xuICAgIGNvbnN0IHN0eWxldHJvbjogU3RhbmRhcmRFbmdpbmUgPSBSZWFjdC51c2VDb250ZXh0KFN0eWxldHJvbkNvbnRleHQpO1xuICAgIGNvbnN0IGRlYnVnRW5naW5lID0gUmVhY3QudXNlQ29udGV4dChEZWJ1Z0VuZ2luZUNvbnRleHQpO1xuICAgIGNvbnN0IGh5ZHJhdGluZyA9IFJlYWN0LnVzZUNvbnRleHQoSHlkcmF0aW9uQ29udGV4dCk7XG4gICAgY2hlY2tOb29wRW5naW5lKHN0eWxldHJvbik7XG5cbiAgICBjb25zdCBlbGVtZW50UHJvcHM6IGFueSA9IG9taXRQcmVmaXhlZEtleXMocHJvcHMpO1xuICAgIGxldCBzdHlsZSA9IHJlc29sdmVTdHlsZShnZXRJbml0aWFsU3R5bGUsIHJlZHVjZXJzLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMuJHN0eWxlKSB7XG4gICAgICBpZiAodHlwZW9mIHByb3BzLiRzdHlsZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHN0eWxlID0gZGVlcE1lcmdlKHN0eWxlLCBwcm9wcy4kc3R5bGUocHJvcHMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0eWxlID0gZGVlcE1lcmdlKHN0eWxlLCBwcm9wcy4kc3R5bGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHN0eWxlQ2xhc3NTdHJpbmcgPSBkcml2ZXIoc3R5bGUsIHN0eWxldHJvbik7XG4gICAgY29uc3QgRWxlbWVudCA9IHByb3BzLiRhcyA/IHByb3BzLiRhcyA6IGJhc2U7XG4gICAgZWxlbWVudFByb3BzLmNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZVxuICAgICAgPyBgJHtwcm9wcy5jbGFzc05hbWV9ICR7c3R5bGVDbGFzc1N0cmluZ31gXG4gICAgICA6IHN0eWxlQ2xhc3NTdHJpbmc7XG5cbiAgICBpZiAoX19CUk9XU0VSX18gJiYgX19ERVZfXyAmJiBkZWJ1Z0VuZ2luZSAmJiAhaHlkcmF0aW5nKSB7XG4gICAgICBpZiAoIWRlYnVnQ2xhc3NOYW1lKSB7XG4gICAgICAgIGRlYnVnQ2xhc3NOYW1lID0gZGVidWdFbmdpbmUuZGVidWcoe1xuICAgICAgICAgIHN0YWNrSW5mbzogZGVidWdTdGFja0luZm8sXG4gICAgICAgICAgc3RhY2tJbmRleDogZGVidWdTdGFja0luZGV4LFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgam9pbmVkID0gYCR7ZGVidWdDbGFzc05hbWV9ICR7ZWxlbWVudFByb3BzLmNsYXNzTmFtZX1gO1xuICAgICAgZWxlbWVudFByb3BzLmNsYXNzTmFtZSA9IGpvaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoX19CUk9XU0VSX18gJiYgX19ERVZfXyAmJiB3aW5kb3cuX19TVFlMRVRST05fREVWVE9PTFNfXykge1xuICAgICAgd2luZG93Ll9fU1RZTEVUUk9OX0RFVlRPT0xTX18uc3R5bGVzTWFwLnNldChcbiAgICAgICAgZWxlbWVudFByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgc3R5bGUsXG4gICAgICApO1xuICAgICAgaWYgKGV4dCkge1xuICAgICAgICB3aW5kb3cuX19TVFlMRVRST05fREVWVE9PTFNfXy5leHRlbnNpb25zTWFwLnNldChcbiAgICAgICAgICBlbGVtZW50UHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJhc2U6IGV4dC5iYXNlLFxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IGV4dC5uYW1lLFxuICAgICAgICAgICAgaW5pdGlhbFN0eWxlczogZXh0LmdldEluaXRpYWxTdHlsZSh7fSwgcHJvcHMpLFxuICAgICAgICAgICAgc3R5bGVPdmVycmlkZXM6XG4gICAgICAgICAgICAgIHR5cGVvZiBleHQud2l0aCA9PT0gXCJmdW5jdGlvblwiID8gZXh0LndpdGgocHJvcHMpIDogZXh0LndpdGgsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvcHMuJHJlZikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgXCJUaGUgcHJvcCBgJHJlZmAgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIGByZWZgIGluc3RlYWQuIFJlZnMgYXJlIG5vdyBmb3J3YXJkZWQgd2l0aCBSZWFjdC5mb3J3YXJkUmVmLlwiLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIDxFbGVtZW50IHsuLi5lbGVtZW50UHJvcHN9IHJlZj17cmVmIHx8IHByb3BzLiRyZWZ9IC8+O1xuICB9KTtcblxuICBjb25zdCBXcmFwcGVkID0gd3JhcHBlcihTdHlsZWRFbGVtZW50KTtcbiAgV3JhcHBlZC5fX1NUWUxFVFJPTl9fID0ge1xuICAgIGJhc2UsXG4gICAgcmVkdWNlcnMsXG4gICAgZHJpdmVyLFxuICAgIHdyYXBwZXIsXG4gICAgZ2V0SW5pdGlhbFN0eWxlLFxuICB9O1xuXG4gIGlmIChfX0RFVl9fKSB7XG4gICAgbGV0IGRpc3BsYXlOYW1lO1xuXG4gICAgaWYgKHR5cGVvZiBiYXNlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBkaXNwbGF5TmFtZSA9IGJhc2U7XG4gICAgfSBlbHNlIGlmIChiYXNlLmRpc3BsYXlOYW1lKSB7XG4gICAgICBkaXNwbGF5TmFtZSA9IGJhc2UuZGlzcGxheU5hbWU7XG4gICAgfSBlbHNlIGlmIChiYXNlLm5hbWUpIHtcbiAgICAgIGRpc3BsYXlOYW1lID0gYmFzZS5uYW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwbGF5TmFtZSA9IFwiVW5rbm93blwiO1xuICAgIH1cblxuICAgIFdyYXBwZWQuZGlzcGxheU5hbWUgPSBgU3R5bGVkKCR7ZGlzcGxheU5hbWV9KWA7XG4gIH1cblxuICByZXR1cm4gV3JhcHBlZDtcbn1cblxuLy8gVXRpbGl0eSBmdW5jdGlvbnNcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTdHlsZShcbiAgZ2V0SW5pdGlhbFN0eWxlOiAoYTogdm9pZCkgPT4gU3R5bGVPYmplY3QsXG4gIHJlZHVjZXJzOiBBcnJheTxSZWR1Y2VyQ29udGFpbmVyPixcbiAgcHJvcHM6IGFueSxcbik6IFN0eWxlT2JqZWN0IHtcbiAgbGV0IHJlc3VsdCA9IGdldEluaXRpYWxTdHlsZSgpO1xuICBsZXQgaSA9IHJlZHVjZXJzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIC8vIENhc3QgdG8gYWxsb3cgcGFzc2luZyB1bnVzZWQgcHJvcHMgcGFyYW0gaW4gY2FzZSBvZiBzdGF0aWMgcmVkdWNlclxuICAgIGNvbnN0IHJlZHVjZXIgPSByZWR1Y2Vyc1tpXS5yZWR1Y2VyIGFzIChcbiAgICAgIGI6IFN0eWxlT2JqZWN0LFxuICAgICAgYTogYW55LFxuICAgICkgPT4gU3R5bGVPYmplY3Q7XG4gICAgcmVzdWx0ID0gcmVkdWNlcihyZXN1bHQsIHByb3BzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBpc09iamVjdCh4OiBhbnkpIHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSBcIm9iamVjdFwiICYmIHggIT09IG51bGw7XG59XG5cbmZ1bmN0aW9uIG9taXRQcmVmaXhlZEtleXMoc291cmNlKSB7XG4gIGNvbnN0IHJlc3VsdCA9IHt9O1xuXG4gIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgIGlmIChrZXlbMF0gIT09IFwiJFwiKSB7XG4gICAgICByZXN1bHRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGRlZXBNZXJnZShhLCBiKSB7XG4gIGNvbnN0IHJlc3VsdCA9IGFzc2lnbih7fSwgYSk7XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gYikge1xuICAgIGNvbnN0IHZhbCA9IGJba2V5XTtcblxuICAgIGlmIChpc09iamVjdCh2YWwpICYmIGlzT2JqZWN0KGFba2V5XSkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gZGVlcE1lcmdlKGFba2V5XSwgdmFsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W2tleV0gPSB2YWw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gc2hhbGxvd01lcmdlKGEsIGIpIHtcbiAgcmV0dXJuIGFzc2lnbihhc3NpZ24oe30sIGEpLCBiKTtcbn1cblxuZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgc291cmNlKSB7XG4gIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7QUFDQTtBQWFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2QjtBQUNBLFNBQ0VDLE1BREYsRUFFRUMsZUFGRixRQUtPLG9CQUxQO0FBbUJBLFNBQ0VDLGdCQURGLEVBRUVDLHNCQUZGLEVBR0VDLFdBSEYsUUFJTyxZQUpQO0FBTUEsU0FBUUEsV0FBUjtBQUtBLE1BQU1DLFVBQVUsR0FBRztFQUNqQkMsV0FBVyxFQUFFLE1BQU0sRUFERjtFQUVqQkMsZUFBZSxFQUFFLE1BQU0sRUFGTjtFQUdqQkMsY0FBYyxFQUFFLE1BQU07QUFITCxDQUFuQjtBQU1BLE1BQU1DLGdCQUFnQixnQkFBR1YsS0FBSyxDQUFDVyxhQUFOLENBQW9DTCxVQUFwQyxDQUF6QjtBQUNBLE1BQU1NLGdCQUFnQixnQkFBR1osS0FBSyxDQUFDVyxhQUFOLENBQW9CLEtBQXBCLENBQXpCO0FBQ0EsTUFBTUUsa0JBQWtCLGdCQUFHYixLQUFLLENBQUNXLGFBQU4sQ0FFekJHLFNBRnlCLENBQTNCLEMsQ0FHQTs7QUFTQSxNQUFNQyxXQUFOLFNBQTBCZixLQUFLLENBQUNnQixTQUFoQyxDQUtFO0VBQ0FDLFdBQVcsQ0FBQ0MsS0FBRCxFQUEwQjtJQUNuQyxNQUFNQSxLQUFOO0lBQ0EsS0FBS0MsS0FBTCxHQUFhO01BQ1hDLFNBQVMsRUFBRUMsT0FBTyxDQUFDSCxLQUFLLENBQUNJLG1CQUFQO0lBRFAsQ0FBYjtFQUdEOztFQUVEQyxpQkFBaUIsR0FBRztJQUNsQixVQUFpQjtNQUNmLElBQUksS0FBS0osS0FBTCxDQUFXQyxTQUFYLEtBQXlCLElBQTdCLEVBQW1DO1FBQ2pDLEtBQUtJLFFBQUwsQ0FBYztVQUNaSixTQUFTLEVBQUU7UUFEQyxDQUFkO01BR0Q7SUFDRjtFQUNGOztFQUVESyxNQUFNLEdBQUc7SUFDUCxvQkFDRSxvQkFBQyxnQkFBRCxDQUFrQixRQUFsQjtNQUEy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","export function driver(style, styletron) {\n const tx = renderDeclarativeRules(style, styletron);\n return styletron.renderStyle(tx);\n}\nexport function getInitialStyle() {\n return {};\n}\nexport function renderDeclarativeRules(style, styletron) {\n for (const key in style) {\n const val = style[key];\n\n if (key === \"animationName\" && typeof val !== \"string\") {\n style.animationName = styletron.renderKeyframes(val);\n continue;\n }\n\n if (key === \"fontFamily\" && typeof val !== \"string\") {\n if (Array.isArray(val)) {\n let result = \"\";\n\n for (const font of val) {\n if (typeof font === \"object\") {\n result += `${styletron.renderFontFace(font)},`;\n } else if (typeof font === \"string\") {\n result += `${font},`;\n }\n }\n\n style.fontFamily = result.slice(0, -1);\n continue;\n } else if (val === void 0) {\n continue;\n } else {\n style.fontFamily = styletron.renderFontFace(val);\n continue;\n }\n }\n\n if (typeof val === \"object\" && val !== null) {\n renderDeclarativeRules(val, styletron);\n }\n }\n\n return style;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkcml2ZXIiLCJzdHlsZSIsInN0eWxldHJvbiIsInR4IiwicmVuZGVyRGVjbGFyYXRpdmVSdWxlcyIsInJlbmRlclN0eWxlIiwiZ2V0SW5pdGlhbFN0eWxlIiwia2V5IiwidmFsIiwiYW5pbWF0aW9uTmFtZSIsInJlbmRlcktleWZyYW1lcyIsIkFycmF5IiwiaXNBcnJheSIsInJlc3VsdCIsImZvbnQiLCJyZW5kZXJGb250RmFjZSIsImZvbnRGYW1pbHkiLCJzbGljZSJdLCJzb3VyY2VzIjpbInNyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIFByb3BlcnRpZXMsXG4gIEZvbnRGYWNlIGFzIEZvbnRGYWNlT2JqZWN0LFxuICBLZXlmcmFtZXNPYmplY3QsXG59IGZyb20gXCIuL3N0eWxlLXR5cGVzXCI7XG5cbmV4cG9ydCB0eXBlIHtGb250RmFjZU9iamVjdCwgS2V5ZnJhbWVzT2JqZWN0fTtcblxuZXhwb3J0IHR5cGUgU3R5bGVPYmplY3QgPSBQcm9wZXJ0aWVzICYge1xuICBba2V5IGluIHN0cmluZ106IFByb3BlcnRpZXNba2V5b2YgUHJvcGVydGllc10gfCBTdHlsZU9iamVjdDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhbmRhcmRFbmdpbmUge1xuICByZW5kZXJTdHlsZShzdHlsZTogU3R5bGVPYmplY3QpOiBzdHJpbmc7XG4gIHJlbmRlcktleWZyYW1lcyhrZXlmcmFtZXM6IEtleWZyYW1lc09iamVjdCk6IHN0cmluZztcbiAgcmVuZGVyRm9udEZhY2UoZm9udEZhY2U6IEZvbnRGYWNlT2JqZWN0KTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZHJpdmVyKHN0eWxlOiBTdHlsZU9iamVjdCwgc3R5bGV0cm9uOiBTdGFuZGFyZEVuZ2luZSk6IHN0cmluZyB7XG4gIGNvbnN0IHR4ID0gcmVuZGVyRGVjbGFyYXRpdmVSdWxlcyhzdHlsZSwgc3R5bGV0cm9uKTtcbiAgcmV0dXJuIHN0eWxldHJvbi5yZW5kZXJTdHlsZSh0eCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbml0aWFsU3R5bGUoKTogU3R5bGVPYmplY3Qge1xuICByZXR1cm4ge307XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJEZWNsYXJhdGl2ZVJ1bGVzKFxuICBzdHlsZTogU3R5bGVPYmplY3QsXG4gIHN0eWxldHJvbjogU3RhbmRhcmRFbmdpbmUsXG4pIHtcbiAgZm9yIChjb25zdCBrZXkgaW4gc3R5bGUpIHtcbiAgICBjb25zdCB2YWwgPSBzdHlsZVtrZXldO1xuICAgIGlmIChrZXkgPT09IFwiYW5pbWF0aW9uTmFtZVwiICYmIHR5cGVvZiB2YWwgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHN0eWxlLmFuaW1hdGlvbk5hbWUgPSBzdHlsZXRyb24ucmVuZGVyS2V5ZnJhbWVzKHZhbCBhcyBhbnkpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChrZXkgPT09IFwiZm9udEZhbWlseVwiICYmIHR5cGVvZiB2YWwgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gICAgICAgIGZvciAoY29uc3QgZm9udCBvZiB2YWwpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGZvbnQgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBgJHtzdHlsZXRyb24ucmVuZGVyRm9udEZhY2UoZm9udCBhcyBhbnkpfSxgO1xuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZvbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBgJHtmb250fSxgO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHlsZS5mb250RmFtaWx5ID0gcmVzdWx0LnNsaWNlKDAsIC0xKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2UgaWYgKHZhbCA9PT0gdm9pZCAwKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3R5bGUuZm9udEZhbWlseSA9IHN0eWxldHJvbi5yZW5kZXJGb250RmFjZSh2YWwgYXMgYW55KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsID09PSBcIm9iamVjdFwiICYmIHZhbCAhPT0gbnVsbCkge1xuICAgICAgcmVuZGVyRGVjbGFyYXRpdmVSdWxlcyh2YWwgYXMgU3R5bGVPYmplY3QsIHN0eWxldHJvbik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHlsZTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBa0JBLE9BQU8sU0FBU0EsTUFBVCxDQUFnQkMsS0FBaEIsRUFBb0NDLFNBQXBDLEVBQXVFO0VBQzVFLE1BQU1DLEVBQUUsR0FBR0Msc0JBQXNCLENBQUNILEtBQUQsRUFBUUMsU0FBUixDQUFqQztFQUNBLE9BQU9BLFNBQVMsQ0FBQ0csV0FBVixDQUFzQkYsRUFBdEIsQ0FBUDtBQUNEO0FBRUQsT0FBTyxTQUFTRyxlQUFULEdBQXdDO0VBQzdDLE9BQU8sRUFBUDtBQUNEO0FBRUQsT0FBTyxTQUFTRixzQkFBVCxDQUNMSCxLQURLLEVBRUxDLFNBRkssRUFHTDtFQUNBLEtBQUssTUFBTUssR0FBWCxJQUFrQk4sS0FBbEIsRUFBeUI7SUFDdkIsTUFBTU8sR0FBRyxHQUFHUCxLQUFLLENBQUNNLEdBQUQsQ0FBakI7O0lBQ0EsSUFBSUEsR0FBRyxLQUFLLGVBQVIsSUFBMkIsT0FBT0MsR0FBUCxLQUFlLFFBQTlDLEVBQXdEO01BQ3REUCxLQUFLLENBQUNRLGFBQU4sR0FBc0JQLFNBQVMsQ0FBQ1EsZUFBVixDQUEwQkYsR0FBMUIsQ0FBdEI7TUFDQTtJQUNEOztJQUNELElBQUlELEdBQUcsS0FBSyxZQUFSLElBQXdCLE9BQU9DLEdBQVAsS0FBZSxRQUEzQyxFQUFxRDtNQUNuRCxJQUFJRyxLQUFLLENBQUNDLE9BQU4sQ0FBY0osR0FBZCxDQUFKLEVBQXdCO1FBQ3RCLElBQUlLLE1BQU0sR0FBRyxFQUFiOztRQUNBLEtBQUssTUFBTUMsSUFBWCxJQUFtQk4sR0FBbkIsRUFBd0I7VUFDdEIsSUFBSSxPQUFPTSxJQUFQLEtBQWdCLFFBQXBCLEVBQThCO1lBQzVCRCxNQUFNLElBQUssR0FBRVgsU0FBUyxDQUFDYSxjQUFWLENBQXlCRCxJQUF6QixDQUFzQyxHQUFuRDtVQUNELENBRkQsTUFFTyxJQUFJLE9BQU9BLElBQVAsS0FBZ0IsUUFBcEIsRUFBOEI7WUFDbkNELE1BQU0sSUFBSyxHQUFFQyxJQUFLLEdBQWxCO1VBQ0Q7UUFDRjs7UUFDRGIsS0FBSyxDQUFDZSxVQUFOLEdBQW1CSCxNQUFNLENBQUNJLEtBQVAsQ0FBYSxDQUFiLEVBQWdCLENBQUMsQ0FBakIsQ0FBbkI7UUFDQTtNQUNELENBWEQsTUFXTyxJQUFJVCxHQUFHLEtBQUssS0FBSyxDQUFqQixFQUFvQjtRQUN6QjtNQUNELENBRk0sTUFFQTtRQUNMUCxLQUFLLENBQUNlLFVBQU4sR0FBbUJkLFNBQVMsQ0FBQ2EsY0FBVixDQUF5QlAsR0FBekIsQ0FBbkI7UUFDQTtNQUNEO0lBQ0Y7O0lBQ0QsSUFBSSxPQUFPQSxHQUFQLEtBQWUsUUFBZixJQUEyQkEsR0FBRyxLQUFLLElBQXZDLEVBQTZDO01BQzNDSixzQkFBc0IsQ0FBQ0ksR0FBRCxFQUFxQk4sU0FBckIsQ0FBdEI7SUFDRDtFQUNGOztFQUNELE9BQU9ELEtBQVA7QUFDRCJ9","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _getRequireWildcardCache(e) {\n if (\"function\" != typeof WeakMap) return null;\n var r = new WeakMap(),\n t = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {\n return e ? t : r;\n })(e);\n}\nfunction _interopRequireWildcard(e, r) {\n if (!r && e && e.__esModule) return e;\n if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return {\n \"default\": e\n };\n var t = _getRequireWildcardCache(r);\n if (t && t.has(e)) return t.get(e);\n var n = {\n __proto__: null\n },\n a = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var u in e) if (\"default\" !== u && {}.hasOwnProperty.call(e, u)) {\n var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;\n i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];\n }\n return n[\"default\"] = e, t && t.set(e, n), n;\n}\nmodule.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst PartytownSnippet = \"/* Partytown 0.5.4 - MIT builder.io */\\n!function(t,e,n,i,r,o,a,d,s,c,p,l){function u(){l||(l=1,\\\"/\\\"==(a=(o.lib||\\\"/~partytown/\\\")+(o.debug?\\\"debug/\\\":\\\"\\\"))[0]&&(s=e.querySelectorAll('script[type=\\\"text/partytown\\\"]'),i!=t?i.dispatchEvent(new CustomEvent(\\\"pt1\\\",{detail:t})):(d=setTimeout(w,1e4),e.addEventListener(\\\"pt0\\\",f),r?h(1):n.serviceWorker?n.serviceWorker.register(a+(o.swPath||\\\"partytown-sw.js\\\"),{scope:a}).then((function(t){t.active?h():t.installing&&t.installing.addEventListener(\\\"statechange\\\",(function(t){\\\"activated\\\"==t.target.state&&h()}))}),console.error):w())))}function h(t){c=e.createElement(t?\\\"script\\\":\\\"iframe\\\"),t||(c.setAttribute(\\\"style\\\",\\\"display:block;width:0;height:0;border:0;visibility:hidden\\\"),c.setAttribute(\\\"aria-hidden\\\",!0)),c.src=a+\\\"partytown-\\\"+(t?\\\"atomics.js?v=0.5.4\\\":\\\"sandbox-sw.html?\\\"+Date.now()),e.body.appendChild(c)}function w(t,n){for(f(),t=0;t {\n const { forward = [], ...filteredConfig } = config || {};\n const configStr = JSON.stringify(filteredConfig, (k, v) => {\n if (typeof v === 'function') {\n v = String(v);\n if (v.startsWith(k + '(')) {\n v = 'function ' + v;\n }\n }\n return v;\n });\n return [\n `!(function(w,p,f,c){`,\n Object.keys(filteredConfig).length > 0\n ? `c=w[p]=Object.assign(w[p]||{},${configStr});`\n : `c=w[p]=w[p]||{};`,\n `c[f]=(c[f]||[])`,\n forward.length > 0 ? `.concat(${JSON.stringify(forward)})` : ``,\n `})(window,'partytown','forward');`,\n snippetCode,\n ].join('');\n};\n\n/**\n * The `type` attribute for Partytown scripts, which does two things:\n *\n * 1. Prevents the `