{"version":3,"sources":["webpack://t-cards-online/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://t-cards-online/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://t-cards-online/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://t-cards-online/./node_modules/@babel/runtime/helpers/extends.js","webpack://t-cards-online/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://t-cards-online/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://t-cards-online/./node_modules/@babel/runtime/helpers/interopRequireWildcard.js","webpack://t-cards-online/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://t-cards-online/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://t-cards-online/./node_modules/@babel/runtime/helpers/typeof.js","webpack://t-cards-online/./node_modules/@mikaelkristiansson/domready/ready.js","webpack://t-cards-online/./node_modules/@gatsbyjs/reach-router/lib/history.js","webpack://t-cards-online/./node_modules/@gatsbyjs/reach-router/lib/utils.js","webpack://t-cards-online/./node_modules/babel-runtime/core-js/object/assign.js","webpack://t-cards-online/./node_modules/babel-runtime/helpers/extends.js","webpack://t-cards-online/./node_modules/camelcase/index.js","webpack://t-cards-online/./node_modules/common-tags/es/TemplateTag/TemplateTag.js","webpack://t-cards-online/./node_modules/common-tags/es/inlineArrayTransformer/inlineArrayTransformer.js","webpack://t-cards-online/./node_modules/common-tags/es/stripIndentTransformer/stripIndentTransformer.js","webpack://t-cards-online/./node_modules/common-tags/es/trimResultTransformer/trimResultTransformer.js","webpack://t-cards-online/./node_modules/common-tags/es/splitStringTransformer/splitStringTransformer.js","webpack://t-cards-online/./node_modules/common-tags/es/commaLists/commaLists.js","webpack://t-cards-online/./node_modules/common-tags/es/commaListsAnd/commaListsAnd.js","webpack://t-cards-online/./node_modules/common-tags/es/commaListsOr/commaListsOr.js","webpack://t-cards-online/./node_modules/common-tags/es/removeNonPrintingValuesTransformer/removeNonPrintingValuesTransformer.js","webpack://t-cards-online/./node_modules/common-tags/es/replaceSubstitutionTransformer/replaceSubstitutionTransformer.js","webpack://t-cards-online/./node_modules/common-tags/es/html/html.js","webpack://t-cards-online/./node_modules/common-tags/es/replaceResultTransformer/replaceResultTransformer.js","webpack://t-cards-online/./node_modules/common-tags/es/safeHtml/safeHtml.js","webpack://t-cards-online/./node_modules/common-tags/es/oneLine/oneLine.js","webpack://t-cards-online/./node_modules/common-tags/es/oneLineTrim/oneLineTrim.js","webpack://t-cards-online/./node_modules/common-tags/es/oneLineCommaLists/oneLineCommaLists.js","webpack://t-cards-online/./node_modules/common-tags/es/oneLineCommaListsOr/oneLineCommaListsOr.js","webpack://t-cards-online/./node_modules/common-tags/es/oneLineCommaListsAnd/oneLineCommaListsAnd.js","webpack://t-cards-online/./node_modules/common-tags/es/inlineLists/inlineLists.js","webpack://t-cards-online/./node_modules/common-tags/es/oneLineInlineLists/oneLineInlineLists.js","webpack://t-cards-online/./node_modules/common-tags/es/stripIndent/stripIndent.js","webpack://t-cards-online/./node_modules/common-tags/es/stripIndents/stripIndents.js","webpack://t-cards-online/./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack://t-cards-online/./node_modules/history/cjs/history.min.js","webpack://t-cards-online/./node_modules/history/createBrowserHistory.js","webpack://t-cards-online/./node_modules/history/index.js","webpack://t-cards-online/./node_modules/history/warnAboutDeprecatedCJSRequire.js","webpack://t-cards-online/./node_modules/intersection-observer/intersection-observer.js","webpack://t-cards-online/./node_modules/resolve-pathname/esm/resolve-pathname.js","webpack://t-cards-online/./node_modules/sal.js/dist/sal.js","webpack://t-cards-online/./node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack://t-cards-online/./node_modules/tiny-warning/dist/tiny-warning.esm.js","webpack://t-cards-online/./node_modules/value-equal/esm/value-equal.js","webpack://t-cards-online/./node_modules/webfontloader/webfontloader.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/fn/object/assign.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_a-function.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_array-includes.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_cof.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_ctx.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_defined.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_dom-create.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-bug-keys.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_iobject.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-assign.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gops.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys-internal.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-pie.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared-key.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-absolute-index.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-integer.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-length.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js","webpack://t-cards-online/./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.object.assign.js","webpack://t-cards-online/./node_modules/gatsby-link/index.js","webpack://t-cards-online/./node_modules/gatsby-link/parse-path.js","webpack://t-cards-online/./node_modules/gatsby-react-router-scroll/index.js","webpack://t-cards-online/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://t-cards-online/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://t-cards-online/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://t-cards-online/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://t-cards-online/./.cache/api-runner-browser-plugins.js","webpack://t-cards-online/./.cache/api-runner-browser.js","webpack://t-cards-online/./node_modules/mitt/dist/mitt.es.js","webpack://t-cards-online/./.cache/emitter.js","webpack://t-cards-online/./.cache/normalize-page-path.js","webpack://t-cards-online/./.cache/find-path.js","webpack://t-cards-online/./.cache/gatsby-browser-entry.js","webpack://t-cards-online/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://t-cards-online/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://t-cards-online/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://t-cards-online/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://t-cards-online/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://t-cards-online/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://t-cards-online/./.cache/prefetch.js","webpack://t-cards-online/./.cache/loader.js","webpack://t-cards-online/./.cache/page-renderer.js","webpack://t-cards-online/./.cache/route-announcer-props.js","webpack://t-cards-online/./.cache/navigation.js","webpack://t-cards-online/./node_modules/shallow-compare/es/index.js","webpack://t-cards-online/./.cache/ensure-resources.js","webpack://t-cards-online/./.cache/production-app.js","webpack://t-cards-online/./.cache/public-page-renderer-prod.js","webpack://t-cards-online/./.cache/public-page-renderer.js","webpack://t-cards-online/./.cache/react-lifecycles-compat.js","webpack://t-cards-online/./.cache/redirect-utils.js","webpack://t-cards-online/./.cache/register-service-worker.js","webpack://t-cards-online/./.cache/strip-prefix.js","webpack://t-cards-online/./node_modules/gatsby-plugin-google-gtag/gatsby-browser.js","webpack://t-cards-online/../src/image-utils.ts","webpack://t-cards-online/../src/components/hooks.ts","webpack://t-cards-online/../src/components/layout-wrapper.tsx","webpack://t-cards-online/../src/components/picture.tsx","webpack://t-cards-online/../src/components/placeholder.tsx","webpack://t-cards-online/../src/components/main-image.tsx","webpack://t-cards-online/../src/components/gatsby-image.server.tsx","webpack://t-cards-online/../src/components/gatsby-image.browser.tsx","webpack://t-cards-online/../src/components/static-image.server.tsx","webpack://t-cards-online/../src/components/static-image.tsx","webpack://t-cards-online/../src/components/later-hydrator.tsx","webpack://t-cards-online/./node_modules/gatsby-plugin-image/gatsby-browser.js","webpack://t-cards-online/./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack://t-cards-online/./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack://t-cards-online/./node_modules/gatsby-plugin-page-transitions/gatsby-browser.js","webpack://t-cards-online/./node_modules/gatsby-plugin-page-transitions/index.js","webpack://t-cards-online/./node_modules/gatsby-plugin-page-transitions/node_modules/react-transition-group/Transition.js","webpack://t-cards-online/./node_modules/gatsby-plugin-page-transitions/node_modules/react-transition-group/utils/PropTypes.js","webpack://t-cards-online/./node_modules/gatsby-plugin-scroll-reveal/Wrapper.js","webpack://t-cards-online/./node_modules/gatsby-plugin-scroll-reveal/gatsby-browser.js","webpack://t-cards-online/src/gatsby-browser.js","webpack://t-cards-online/./node_modules/@gatsbyjs/reach-router/es/lib/utils.js","webpack://t-cards-online/./node_modules/@gatsbyjs/reach-router/es/lib/history.js","webpack://t-cards-online/./node_modules/@gatsbyjs/reach-router/es/index.js","webpack://t-cards-online/./node_modules/invariant/browser.js"],"names":["module","exports","self","ReferenceError","__esModule","_setPrototypeOf","o","p","Object","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","prototype","create","constructor","_extends","assign","target","i","arguments","length","source","key","hasOwnProperty","call","apply","this","obj","_typeof","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","defineProperty","getOwnPropertyDescriptor","desc","set","excluded","sourceKeys","keys","indexOf","Symbol","iterator","ie10","navigator","appVersion","listener","fns","doc","document","hack","documentElement","doScroll","domContentLoaded","loaded","test","readyState","addEventListener","removeEventListener","shift","fn","setTimeout","push","definition","getLocation","_source$location","location","search","hash","href","origin","protocol","host","hostname","port","pathname","canUseDOM","URL","encodeURI","decodeURI","state","history","createHistory","options","listeners","transitioning","resolveTransition","_onTransitionComplete","listen","popstateListener","action","filter","navigate","to","_ref","undefined","_ref$replace","replace","go","Date","now","replaceState","pushState","e","transition","Promise","res","forEach","createMemorySource","initialPath","searchIndex","initialLocation","substr","index","stack","states","name","_","uri","_uri$split","split","_uri$split$","_uri$split2","_uri$split2$","newIndex","window","createElement","globalHistory","shallowCompare","validateRedirect","insertParams","resolve","match","pick","startsWith","_invariant","_invariant2","default","string","routes","default_","uriPathname","uriSegments","segmentize","isRootUri","ranked","rankRoutes","l","missed","route","params","routeSegments","path","max","Math","routeSegment","uriSegment","isSplat","slice","map","decodeURIComponent","join","dynamicMatch","paramRe","exec","reservedNames","value","isDynamic","segment","rankRoute","score","reduce","isRootSegment","SEGMENT_POINTS","sort","a","b","addQuery","_len","query","Array","_key","q","base","_to$split","toPathname","toQuery","basePathname","toSegments","baseSegments","concat","allSegments","segments","pop","_path$split","pathBase","_path$split$","constructedPath","_params$location","_params$location$sear","searchSplit","from","obj1","obj2","obj1Keys","every","_assign","_assign2","camelCase","input","isArray","TypeError","pascalCase","x","trim","toUpperCase","toLowerCase","isLastCharLower","isLastCharUpper","isLastLastCharUpper","character","preserveCamelCase","p1","m","charAt","strings","raw","_createClass","defineProperties","props","descriptor","enumerable","configurable","writable","Constructor","protoProps","staticProps","_templateObject","freeze","_classCallCheck","instance","TemplateTag","_this","transformers","tag","_len2","expressions","_key2","interimTag","bind","transformEndResult","transformString","processSubstitutions","transformer","previousTag","template","_len3","substitutions","_key3","resultSoFar","remainingPart","substitution","transformSubstitution","str","transform","onString","onSubstitution","endResult","onEndResult","defaults","separator","conjunction","serial","opts","arrayLength","indent","separatorIndex","lastIndexOf","_toConsumableArray","arr","arr2","type","min","el","regexp","RegExp","Error","side","splitBy","includes","isValidValue","Number","isNaN","replaceWhat","replaceWith","toString","_interopDefault","t","resolvePathname","valueEqual","invariant","n","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","parsePath","r","createPath","createLocation","URIError","createTransitionManager","setPrompt","confirmTransitionTo","appendListener","notifyListeners","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","substring","replaceHashPath","clamp","createBrowserHistory","s","c","userAgent","supportsHistory","forceRefresh","h","getUserConfirmation","u","keyLength","f","basename","d","random","v","T","g","isExtraneousPopstateEvent","w","P","H","L","y","O","E","S","createHref","goBack","goForward","block","member","IntersectionObserverEntry","intersectionRatio","registry","IntersectionObserver","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","observe","_observationTargets","some","item","element","nodeType","_registerInstance","entry","_monitorIntersections","_checkForIntersections","unobserve","_unmonitorIntersections","_unregisterInstance","disconnect","takeRecords","records","_queuedEntries","_initThresholds","opt_threshold","threshold","_parseRootMargin","opt_rootMargin","margins","margin","parts","parseFloat","unit","_monitoringIntersections","_monitoringInterval","setInterval","addEvent","_domObserver","MutationObserver","attributes","childList","characterData","subtree","clearInterval","removeEvent","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","top","bottom","left","right","width","height","targetRect","getBoundingClientRect","rootContainsTarget","_rootContainsTarget","oldEntry","intersectionRect","_computeTargetAndRootIntersection","newEntry","time","performance","boundingClientRect","rootBounds","_hasCrossedThreshold","isIntersecting","_callback","getComputedStyle","display","rect1","rect2","parent","getParentNode","atRoot","parentRect","parentComputedStyle","root","body","overflow","html","clientWidth","clientHeight","_expandRectByRootMargin","rect","_rootMarginValues","newRect","oldRatio","newRatio","thresholds","containsDeep","splice","targetArea","intersectionArea","toFixed","callback","opt_options","timeout","timer","rootMargin","node","event","opt_useCapture","attachEvent","detatchEvent","err","child","parentNode","assignedSlot","isAbsolute","spliceOne","list","k","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","last","up","part","unshift","result","toStringTag","getOwnPropertySymbols","getOwnPropertyDescriptors","animateClassName","disabledClassName","enterEventName","exitEventName","selector","once","disabled","CustomEvent","bubbles","detail","dispatchEvent","classList","add","remove","querySelectorAll","contains","console","warn","elements","disable","enable","prefix","condition","message","valueOf","aValue","bValue","aa","ba","Function","ca","da","FontFace","style","cssText","setAttribute","appendChild","createTextNode","getElementsByTagName","insertBefore","lastChild","removeChild","className","z","rel","media","onload","onerror","A","src","onreadystatechange","tagName","B","C","D","F","G","parseInt","I","J","ga","ha","j","events","classes","K","ja","M","N","Q","start","fonts","load","fa","then","race","clearTimeout","R","la","U","offsetWidth","serif","V","ma","W","X","na","oa","qa","xa","vendor","ra","sa","ta","ua","context","ia","ka","pa","fontfamily","fontStyle","fontWeight","projectId","version","api","id","urls","families","testStrings","ya","za","latin","cyrillic","greek","khmer","Hanuman","Aa","thin","extralight","ultralight","light","regular","book","medium","semibold","demibold","bold","extrabold","ultrabold","black","heavy","Ba","italic","normal","Ca","Ea","Fa","Arimo","Cousine","Tinos","Ga","Ha","text","va","Da","encodeURIComponent","wa","Typekit","config","async","__webfontfontdeckmodule__","weight","ea","Y","custom","fontdeck","monotype","typekit","google","Z","it","isObject","toIObject","toLength","toAbsoluteIndex","IS_INCLUDES","$this","fromIndex","core","__e","aFunction","that","is","global","ctx","hide","$export","own","out","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","IS_WRAP","expProto","virtual","__g","dP","createDesc","object","cof","propertyIsEnumerable","DESCRIPTORS","getKeys","gOPS","pIE","toObject","IObject","$assign","aLen","getSymbols","isEnum","anObject","IE8_DOM_DEFINE","toPrimitive","Attributes","arrayIndexOf","IE_PROTO","names","$keys","enumBugKeys","bitmap","shared","uid","SHARED","store","mode","copyright","toInteger","ceil","floor","defined","val","px","_interopRequireDefault","withPrefix","getGlobalPathPrefix","_objectWithoutPropertiesLoose2","_assertThisInitialized2","_inheritsLoose2","_extends2","_propTypes","_react","_reachRouter","_utils","_parsePath","isAbsolutePath","_prefix","getGlobalBasePrefix","isLocalLink","endsWith","rewriteLinkPath","relativeTo","current","absolutify","NavLinkPropTypes","activeClassName","activeStyle","partiallyActive","bool","GatsbyLinkLocationWrapper","Location","_ref2","GatsbyLink","_location","_React$Component","defaultGetProps","_ref3","isPartiallyCurrent","isCurrent","Boolean","IOSupported","handleRef","_proto","_prefetch","currentPath","rewrittenPath","newPathName","___loader","enqueue","componentDidUpdate","prevProps","prevState","componentDidMount","componentWillUnmount","io","_this$io","ref","cb","_this2","innerRef","entries","render","_this3","_this$props","_this$props$getProps","getProps","_onClick","onClick","_onMouseEnter","onMouseEnter","rest","prefixedTo","Link","hovering","button","defaultPrevented","metaKey","altKey","ctrlKey","shiftKey","preventDefault","shouldReplace","___navigate","Component","propTypes","func","isRequired","_default","forwardRef","hashIndex","_scrollHandler","ScrollHandler","_useScrollRestoration","useScrollRestoration","ScrollContext","React","_interopRequireWildcard","_sessionStorage","createContext","SessionStorage","displayName","args","_stateStorage","_isTicking","_latestKnownScrollY","scrollListener","scrollY","requestAnimationFrame","_saveScroll","windowScroll","position","shouldUpdateScroll","scrollTo","scrollToHash","getElementById","scrollIntoView","prevRouterProps","routerProps","save","scrollPosition","_this$props$location","read","_this$props$location2","Provider","children","GATSBY_ROUTER_SCROLL_STATE","stateKey","getStateKey","sessionStorage","getItem","JSON","parse","storedValue","stringify","setItem","stateKeyBase","identifier","useLocation","useContext","useRef","useLayoutEffect","onScroll","scrollTop","components","plugin","require","plugins","getResourceURLsForPathname","loadPage","loadPageSync","defaultReturn","argTransform","results","previous","next","all","on","handler","off","emit","evt","mitt","pathCache","Map","matchPaths","trimPathname","rawPathname","stripPrefix","__BASE_PATH__","setMatchPaths","findMatchPath","trimmedPathname","cleanPath","pickPaths","matchPath","originalPath","normalizePagePath","grabMatchParams","findPath","redirect","maybeGetBrowserRedirect","toPath","foundPath","prefetchPathname","loader","StaticQueryContext","StaticQueryDataRenderer","staticQueryData","data","finalData","StaticQuery","Consumer","useStaticQuery","graphql","_arrayLikeToArray","len","iter","minLen","supportedPrefetchStrategy","feature","fakeLink","relList","supports","support","url","reject","link","getElementsByName","req","XMLHttpRequest","open","status","send","preFetched","catch","PageResourceStatus","Success","preferDefault","createPageDataUrl","stripSurroundingSlashes","doFetch","method","toPageResources","pageData","component","page","componentChunkName","webpackCompilationHash","staticQueryHashes","json","BaseLoader","loadComponent","inFlightNetworkRequests","pageDb","inFlightDb","staticQueryDb","pageDataDb","prefetchTriggered","Set","prefetchCompleted","memoizedGet","inFlightPromise","response","delete","setApiRunner","apiRunner","prefetchDisabled","fetchPageDataJson","loadObj","pagePath","retries","responseText","jsonPayload","payload","notFound","loadPageDataJson","rawPath","error","loadAppData","allData","finalResult","componentChunkPromise","pageResources","createdAt","staticQueryBatchPromise","staticQueryHash","staticQueryResults","staticQueryResultsMap","emitter","withErrorDetails","shouldPrefetch","connection","effectiveType","saveData","doesConnectionSupportPrefetch","prefetch","realPath","doPrefetch","pageDataUrl","prefetchHelper","crossOrigin","as","createComponentUrls","isPageNotFound","appData","___chunkMapping","chunk","__PATH_PREFIX__","ProdLoader","asyncRequires","chunkName","componentUrls","setLoader","_loader","publicLoader","getStaticQueryResults","PageRenderer","pageContext","__params","pageElement","RouteAnnouncerProps","padding","clip","whiteSpace","border","maybeRedirect","___replace","onPreRouteUpdate","prevLocation","onRouteUpdate","___swUpdated","timeoutId","___webpackCompilationHash","serviceWorker","controller","postMessage","gatsbyApi","reachNavigate","getSavedScrollPosition","RouteAnnouncer","announcementRef","nextProps","pageName","title","pageHeadings","textContent","newAnnouncement","innerText","compareLocationProps","nextLocation","RouteUpdates","shouldComponentUpdate","shallowDiffers","_i","getDerivedStateFromProps","loadResources","setState","nextState","___emitter","___push","apiRunnerAsync","RouteHandler","BaseContext","baseuri","basepath","DataContext","GatsbyRoot","LocationHandler","Router","browserLoc","SiteRoot","App","onClientEntryRanRef","mark","renderer","process","GATSBY_EXPERIMENTAL_CONCURRENT_FEATURES","ReactDOM","domReady","container","hydrate","InternalPageRenderer","polyfill","redirectMap","redirectIgnoreCaseMap","redirects","ignoreCase","fromPath","register","reg","installingWorker","installing","log","___failedResources","reload","gtag","excludeGtagPaths","rx","sendPageView","page_path","imageCache","hasNativeLazyLoadSupport","HTMLImageElement","GATSBY___IMAGE","storeImageloaded","cacheKey","hasImageLoaded","getImage","images","fallback","gatsbyImageData","childImageSharp","format","getMainProps","isLoading","isLoaded","loading","toggleLoaded","dataset","objectFit","objectPosition","objectFitPolyfill","import","shouldLoad","data-main-image","opacity","onLoad","currentTarget","img","Image","currentSrc","decode","getPlaceholderProps","placeholder","layout","backgroundColor","wrapperStyle","aria-hidden","data-placeholder-image","Sizer","paddingTop","maxWidth","alt","role","LayoutWrapper","Fragment","srcSet","decoding","Picture","sources","sizes","fallbackImage","PropTypes","Placeholder","propName","componentName","MainImage","altValidator","image","GatsbyImageHydrator","createRef","_lazyHydrate","hasSSRHtml","querySelector","hydrated","lazyHydrator","lazyHydrate","toggleIsLoaded","forceRender","_setupIntersectionObserver","useCache","intersectionObserver","createIntersectionObserver","_this4","onStartLoad","wasCached","unobserveRef","hasChanged","_this5","ssrElement","complete","Type","data-gatsby-image-wrapper","wStyle","wClass","wrapperProps","sizer","dangerouslySetInnerHTML","__html","suppressHydrationWarning","GatsbyImage","propsKey","checkDimensionProps","validLayouts","StaticImage","GatsbyImageBrowser","imageData","__imageData","__error","LaterHydrator","wrapRootElement","localizedManifests","defaultFilename","localizedManifest","find","app","start_url","lang","_createBrowserHistory","_createBrowserHistory2","_index","onClientEntry","transitionTime","pageTransitionTime","pageTransitionEvent","componentTransitionTime","pageTransitionExists","replaceHistory","_react2","_propTypes2","_Transition2","PageTransition","_possibleConstructorReturn","getPrototypeOf","setIn","listenerHandler","in","_inherits","inProp","defaultStyle","transitionStyles","entering","entered","exiting","oneOfType","arrayOf","shape","number","EXITING","ENTERED","ENTERING","EXITED","UNMOUNTED","_reactDom","_reactLifecyclesCompat","Transition","initialStatus","parentGroup","transitionGroup","appear","isMounting","enter","appearStatus","unmountOnExit","mountOnEnter","nextCallback","getChildContext","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","findDOMNode","performEnter","performExit","appearing","timeouts","enterTimeout","onEnter","safeSetState","onEntering","onTransitionEnd","onEntered","onExit","onExiting","onExited","cancel","setNextCallback","active","doesNotHaveTimeoutOrListener","addEndListener","childProps","_objectWithoutPropertiesLoose","Children","only","cloneElement","noop","contextTypes","childContextTypes","defaultProps","classNamesShape","timeoutsShape","useEffect","_sal","Wrapper","wrapPageElement","WebFont","onInitialClientRender","_objectWithoutProperties","createNamedContext","defaultValue","Ctx","LocationContext","LocationProvider","_temp","getContext","refs","unlisten","_props$history","componentDidCatch","info","isRedirect","_navigate","unmounted","ServerLocation","baseContext","locationContext","RouterImpl","_React$PureComponent","_props","_navigate2","primary","_props$component","domProps","array","createRoute","clone","FocusWrapper","FocusHandler","FocusContext","requestFocus","FocusHandlerImpl","initialRender","focusHandlerCount","_React$Component2","_temp2","shouldFocus","focus","myURIChanged","navigatedUpToMe","activeElement","_props2","_props2$component","Comp","outline","tabIndex","_ref4","_ref5","_ref6","_props$getProps","anchorProps","encodedHref","shouldNavigate","_location$state","restState","RedirectRequest","redirectTo","RedirectImpl","_React$Component3","_props3","_props3$replace","noThrow","resolvedTo","_props4","Redirect","_ref7","Match","_ref8","_ref9","_ref10","resolvedPath","useNavigate","useParams","useMatch","stripSlashes","elementPath","argIndex","framesToPop"],"mappings":"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","file":"app-16252836d05aee2e2894.js","sourcesContent":["function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inheritsLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _typeof = require(\"@babel/runtime/helpers/typeof\")[\"default\"];\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nmodule.exports = _interopRequireWildcard;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\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\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/*!\n * domready (c) Dustin Diaz 2014 - License MIT\n * ie10 fix - Mikael Kristiansson 2019\n */\n!(function(name, definition) {\n if (typeof module != \"undefined\") module.exports = definition();\n else if (typeof define == \"function\" && typeof define.amd == \"object\")\n define(definition);\n else this[name] = definition();\n})(\"domready\", function() {\n var ie10 = false;\n if (navigator.appVersion.indexOf(\"MSIE 10\") !== -1) {\n ie10 = true;\n }\n\n var fns = [],\n listener,\n doc = typeof document === \"object\" && document,\n hack = ie10\n ? doc.documentElement.doScroll(\"left\")\n : doc.documentElement.doScroll,\n domContentLoaded = \"DOMContentLoaded\",\n loaded =\n doc && (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(doc.readyState);\n\n if (!loaded && doc)\n doc.addEventListener(\n domContentLoaded,\n (listener = function() {\n doc.removeEventListener(domContentLoaded, listener);\n loaded = 1;\n while ((listener = fns.shift())) listener();\n })\n );\n\n return function(fn) {\n loaded ? setTimeout(fn, 0) : fns.push(fn);\n };\n});\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\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 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\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({\n location: location,\n action: \"POP\"\n });\n };\n\n source.addEventListener(\"popstate\", popstateListener);\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, {\n key: Date.now() + \"\"\n }); // try...catch iOS Safari limits to 100 pushState calls\n\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({\n location: location,\n action: \"PUSH\"\n });\n });\n return transition;\n }\n };\n}; ////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\n\n\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\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 return {\n get location() {\n return stack[index];\n },\n\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n history: {\n get entries() {\n return stack;\n },\n\n get index() {\n return index;\n },\n\n get state() {\n return states[index];\n },\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({\n pathname: pathname,\n search: search.length ? \"?\" + search : search\n });\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] = {\n pathname: pathname,\n search: search\n };\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// global history - uses window.history as the source if available, otherwise a\n// memory history\n\n\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate; ////////////////////////////////////////////////////////////////////////////////\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) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n} ////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\n\n\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\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.\n\n\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// match(path, uri) - Matches just one path to a uri, also lol\n\n\nvar match = function match(path, uri) {\n return pick([{\n path: path\n }], uri);\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.\n\n\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); // ?a=b, /users?b=c => /users?a=b\n\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n } // profile, /users/789 => /users/789/profile\n\n\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\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\n\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n\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// insertParams(path, params)\n\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 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\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Junk\n\n\nvar paramRe = /^:(.+)/;\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};\n\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\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 {\n route: route,\n score: score,\n index: index\n };\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 // 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 * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\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;","module.exports = {\n \"default\": require(\"core-js/library/fn/object/assign\"),\n __esModule: true\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};","'use strict';\n\nvar preserveCamelCase = function preserveCamelCase(string) {\n var isLastCharLower = false;\n var isLastCharUpper = false;\n var isLastLastCharUpper = false;\n\n for (var i = 0; i < string.length; i++) {\n var character = string[i];\n\n if (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {\n string = string.slice(0, i) + '-' + string.slice(i);\n isLastCharLower = false;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = true;\n i++;\n } else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {\n string = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = false;\n isLastCharLower = true;\n } else {\n isLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;\n }\n }\n\n return string;\n};\n\nvar camelCase = function camelCase(input, options) {\n if (!(typeof input === 'string' || Array.isArray(input))) {\n throw new TypeError('Expected the input to be `string | string[]`');\n }\n\n options = Object.assign({\n pascalCase: false\n }, options);\n\n var postProcess = function postProcess(x) {\n return options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;\n };\n\n if (Array.isArray(input)) {\n input = input.map(function (x) {\n return x.trim();\n }).filter(function (x) {\n return x.length;\n }).join('-');\n } else {\n input = input.trim();\n }\n\n if (input.length === 0) {\n return '';\n }\n\n if (input.length === 1) {\n return options.pascalCase ? input.toUpperCase() : input.toLowerCase();\n }\n\n var hasUpperCase = input !== input.toLowerCase();\n\n if (hasUpperCase) {\n input = preserveCamelCase(input);\n }\n\n input = input.replace(/^[_.\\- ]+/, '').toLowerCase().replace(/[_.\\- ]+(\\w|$)/g, function (_, p1) {\n return p1.toUpperCase();\n }).replace(/\\d+(\\w|$)/g, function (m) {\n return m.toUpperCase();\n });\n return postProcess(input);\n};\n\nmodule.exports = camelCase; // TODO: Remove this for the next major release\n\nmodule.exports.default = camelCase;","var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _templateObject = _taggedTemplateLiteral(['', ''], ['', '']);\n\nfunction _taggedTemplateLiteral(strings, raw) {\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n/**\n * @class TemplateTag\n * @classdesc Consumes a pipeline of composable transformer plugins and produces a template tag.\n */\n\n\nvar TemplateTag = function () {\n /**\n * constructs a template tag\n * @constructs TemplateTag\n * @param {...Object} [...transformers] - an array or arguments list of transformers\n * @return {Function} - a template tag\n */\n function TemplateTag() {\n var _this = this;\n\n for (var _len = arguments.length, transformers = Array(_len), _key = 0; _key < _len; _key++) {\n transformers[_key] = arguments[_key];\n }\n\n _classCallCheck(this, TemplateTag);\n\n this.tag = function (strings) {\n for (var _len2 = arguments.length, expressions = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n expressions[_key2 - 1] = arguments[_key2];\n }\n\n if (typeof strings === 'function') {\n // if the first argument passed is a function, assume it is a template tag and return\n // an intermediary tag that processes the template using the aforementioned tag, passing the\n // result to our tag\n return _this.interimTag.bind(_this, strings);\n }\n\n if (typeof strings === 'string') {\n // if the first argument passed is a string, just transform it\n return _this.transformEndResult(strings);\n } // else, return a transformed end result of processing the template with our tag\n\n\n strings = strings.map(_this.transformString.bind(_this));\n return _this.transformEndResult(strings.reduce(_this.processSubstitutions.bind(_this, expressions)));\n }; // if first argument is an array, extrude it as a list of transformers\n\n\n if (transformers.length > 0 && Array.isArray(transformers[0])) {\n transformers = transformers[0];\n } // if any transformers are functions, this means they are not initiated - automatically initiate them\n\n\n this.transformers = transformers.map(function (transformer) {\n return typeof transformer === 'function' ? transformer() : transformer;\n }); // return an ES2015 template tag\n\n return this.tag;\n }\n /**\n * Applies all transformers to a template literal tagged with this method.\n * If a function is passed as the first argument, assumes the function is a template tag\n * and applies it to the template, returning a template tag.\n * @param {(Function|String|Array)} strings - Either a template tag or an array containing template strings separated by identifier\n * @param {...*} ...expressions - Optional list of substitution values.\n * @return {(String|Function)} - Either an intermediary tag function or the results of processing the template.\n */\n\n\n _createClass(TemplateTag, [{\n key: 'interimTag',\n\n /**\n * An intermediary template tag that receives a template tag and passes the result of calling the template with the received\n * template tag to our own template tag.\n * @param {Function} nextTag - the received template tag\n * @param {Array} template - the template to process\n * @param {...*} ...substitutions - `substitutions` is an array of all substitutions in the template\n * @return {*} - the final processed value\n */\n value: function interimTag(previousTag, template) {\n for (var _len3 = arguments.length, substitutions = Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n substitutions[_key3 - 2] = arguments[_key3];\n }\n\n return this.tag(_templateObject, previousTag.apply(undefined, [template].concat(substitutions)));\n }\n /**\n * Performs bulk processing on the tagged template, transforming each substitution and then\n * concatenating the resulting values into a string.\n * @param {Array<*>} substitutions - an array of all remaining substitutions present in this template\n * @param {String} resultSoFar - this iteration's result string so far\n * @param {String} remainingPart - the template chunk after the current substitution\n * @return {String} - the result of joining this iteration's processed substitution with the result\n */\n\n }, {\n key: 'processSubstitutions',\n value: function processSubstitutions(substitutions, resultSoFar, remainingPart) {\n var substitution = this.transformSubstitution(substitutions.shift(), resultSoFar);\n return ''.concat(resultSoFar, substitution, remainingPart);\n }\n /**\n * Iterate through each transformer, applying the transformer's `onString` method to the template\n * strings before all substitutions are processed.\n * @param {String} str - The input string\n * @return {String} - The final results of processing each transformer\n */\n\n }, {\n key: 'transformString',\n value: function transformString(str) {\n var cb = function cb(res, transform) {\n return transform.onString ? transform.onString(res) : res;\n };\n\n return this.transformers.reduce(cb, str);\n }\n /**\n * When a substitution is encountered, iterates through each transformer and applies the transformer's\n * `onSubstitution` method to the substitution.\n * @param {*} substitution - The current substitution\n * @param {String} resultSoFar - The result up to and excluding this substitution.\n * @return {*} - The final result of applying all substitution transformations.\n */\n\n }, {\n key: 'transformSubstitution',\n value: function transformSubstitution(substitution, resultSoFar) {\n var cb = function cb(res, transform) {\n return transform.onSubstitution ? transform.onSubstitution(res, resultSoFar) : res;\n };\n\n return this.transformers.reduce(cb, substitution);\n }\n /**\n * Iterates through each transformer, applying the transformer's `onEndResult` method to the\n * template literal after all substitutions have finished processing.\n * @param {String} endResult - The processed template, just before it is returned from the tag\n * @return {String} - The final results of processing each transformer\n */\n\n }, {\n key: 'transformEndResult',\n value: function transformEndResult(endResult) {\n var cb = function cb(res, transform) {\n return transform.onEndResult ? transform.onEndResult(res) : res;\n };\n\n return this.transformers.reduce(cb, endResult);\n }\n }]);\n\n return TemplateTag;\n}();\n\nexport default TemplateTag;","var defaults = {\n separator: '',\n conjunction: '',\n serial: false\n};\n/**\n * Converts an array substitution to a string containing a list\n * @param {String} [opts.separator = ''] - the character that separates each item\n * @param {String} [opts.conjunction = ''] - replace the last separator with this\n * @param {Boolean} [opts.serial = false] - include the separator before the conjunction? (Oxford comma use-case)\n *\n * @return {Object} - a TemplateTag transformer\n */\n\nvar inlineArrayTransformer = function inlineArrayTransformer() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaults;\n return {\n onSubstitution: function onSubstitution(substitution, resultSoFar) {\n // only operate on arrays\n if (Array.isArray(substitution)) {\n var arrayLength = substitution.length;\n var separator = opts.separator;\n var conjunction = opts.conjunction;\n var serial = opts.serial; // join each item in the array into a string where each item is separated by separator\n // be sure to maintain indentation\n\n var indent = resultSoFar.match(/(\\n?[^\\S\\n]+)$/);\n\n if (indent) {\n substitution = substitution.join(separator + indent[1]);\n } else {\n substitution = substitution.join(separator + ' ');\n } // if conjunction is set, replace the last separator with conjunction, but only if there is more than one substitution\n\n\n if (conjunction && arrayLength > 1) {\n var separatorIndex = substitution.lastIndexOf(separator);\n substitution = substitution.slice(0, separatorIndex) + (serial ? separator : '') + ' ' + conjunction + substitution.slice(separatorIndex + 1);\n }\n }\n\n return substitution;\n }\n };\n};\n\nexport default inlineArrayTransformer;","function _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n}\n/**\n * strips indentation from a template literal\n * @param {String} type = 'initial' - whether to remove all indentation or just leading indentation. can be 'all' or 'initial'\n * @return {Object} - a TemplateTag transformer\n */\n\n\nvar stripIndentTransformer = function stripIndentTransformer() {\n var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'initial';\n return {\n onEndResult: function onEndResult(endResult) {\n if (type === 'initial') {\n // remove the shortest leading indentation from each line\n var match = endResult.match(/^[^\\S\\n]*(?=\\S)/gm);\n var indent = match && Math.min.apply(Math, _toConsumableArray(match.map(function (el) {\n return el.length;\n })));\n\n if (indent) {\n var regexp = new RegExp('^.{' + indent + '}', 'gm');\n return endResult.replace(regexp, '');\n }\n\n return endResult;\n }\n\n if (type === 'all') {\n // remove all indentation from each line\n return endResult.replace(/^[^\\S\\n]+/gm, '');\n }\n\n throw new Error('Unknown type: ' + type);\n }\n };\n};\n\nexport default stripIndentTransformer;","/**\n * TemplateTag transformer that trims whitespace on the end result of a tagged template\n * @param {String} side = '' - The side of the string to trim. Can be 'start' or 'end' (alternatively 'left' or 'right')\n * @return {Object} - a TemplateTag transformer\n */\nvar trimResultTransformer = function trimResultTransformer() {\n var side = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return {\n onEndResult: function onEndResult(endResult) {\n if (side === '') {\n return endResult.trim();\n }\n\n side = side.toLowerCase();\n\n if (side === 'start' || side === 'left') {\n return endResult.replace(/^\\s*/, '');\n }\n\n if (side === 'end' || side === 'right') {\n return endResult.replace(/\\s*$/, '');\n }\n\n throw new Error('Side not supported: ' + side);\n }\n };\n};\n\nexport default trimResultTransformer;","var splitStringTransformer = function splitStringTransformer(splitBy) {\n return {\n onSubstitution: function onSubstitution(substitution, resultSoFar) {\n if (splitBy != null && typeof splitBy === 'string') {\n if (typeof substitution === 'string' && substitution.includes(splitBy)) {\n substitution = substitution.split(splitBy);\n }\n } else {\n throw new Error('You need to specify a string character to split by.');\n }\n\n return substitution;\n }\n };\n};\n\nexport default splitStringTransformer;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar commaLists = new TemplateTag(inlineArrayTransformer({\n separator: ','\n}), stripIndentTransformer, trimResultTransformer);\nexport default commaLists;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar commaListsAnd = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'and'\n}), stripIndentTransformer, trimResultTransformer);\nexport default commaListsAnd;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar commaListsOr = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'or'\n}), stripIndentTransformer, trimResultTransformer);\nexport default commaListsOr;","var isValidValue = function isValidValue(x) {\n return x != null && !Number.isNaN(x) && typeof x !== 'boolean';\n};\n\nvar removeNonPrintingValuesTransformer = function removeNonPrintingValuesTransformer() {\n return {\n onSubstitution: function onSubstitution(substitution) {\n if (Array.isArray(substitution)) {\n return substitution.filter(isValidValue);\n }\n\n if (isValidValue(substitution)) {\n return substitution;\n }\n\n return '';\n }\n };\n};\n\nexport default removeNonPrintingValuesTransformer;","var replaceSubstitutionTransformer = function replaceSubstitutionTransformer(replaceWhat, replaceWith) {\n return {\n onSubstitution: function onSubstitution(substitution, resultSoFar) {\n if (replaceWhat == null || replaceWith == null) {\n throw new Error('replaceSubstitutionTransformer requires at least 2 arguments.');\n } // Do not touch if null or undefined\n\n\n if (substitution == null) {\n return substitution;\n } else {\n return substitution.toString().replace(replaceWhat, replaceWith);\n }\n }\n };\n};\n\nexport default replaceSubstitutionTransformer;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport splitStringTransformer from '../splitStringTransformer';\nimport removeNonPrintingValuesTransformer from '../removeNonPrintingValuesTransformer';\nvar html = new TemplateTag(splitStringTransformer('\\n'), removeNonPrintingValuesTransformer, inlineArrayTransformer, stripIndentTransformer, trimResultTransformer);\nexport default html;","/**\n * Replaces tabs, newlines and spaces with the chosen value when they occur in sequences\n * @param {(String|RegExp)} replaceWhat - the value or pattern that should be replaced\n * @param {*} replaceWith - the replacement value\n * @return {Object} - a TemplateTag transformer\n */\nvar replaceResultTransformer = function replaceResultTransformer(replaceWhat, replaceWith) {\n return {\n onEndResult: function onEndResult(endResult) {\n if (replaceWhat == null || replaceWith == null) {\n throw new Error('replaceResultTransformer requires at least 2 arguments.');\n }\n\n return endResult.replace(replaceWhat, replaceWith);\n }\n };\n};\n\nexport default replaceResultTransformer;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport splitStringTransformer from '../splitStringTransformer';\nimport replaceSubstitutionTransformer from '../replaceSubstitutionTransformer';\nvar safeHtml = new TemplateTag(splitStringTransformer('\\n'), inlineArrayTransformer, stripIndentTransformer, trimResultTransformer, replaceSubstitutionTransformer(/&/g, '&'), replaceSubstitutionTransformer(//g, '>'), replaceSubstitutionTransformer(/\"/g, '"'), replaceSubstitutionTransformer(/'/g, '''), replaceSubstitutionTransformer(/`/g, '`'));\nexport default safeHtml;","import TemplateTag from '../TemplateTag';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLine = new TemplateTag(replaceResultTransformer(/(?:\\n(?:\\s*))+/g, ' '), trimResultTransformer);\nexport default oneLine;","import TemplateTag from '../TemplateTag';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineTrim = new TemplateTag(replaceResultTransformer(/(?:\\n\\s*)/g, ''), trimResultTransformer);\nexport default oneLineTrim;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineCommaLists = new TemplateTag(inlineArrayTransformer({\n separator: ','\n}), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineCommaLists;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineCommaListsOr = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'or'\n}), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineCommaListsOr;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineCommaListsAnd = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'and'\n}), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineCommaListsAnd;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar inlineLists = new TemplateTag(inlineArrayTransformer, stripIndentTransformer, trimResultTransformer);\nexport default inlineLists;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineInlineLists = new TemplateTag(inlineArrayTransformer, replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineInlineLists;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar stripIndent = new TemplateTag(stripIndentTransformer, trimResultTransformer);\nexport default stripIndent;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar stripIndents = new TemplateTag(stripIndentTransformer('all'), trimResultTransformer);\nexport default stripIndents;","\"use strict\";\n\nmodule.exports = Object.assign;","\"use strict\";\n\nfunction _interopDefault(t) {\n return t && \"object\" == typeof t && \"default\" in t ? t.default : t;\n}\n\nObject.defineProperty(exports, \"__esModule\", {\n value: !0\n});\n\nvar resolvePathname = _interopDefault(require(\"resolve-pathname\")),\n valueEqual = _interopDefault(require(\"value-equal\"));\n\nrequire(\"tiny-warning\");\n\nvar invariant = _interopDefault(require(\"tiny-invariant\"));\n\nfunction _extends() {\n return (_extends = Object.assign || function (t) {\n for (var n = 1; n < arguments.length; n++) {\n var e = arguments[n];\n\n for (var a in e) {\n Object.prototype.hasOwnProperty.call(e, a) && (t[a] = e[a]);\n }\n }\n\n return t;\n }).apply(this, arguments);\n}\n\nfunction addLeadingSlash(t) {\n return \"/\" === t.charAt(0) ? t : \"/\" + t;\n}\n\nfunction stripLeadingSlash(t) {\n return \"/\" === t.charAt(0) ? t.substr(1) : t;\n}\n\nfunction hasBasename(t, n) {\n return 0 === t.toLowerCase().indexOf(n.toLowerCase()) && -1 !== \"/?#\".indexOf(t.charAt(n.length));\n}\n\nfunction stripBasename(t, n) {\n return hasBasename(t, n) ? t.substr(n.length) : t;\n}\n\nfunction stripTrailingSlash(t) {\n return \"/\" === t.charAt(t.length - 1) ? t.slice(0, -1) : t;\n}\n\nfunction parsePath(t) {\n var n = t || \"/\",\n e = \"\",\n a = \"\",\n r = n.indexOf(\"#\");\n -1 !== r && (a = n.substr(r), n = n.substr(0, r));\n var o = n.indexOf(\"?\");\n return -1 !== o && (e = n.substr(o), n = n.substr(0, o)), {\n pathname: n,\n search: \"?\" === e ? \"\" : e,\n hash: \"#\" === a ? \"\" : a\n };\n}\n\nfunction createPath(t) {\n var n = t.pathname,\n e = t.search,\n a = t.hash,\n r = n || \"/\";\n return e && \"?\" !== e && (r += \"?\" === e.charAt(0) ? e : \"?\" + e), a && \"#\" !== a && (r += \"#\" === a.charAt(0) ? a : \"#\" + a), r;\n}\n\nfunction createLocation(t, n, e, a) {\n var r;\n \"string\" == typeof t ? (r = parsePath(t)).state = n : (void 0 === (r = _extends({}, t)).pathname && (r.pathname = \"\"), r.search ? \"?\" !== r.search.charAt(0) && (r.search = \"?\" + r.search) : r.search = \"\", r.hash ? \"#\" !== r.hash.charAt(0) && (r.hash = \"#\" + r.hash) : r.hash = \"\", void 0 !== n && void 0 === r.state && (r.state = n));\n\n try {\n r.pathname = decodeURI(r.pathname);\n } catch (t) {\n throw t instanceof URIError ? new URIError('Pathname \"' + r.pathname + '\" could not be decoded. This is likely caused by an invalid percent-encoding.') : t;\n }\n\n return e && (r.key = e), a ? r.pathname ? \"/\" !== r.pathname.charAt(0) && (r.pathname = resolvePathname(r.pathname, a.pathname)) : r.pathname = a.pathname : r.pathname || (r.pathname = \"/\"), r;\n}\n\nfunction locationsAreEqual(t, n) {\n return t.pathname === n.pathname && t.search === n.search && t.hash === n.hash && t.key === n.key && valueEqual(t.state, n.state);\n}\n\nfunction createTransitionManager() {\n var o = null;\n var a = [];\n return {\n setPrompt: function setPrompt(t) {\n return o = t, function () {\n o === t && (o = null);\n };\n },\n confirmTransitionTo: function confirmTransitionTo(t, n, e, a) {\n if (null != o) {\n var r = \"function\" == typeof o ? o(t, n) : o;\n \"string\" == typeof r ? \"function\" == typeof e ? e(r, a) : a(!0) : a(!1 !== r);\n } else a(!0);\n },\n appendListener: function appendListener(t) {\n var n = !0;\n\n function e() {\n n && t.apply(void 0, arguments);\n }\n\n return a.push(e), function () {\n n = !1, a = a.filter(function (t) {\n return t !== e;\n });\n };\n },\n notifyListeners: function notifyListeners() {\n for (var t = arguments.length, n = new Array(t), e = 0; e < t; e++) {\n n[e] = arguments[e];\n }\n\n a.forEach(function (t) {\n return t.apply(void 0, n);\n });\n }\n };\n}\n\nvar canUseDOM = !(\"undefined\" == typeof window || !window.document || !window.document.createElement);\n\nfunction getConfirmation(t, n) {\n n(window.confirm(t));\n}\n\nfunction supportsHistory() {\n var t = window.navigator.userAgent;\n return (-1 === t.indexOf(\"Android 2.\") && -1 === t.indexOf(\"Android 4.0\") || -1 === t.indexOf(\"Mobile Safari\") || -1 !== t.indexOf(\"Chrome\") || -1 !== t.indexOf(\"Windows Phone\")) && window.history && \"pushState\" in window.history;\n}\n\nfunction supportsPopStateOnHashChange() {\n return -1 === window.navigator.userAgent.indexOf(\"Trident\");\n}\n\nfunction supportsGoWithoutReloadUsingHash() {\n return -1 === window.navigator.userAgent.indexOf(\"Firefox\");\n}\n\nfunction isExtraneousPopstateEvent(t) {\n return void 0 === t.state && -1 === navigator.userAgent.indexOf(\"CriOS\");\n}\n\nvar PopStateEvent = \"popstate\",\n HashChangeEvent = \"hashchange\";\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (t) {\n return {};\n }\n}\n\nfunction createBrowserHistory(t) {\n void 0 === t && (t = {}), canUseDOM || invariant(!1);\n var s = window.history,\n c = supportsHistory(),\n n = !supportsPopStateOnHashChange(),\n e = t,\n a = e.forceRefresh,\n h = void 0 !== a && a,\n r = e.getUserConfirmation,\n u = void 0 === r ? getConfirmation : r,\n o = e.keyLength,\n i = void 0 === o ? 6 : o,\n f = t.basename ? stripTrailingSlash(addLeadingSlash(t.basename)) : \"\";\n\n function l(t) {\n var n = t || {},\n e = n.key,\n a = n.state,\n r = window.location,\n o = r.pathname + r.search + r.hash;\n return f && (o = stripBasename(o, f)), createLocation(o, a, e);\n }\n\n function d() {\n return Math.random().toString(36).substr(2, i);\n }\n\n var v = createTransitionManager();\n\n function p(t) {\n _extends(T, t), T.length = s.length, v.notifyListeners(T.location, T.action);\n }\n\n function g(t) {\n isExtraneousPopstateEvent(t) || w(l(t.state));\n }\n\n function P() {\n w(l(getHistoryState()));\n }\n\n var m = !1;\n\n function w(n) {\n if (m) m = !1, p();else {\n v.confirmTransitionTo(n, \"POP\", u, function (t) {\n t ? p({\n action: \"POP\",\n location: n\n }) : function (t) {\n var n = T.location,\n e = H.indexOf(n.key);\n -1 === e && (e = 0);\n var a = H.indexOf(t.key);\n -1 === a && (a = 0);\n var r = e - a;\n r && (m = !0, L(r));\n }(n);\n });\n }\n }\n\n var y = l(getHistoryState()),\n H = [y.key];\n\n function x(t) {\n return f + createPath(t);\n }\n\n function L(t) {\n s.go(t);\n }\n\n var O = 0;\n\n function E(t) {\n 1 === (O += t) && 1 === t ? (window.addEventListener(PopStateEvent, g), n && window.addEventListener(HashChangeEvent, P)) : 0 === O && (window.removeEventListener(PopStateEvent, g), n && window.removeEventListener(HashChangeEvent, P));\n }\n\n var S = !1;\n var T = {\n length: s.length,\n action: \"POP\",\n location: y,\n createHref: x,\n push: function push(t, n) {\n var i = createLocation(t, n, d(), T.location);\n v.confirmTransitionTo(i, \"PUSH\", u, function (t) {\n if (t) {\n var n = x(i),\n e = i.key,\n a = i.state;\n if (c) {\n if (s.pushState({\n key: e,\n state: a\n }, null, n), h) window.location.href = n;else {\n var r = H.indexOf(T.location.key),\n o = H.slice(0, r + 1);\n o.push(i.key), H = o, p({\n action: \"PUSH\",\n location: i\n });\n }\n } else window.location.href = n;\n }\n });\n },\n replace: function replace(t, n) {\n var o = \"REPLACE\",\n i = createLocation(t, n, d(), T.location);\n v.confirmTransitionTo(i, o, u, function (t) {\n if (t) {\n var n = x(i),\n e = i.key,\n a = i.state;\n if (c) {\n if (s.replaceState({\n key: e,\n state: a\n }, null, n), h) window.location.replace(n);else {\n var r = H.indexOf(T.location.key);\n -1 !== r && (H[r] = i.key), p({\n action: o,\n location: i\n });\n }\n } else window.location.replace(n);\n }\n });\n },\n go: L,\n goBack: function goBack() {\n L(-1);\n },\n goForward: function goForward() {\n L(1);\n },\n block: function block(t) {\n void 0 === t && (t = !1);\n var n = v.setPrompt(t);\n return S || (E(1), S = !0), function () {\n return S && (S = !1, E(-1)), n();\n };\n },\n listen: function listen(t) {\n var n = v.appendListener(t);\n return E(1), function () {\n E(-1), n();\n };\n }\n };\n return T;\n}\n\nvar HashChangeEvent$1 = \"hashchange\",\n HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(t) {\n return \"!\" === t.charAt(0) ? t : \"!/\" + stripLeadingSlash(t);\n },\n decodePath: function decodePath(t) {\n return \"!\" === t.charAt(0) ? t.substr(1) : t;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(t) {\n var n = t.indexOf(\"#\");\n return -1 === n ? t : t.slice(0, n);\n}\n\nfunction getHashPath() {\n var t = window.location.href,\n n = t.indexOf(\"#\");\n return -1 === n ? \"\" : t.substring(n + 1);\n}\n\nfunction pushHashPath(t) {\n window.location.hash = t;\n}\n\nfunction replaceHashPath(t) {\n window.location.replace(stripHash(window.location.href) + \"#\" + t);\n}\n\nfunction createHashHistory(t) {\n void 0 === t && (t = {}), canUseDOM || invariant(!1);\n var n = window.history,\n e = (supportsGoWithoutReloadUsingHash(), t),\n a = e.getUserConfirmation,\n i = void 0 === a ? getConfirmation : a,\n r = e.hashType,\n o = void 0 === r ? \"slash\" : r,\n s = t.basename ? stripTrailingSlash(addLeadingSlash(t.basename)) : \"\",\n c = HashPathCoders[o],\n h = c.encodePath,\n u = c.decodePath;\n\n function f() {\n var t = u(getHashPath());\n return s && (t = stripBasename(t, s)), createLocation(t);\n }\n\n var l = createTransitionManager();\n\n function d(t) {\n _extends(E, t), E.length = n.length, l.notifyListeners(E.location, E.action);\n }\n\n var v = !1,\n p = null;\n\n function g() {\n var t = getHashPath(),\n n = h(t);\n if (t !== n) replaceHashPath(n);else {\n var e = f(),\n a = E.location;\n if (!v && function (t, n) {\n return t.pathname === n.pathname && t.search === n.search && t.hash === n.hash;\n }(a, e)) return;\n if (p === createPath(e)) return;\n p = null, function (n) {\n if (v) v = !1, d();else {\n l.confirmTransitionTo(n, \"POP\", i, function (t) {\n t ? d({\n action: \"POP\",\n location: n\n }) : function (t) {\n var n = E.location,\n e = y.lastIndexOf(createPath(n));\n -1 === e && (e = 0);\n var a = y.lastIndexOf(createPath(t));\n -1 === a && (a = 0);\n var r = e - a;\n r && (v = !0, H(r));\n }(n);\n });\n }\n }(e);\n }\n }\n\n var P = getHashPath(),\n m = h(P);\n P !== m && replaceHashPath(m);\n var w = f(),\n y = [createPath(w)];\n\n function H(t) {\n n.go(t);\n }\n\n var x = 0;\n\n function L(t) {\n 1 === (x += t) && 1 === t ? window.addEventListener(HashChangeEvent$1, g) : 0 === x && window.removeEventListener(HashChangeEvent$1, g);\n }\n\n var O = !1;\n var E = {\n length: n.length,\n action: \"POP\",\n location: w,\n createHref: function createHref(t) {\n var n = document.querySelector(\"base\"),\n e = \"\";\n return n && n.getAttribute(\"href\") && (e = stripHash(window.location.href)), e + \"#\" + h(s + createPath(t));\n },\n push: function push(t, n) {\n var o = createLocation(t, void 0, void 0, E.location);\n l.confirmTransitionTo(o, \"PUSH\", i, function (t) {\n if (t) {\n var n = createPath(o),\n e = h(s + n);\n\n if (getHashPath() !== e) {\n p = n, pushHashPath(e);\n var a = y.lastIndexOf(createPath(E.location)),\n r = y.slice(0, a + 1);\n r.push(n), y = r, d({\n action: \"PUSH\",\n location: o\n });\n } else d();\n }\n });\n },\n replace: function replace(t, n) {\n var r = \"REPLACE\",\n o = createLocation(t, void 0, void 0, E.location);\n l.confirmTransitionTo(o, r, i, function (t) {\n if (t) {\n var n = createPath(o),\n e = h(s + n);\n getHashPath() !== e && (p = n, replaceHashPath(e));\n var a = y.indexOf(createPath(E.location));\n -1 !== a && (y[a] = n), d({\n action: r,\n location: o\n });\n }\n });\n },\n go: H,\n goBack: function goBack() {\n H(-1);\n },\n goForward: function goForward() {\n H(1);\n },\n block: function block(t) {\n void 0 === t && (t = !1);\n var n = l.setPrompt(t);\n return O || (L(1), O = !0), function () {\n return O && (O = !1, L(-1)), n();\n };\n },\n listen: function listen(t) {\n var n = l.appendListener(t);\n return L(1), function () {\n L(-1), n();\n };\n }\n };\n return E;\n}\n\nfunction clamp(t, n, e) {\n return Math.min(Math.max(t, n), e);\n}\n\nfunction createMemoryHistory(t) {\n void 0 === t && (t = {});\n var n = t,\n r = n.getUserConfirmation,\n e = n.initialEntries,\n a = void 0 === e ? [\"/\"] : e,\n o = n.initialIndex,\n i = void 0 === o ? 0 : o,\n s = n.keyLength,\n c = void 0 === s ? 6 : s,\n h = createTransitionManager();\n\n function u(t) {\n _extends(g, t), g.length = g.entries.length, h.notifyListeners(g.location, g.action);\n }\n\n function f() {\n return Math.random().toString(36).substr(2, c);\n }\n\n var l = clamp(i, 0, a.length - 1),\n d = a.map(function (t) {\n return createLocation(t, void 0, \"string\" == typeof t ? f() : t.key || f());\n }),\n v = createPath;\n\n function p(t) {\n var n = clamp(g.index + t, 0, g.entries.length - 1),\n e = g.entries[n];\n h.confirmTransitionTo(e, \"POP\", r, function (t) {\n t ? u({\n action: \"POP\",\n location: e,\n index: n\n }) : u();\n });\n }\n\n var g = {\n length: d.length,\n action: \"POP\",\n location: d[l],\n index: l,\n entries: d,\n createHref: v,\n push: function push(t, n) {\n var a = createLocation(t, n, f(), g.location);\n h.confirmTransitionTo(a, \"PUSH\", r, function (t) {\n if (t) {\n var n = g.index + 1,\n e = g.entries.slice(0);\n e.length > n ? e.splice(n, e.length - n, a) : e.push(a), u({\n action: \"PUSH\",\n location: a,\n index: n,\n entries: e\n });\n }\n });\n },\n replace: function replace(t, n) {\n var e = \"REPLACE\",\n a = createLocation(t, n, f(), g.location);\n h.confirmTransitionTo(a, e, r, function (t) {\n t && (g.entries[g.index] = a, u({\n action: e,\n location: a\n }));\n });\n },\n go: p,\n goBack: function goBack() {\n p(-1);\n },\n goForward: function goForward() {\n p(1);\n },\n canGo: function canGo(t) {\n var n = g.index + t;\n return 0 <= n && n < g.entries.length;\n },\n block: function block(t) {\n return void 0 === t && (t = !1), h.setPrompt(t);\n },\n listen: function listen(t) {\n return h.appendListener(t);\n }\n };\n return g;\n}\n\nexports.createBrowserHistory = createBrowserHistory, exports.createHashHistory = createHashHistory, exports.createMemoryHistory = createMemoryHistory, exports.createLocation = createLocation, exports.locationsAreEqual = locationsAreEqual, exports.parsePath = parsePath, exports.createPath = createPath;","'use strict';\n\nrequire('./warnAboutDeprecatedCJSRequire.js')('createBrowserHistory');\n\nmodule.exports = require('./index.js').createBrowserHistory;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/history.min.js');\n} else {\n module.exports = require('./cjs/history.js');\n}","'use strict';\n\nvar printWarning = function printWarning() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function printWarning(format, subs) {\n var index = 0;\n var message = 'Warning: ' + (subs.length > 0 ? format.replace(/%s/g, function () {\n return subs[index++];\n }) : format);\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n\n try {\n // --- Welcome to debugging history ---\n // This error was thrown as a convenience so that you can use the\n // stack trace to find the callsite that triggered this warning.\n throw new Error(message);\n } catch (e) {}\n };\n}\n\nmodule.exports = function (member) {\n printWarning('Please use `require(\"history\").%s` instead of `require(\"history/%s\")`. ' + 'Support for the latter will be removed in the next major release.', [member, member]);\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'; // Exit early if we're not running in a browser.\n\n if (typeof window !== 'object') {\n return;\n } // Exit early if all IntersectionObserver and IntersectionObserverEntry\n // features are natively supported.\n\n\n if ('IntersectionObserver' in window && 'IntersectionObserverEntry' in window && 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\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, 'isIntersecting', {\n get: function get() {\n return this.intersectionRatio > 0;\n }\n });\n }\n\n return;\n }\n /**\n * A local reference to the document.\n */\n\n\n var document = window.document;\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 */\n\n var registry = [];\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 */\n\n function 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; // Calculates the intersection ratio.\n\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height; // Sets intersection ratio.\n\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 * 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 */\n\n\n function IntersectionObserver(callback, opt_options) {\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 } // Binds and throttles `this._checkForIntersections`.\n\n\n this._checkForIntersections = throttle(this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT); // Private properties.\n\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin); // Public properties.\n\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 * The minimum interval within which the document will be checked for\n * intersection changes.\n */\n\n\n IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\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 */\n\n IntersectionObserver.prototype.POLL_INTERVAL = null;\n /**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\n\n IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\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 */\n\n IntersectionObserver.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\n this._observationTargets.push({\n element: target,\n entry: null\n });\n\n this._monitorIntersections();\n\n this._checkForIntersections();\n };\n /**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\n\n\n IntersectionObserver.prototype.unobserve = function (target) {\n this._observationTargets = this._observationTargets.filter(function (item) {\n return item.element != target;\n });\n\n if (!this._observationTargets.length) {\n this._unmonitorIntersections();\n\n this._unregisterInstance();\n }\n };\n /**\n * Stops observing all target elements for intersection changes.\n */\n\n\n IntersectionObserver.prototype.disconnect = function () {\n this._observationTargets = [];\n\n this._unmonitorIntersections();\n\n this._unregisterInstance();\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 */\n\n\n IntersectionObserver.prototype.takeRecords = function () {\n var records = this._queuedEntries.slice();\n\n this._queuedEntries = [];\n return records;\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 */\n\n\n IntersectionObserver.prototype._initThresholds = function (opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\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\n return t !== a[i - 1];\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 */\n\n\n IntersectionObserver.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\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n\n return {\n value: parseFloat(parts[1]),\n unit: parts[2]\n };\n }); // Handles shorthand.\n\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n return margins;\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 */\n\n\n IntersectionObserver.prototype._monitorIntersections = function () {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true; // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n\n if (this.POLL_INTERVAL) {\n this._monitoringInterval = setInterval(this._checkForIntersections, this.POLL_INTERVAL);\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\n this._domObserver.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n }\n };\n /**\n * Stops polling for intersection changes.\n * @private\n */\n\n\n IntersectionObserver.prototype._unmonitorIntersections = function () {\n if (this._monitoringIntersections) {\n this._monitoringIntersections = false;\n clearInterval(this._monitoringInterval);\n this._monitoringInterval = null;\n removeEvent(window, 'resize', this._checkForIntersections, true);\n removeEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this._domObserver) {\n this._domObserver.disconnect();\n\n this._domObserver = null;\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 */\n\n\n IntersectionObserver.prototype._checkForIntersections = function () {\n var rootIsInDom = this._rootIsInDom();\n\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\n var rootContainsTarget = this._rootContainsTarget(target);\n\n var oldEntry = item.entry;\n\n var intersectionRect = rootIsInDom && rootContainsTarget && 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 * 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 */\n\n\n IntersectionObserver.prototype._computeTargetAndRootIntersection = function (target, rootRect) {\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\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 ? window.getComputedStyle(parent) : {}; // If the parent isn't displayed, an intersection can't happen.\n\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 && parent != document.documentElement && parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n } // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n\n\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n if (!intersectionRect) break;\n }\n\n parent = getParentNode(parent);\n }\n\n return intersectionRect;\n };\n /**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\n\n\n IntersectionObserver.prototype._getRootRect = function () {\n var rootRect;\n\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\n return this._expandRectByRootMargin(rootRect);\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 */\n\n\n IntersectionObserver.prototype._expandRectByRootMargin = function (rect) {\n var margins = this._rootMarginValues.map(function (margin, i) {\n return margin.unit == 'px' ? margin.value : margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\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 return newRect;\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 */\n\n\n IntersectionObserver.prototype._hasCrossedThreshold = function (oldEntry, newEntry) {\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 ? oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ? newEntry.intersectionRatio || 0 : -1; // Ignore unchanged ratios\n\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i]; // 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\n if (threshold == oldRatio || threshold == newRatio || threshold < oldRatio !== threshold < newRatio) {\n return true;\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 */\n\n\n IntersectionObserver.prototype._rootIsInDom = function () {\n return !this.root || containsDeep(document, this.root);\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 */\n\n\n IntersectionObserver.prototype._rootContainsTarget = function (target) {\n return containsDeep(this.root || document, target);\n };\n /**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\n\n\n IntersectionObserver.prototype._registerInstance = function () {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n };\n /**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\n\n\n IntersectionObserver.prototype._unregisterInstance = function () {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\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 */\n\n\n function now() {\n return window.performance && performance.now && performance.now();\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 */\n\n\n function 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 * 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 */\n\n\n function addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n } else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\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 */\n\n\n function removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n } else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\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 */\n\n\n function 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 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 * 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 */\n\n\n function getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {// Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect(); // Older IE\n\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\n return rect;\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 */\n\n\n function 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 * 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 */\n\n\n function containsDeep(parent, child) {\n var node = child;\n\n while (node) {\n if (node == parent) return true;\n node = getParentNode(node);\n }\n\n return false;\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 */\n\n\n function 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 } // Exposes the constructors globally.\n\n\n window.IntersectionObserver = IntersectionObserver;\n window.IntersectionObserverEntry = IntersectionObserverEntry;\n})();","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n} // About 1.5x faster than the two-arg version of Array#splice()\n\n\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n} // This implementation is based heavily on node's url.parse\n\n\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n var hasTrailingSlash;\n\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) {\n fromParts.unshift('..');\n }\n if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n var result = fromParts.join('/');\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n return result;\n}\n\nexport default resolvePathname;","!function (e, t) {\n \"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();\n}(this, function () {\n return function (e) {\n var t = {};\n\n function n(r) {\n if (t[r]) return t[r].exports;\n var o = t[r] = {\n i: r,\n l: !1,\n exports: {}\n };\n return e[r].call(o.exports, o, o.exports, n), o.l = !0, o.exports;\n }\n\n return n.m = e, n.c = t, n.d = function (e, t, r) {\n n.o(e, t) || Object.defineProperty(e, t, {\n enumerable: !0,\n get: r\n });\n }, n.r = function (e) {\n \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {\n value: \"Module\"\n }), Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n }, n.t = function (e, t) {\n if (1 & t && (e = n(e)), 8 & t) return e;\n if (4 & t && \"object\" == typeof e && e && e.__esModule) return e;\n var r = Object.create(null);\n if (n.r(r), Object.defineProperty(r, \"default\", {\n enumerable: !0,\n value: e\n }), 2 & t && \"string\" != typeof e) for (var o in e) {\n n.d(r, o, function (t) {\n return e[t];\n }.bind(null, o));\n }\n return r;\n }, n.n = function (e) {\n var t = e && e.__esModule ? function () {\n return e.default;\n } : function () {\n return e;\n };\n return n.d(t, \"a\", t), t;\n }, n.o = function (e, t) {\n return Object.prototype.hasOwnProperty.call(e, t);\n }, n.p = \"dist/\", n(n.s = 0);\n }([function (e, t, n) {\n \"use strict\";\n\n n.r(t);\n n(1);\n\n function r(e, t) {\n var n = Object.keys(e);\n\n if (Object.getOwnPropertySymbols) {\n var r = Object.getOwnPropertySymbols(e);\n t && (r = r.filter(function (t) {\n return Object.getOwnPropertyDescriptor(e, t).enumerable;\n })), n.push.apply(n, r);\n }\n\n return n;\n }\n\n function o(e) {\n for (var t = 1; t < arguments.length; t++) {\n var n = null != arguments[t] ? arguments[t] : {};\n t % 2 ? r(n, !0).forEach(function (t) {\n i(e, t, n[t]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : r(n).forEach(function (t) {\n Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));\n });\n }\n\n return e;\n }\n\n function i(e, t, n) {\n return t in e ? Object.defineProperty(e, t, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[t] = n, e;\n }\n\n var a = \"Sal was not initialised! Probably it is used in SSR.\",\n s = \"Your browser does not support IntersectionObserver!\\nGet a polyfill from here:\\nhttps://github.com/w3c/IntersectionObserver/tree/master/polyfill\",\n l = {\n rootMargin: \"0% 50%\",\n threshold: .5,\n animateClassName: \"sal-animate\",\n disabledClassName: \"sal-disabled\",\n enterEventName: \"sal:in\",\n exitEventName: \"sal:out\",\n selector: \"[data-sal]\",\n once: !0,\n disabled: !1\n },\n u = [],\n c = null,\n f = function f(e, t) {\n var n = new CustomEvent(e, {\n bubbles: !0,\n detail: t\n });\n t.target.dispatchEvent(n);\n },\n d = function d() {\n document.body.classList.add(l.disabledClassName);\n },\n b = function b() {\n return l.disabled || \"function\" == typeof l.disabled && l.disabled();\n },\n p = function p(e, t) {\n e.forEach(function (e) {\n e.intersectionRatio >= l.threshold ? (!function (e) {\n e.target.classList.add(l.animateClassName), f(l.enterEventName, e);\n }(e), l.once && t.unobserve(e.target)) : l.once || function (e) {\n e.target.classList.remove(l.animateClassName), f(l.exitEventName, e);\n }(e);\n });\n },\n m = function m() {\n d(), c.disconnect(), c = null;\n },\n y = function y() {\n document.body.classList.remove(l.disabledClassName), c = new IntersectionObserver(p, {\n rootMargin: l.rootMargin,\n threshold: l.threshold\n }), (u = [].filter.call(document.querySelectorAll(l.selector), function (e) {\n return !function (e) {\n return e.classList.contains(l.animateClassName);\n }(e, l.animateClassName);\n })).forEach(function (e) {\n return c.observe(e);\n });\n };\n\n t.default = function () {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : l;\n if (e !== l && (l = o({}, l, {}, e)), \"undefined\" == typeof window) return console.warn(a), {\n elements: u,\n disable: m,\n enable: y\n };\n if (!window.IntersectionObserver) throw d(), Error(s);\n return b() ? d() : y(), {\n elements: u,\n disable: m,\n enable: y\n };\n };\n }, function (e, t, n) {}]).default;\n});","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\n\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n\n if (isProduction) {\n throw new Error(prefix);\n }\n\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;","var isProduction = process.env.NODE_ENV === 'production';\n\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true; // Otherwise, if either of them == null they are not equal.\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n return Object.keys(Object.assign({}, a, b)).every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;","/* Web Font Loader v1.6.28 - (c) Adobe Systems, Google. License: Apache 2.0 */\n(function () {\n function aa(a, b, c) {\n return a.call.apply(a.bind, arguments);\n }\n\n function ba(a, b, c) {\n if (!a) throw Error();\n\n if (2 < arguments.length) {\n var d = Array.prototype.slice.call(arguments, 2);\n return function () {\n var c = Array.prototype.slice.call(arguments);\n Array.prototype.unshift.apply(c, d);\n return a.apply(b, c);\n };\n }\n\n return function () {\n return a.apply(b, arguments);\n };\n }\n\n function p(a, b, c) {\n p = Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf(\"native code\") ? aa : ba;\n return p.apply(null, arguments);\n }\n\n var q = Date.now || function () {\n return +new Date();\n };\n\n function ca(a, b) {\n this.a = a;\n this.o = b || a;\n this.c = this.o.document;\n }\n\n var da = !!window.FontFace;\n\n function t(a, b, c, d) {\n b = a.c.createElement(b);\n if (c) for (var e in c) {\n c.hasOwnProperty(e) && (\"style\" == e ? b.style.cssText = c[e] : b.setAttribute(e, c[e]));\n }\n d && b.appendChild(a.c.createTextNode(d));\n return b;\n }\n\n function u(a, b, c) {\n a = a.c.getElementsByTagName(b)[0];\n a || (a = document.documentElement);\n a.insertBefore(c, a.lastChild);\n }\n\n function v(a) {\n a.parentNode && a.parentNode.removeChild(a);\n }\n\n function w(a, b, c) {\n b = b || [];\n c = c || [];\n\n for (var d = a.className.split(/\\s+/), e = 0; e < b.length; e += 1) {\n for (var f = !1, g = 0; g < d.length; g += 1) {\n if (b[e] === d[g]) {\n f = !0;\n break;\n }\n }\n\n f || d.push(b[e]);\n }\n\n b = [];\n\n for (e = 0; e < d.length; e += 1) {\n f = !1;\n\n for (g = 0; g < c.length; g += 1) {\n if (d[e] === c[g]) {\n f = !0;\n break;\n }\n }\n\n f || b.push(d[e]);\n }\n\n a.className = b.join(\" \").replace(/\\s+/g, \" \").replace(/^\\s+|\\s+$/, \"\");\n }\n\n function y(a, b) {\n for (var c = a.className.split(/\\s+/), d = 0, e = c.length; d < e; d++) {\n if (c[d] == b) return !0;\n }\n\n return !1;\n }\n\n function ea(a) {\n return a.o.location.hostname || a.a.location.hostname;\n }\n\n function z(a, b, c) {\n function d() {\n m && e && f && (m(g), m = null);\n }\n\n b = t(a, \"link\", {\n rel: \"stylesheet\",\n href: b,\n media: \"all\"\n });\n var e = !1,\n f = !0,\n g = null,\n m = c || null;\n da ? (b.onload = function () {\n e = !0;\n d();\n }, b.onerror = function () {\n e = !0;\n g = Error(\"Stylesheet failed to load\");\n d();\n }) : setTimeout(function () {\n e = !0;\n d();\n }, 0);\n u(a, \"head\", b);\n }\n\n function A(a, b, c, d) {\n var e = a.c.getElementsByTagName(\"head\")[0];\n\n if (e) {\n var f = t(a, \"script\", {\n src: b\n }),\n g = !1;\n\n f.onload = f.onreadystatechange = function () {\n g || this.readyState && \"loaded\" != this.readyState && \"complete\" != this.readyState || (g = !0, c && c(null), f.onload = f.onreadystatechange = null, \"HEAD\" == f.parentNode.tagName && e.removeChild(f));\n };\n\n e.appendChild(f);\n setTimeout(function () {\n g || (g = !0, c && c(Error(\"Script load timeout\")));\n }, d || 5E3);\n return f;\n }\n\n return null;\n }\n\n ;\n\n function B() {\n this.a = 0;\n this.c = null;\n }\n\n function C(a) {\n a.a++;\n return function () {\n a.a--;\n D(a);\n };\n }\n\n function E(a, b) {\n a.c = b;\n D(a);\n }\n\n function D(a) {\n 0 == a.a && a.c && (a.c(), a.c = null);\n }\n\n ;\n\n function F(a) {\n this.a = a || \"-\";\n }\n\n F.prototype.c = function (a) {\n for (var b = [], c = 0; c < arguments.length; c++) {\n b.push(arguments[c].replace(/[\\W_]+/g, \"\").toLowerCase());\n }\n\n return b.join(this.a);\n };\n\n function G(a, b) {\n this.c = a;\n this.f = 4;\n this.a = \"n\";\n var c = (b || \"n4\").match(/^([nio])([1-9])$/i);\n c && (this.a = c[1], this.f = parseInt(c[2], 10));\n }\n\n function fa(a) {\n return H(a) + \" \" + (a.f + \"00\") + \" 300px \" + I(a.c);\n }\n\n function I(a) {\n var b = [];\n a = a.split(/,\\s*/);\n\n for (var c = 0; c < a.length; c++) {\n var d = a[c].replace(/['\"]/g, \"\");\n -1 != d.indexOf(\" \") || /^\\d/.test(d) ? b.push(\"'\" + d + \"'\") : b.push(d);\n }\n\n return b.join(\",\");\n }\n\n function J(a) {\n return a.a + a.f;\n }\n\n function H(a) {\n var b = \"normal\";\n \"o\" === a.a ? b = \"oblique\" : \"i\" === a.a && (b = \"italic\");\n return b;\n }\n\n function ga(a) {\n var b = 4,\n c = \"n\",\n d = null;\n a && ((d = a.match(/(normal|oblique|italic)/i)) && d[1] && (c = d[1].substr(0, 1).toLowerCase()), (d = a.match(/([1-9]00|normal|bold)/i)) && d[1] && (/bold/i.test(d[1]) ? b = 7 : /[1-9]00/.test(d[1]) && (b = parseInt(d[1].substr(0, 1), 10))));\n return c + b;\n }\n\n ;\n\n function ha(a, b) {\n this.c = a;\n this.f = a.o.document.documentElement;\n this.h = b;\n this.a = new F(\"-\");\n this.j = !1 !== b.events;\n this.g = !1 !== b.classes;\n }\n\n function ia(a) {\n a.g && w(a.f, [a.a.c(\"wf\", \"loading\")]);\n K(a, \"loading\");\n }\n\n function L(a) {\n if (a.g) {\n var b = y(a.f, a.a.c(\"wf\", \"active\")),\n c = [],\n d = [a.a.c(\"wf\", \"loading\")];\n b || c.push(a.a.c(\"wf\", \"inactive\"));\n w(a.f, c, d);\n }\n\n K(a, \"inactive\");\n }\n\n function K(a, b, c) {\n if (a.j && a.h[b]) if (c) a.h[b](c.c, J(c));else a.h[b]();\n }\n\n ;\n\n function ja() {\n this.c = {};\n }\n\n function ka(a, b, c) {\n var d = [],\n e;\n\n for (e in b) {\n if (b.hasOwnProperty(e)) {\n var f = a.c[e];\n f && d.push(f(b[e], c));\n }\n }\n\n return d;\n }\n\n ;\n\n function M(a, b) {\n this.c = a;\n this.f = b;\n this.a = t(this.c, \"span\", {\n \"aria-hidden\": \"true\"\n }, this.f);\n }\n\n function N(a) {\n u(a.c, \"body\", a.a);\n }\n\n function O(a) {\n return \"display:block;position:absolute;top:-9999px;left:-9999px;font-size:300px;width:auto;height:auto;line-height:normal;margin:0;padding:0;font-variant:normal;white-space:nowrap;font-family:\" + I(a.c) + \";\" + (\"font-style:\" + H(a) + \";font-weight:\" + (a.f + \"00\") + \";\");\n }\n\n ;\n\n function P(a, b, c, d, e, f) {\n this.g = a;\n this.j = b;\n this.a = d;\n this.c = c;\n this.f = e || 3E3;\n this.h = f || void 0;\n }\n\n P.prototype.start = function () {\n var a = this.c.o.document,\n b = this,\n c = q(),\n d = new Promise(function (d, e) {\n function f() {\n q() - c >= b.f ? e() : a.fonts.load(fa(b.a), b.h).then(function (a) {\n 1 <= a.length ? d() : setTimeout(f, 25);\n }, function () {\n e();\n });\n }\n\n f();\n }),\n e = null,\n f = new Promise(function (a, d) {\n e = setTimeout(d, b.f);\n });\n Promise.race([f, d]).then(function () {\n e && (clearTimeout(e), e = null);\n b.g(b.a);\n }, function () {\n b.j(b.a);\n });\n };\n\n function Q(a, b, c, d, e, f, g) {\n this.v = a;\n this.B = b;\n this.c = c;\n this.a = d;\n this.s = g || \"BESbswy\";\n this.f = {};\n this.w = e || 3E3;\n this.u = f || null;\n this.m = this.j = this.h = this.g = null;\n this.g = new M(this.c, this.s);\n this.h = new M(this.c, this.s);\n this.j = new M(this.c, this.s);\n this.m = new M(this.c, this.s);\n a = new G(this.a.c + \",serif\", J(this.a));\n a = O(a);\n this.g.a.style.cssText = a;\n a = new G(this.a.c + \",sans-serif\", J(this.a));\n a = O(a);\n this.h.a.style.cssText = a;\n a = new G(\"serif\", J(this.a));\n a = O(a);\n this.j.a.style.cssText = a;\n a = new G(\"sans-serif\", J(this.a));\n a = O(a);\n this.m.a.style.cssText = a;\n N(this.g);\n N(this.h);\n N(this.j);\n N(this.m);\n }\n\n var R = {\n D: \"serif\",\n C: \"sans-serif\"\n },\n S = null;\n\n function T() {\n if (null === S) {\n var a = /AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent);\n S = !!a && (536 > parseInt(a[1], 10) || 536 === parseInt(a[1], 10) && 11 >= parseInt(a[2], 10));\n }\n\n return S;\n }\n\n Q.prototype.start = function () {\n this.f.serif = this.j.a.offsetWidth;\n this.f[\"sans-serif\"] = this.m.a.offsetWidth;\n this.A = q();\n U(this);\n };\n\n function la(a, b, c) {\n for (var d in R) {\n if (R.hasOwnProperty(d) && b === a.f[R[d]] && c === a.f[R[d]]) return !0;\n }\n\n return !1;\n }\n\n function U(a) {\n var b = a.g.a.offsetWidth,\n c = a.h.a.offsetWidth,\n d;\n (d = b === a.f.serif && c === a.f[\"sans-serif\"]) || (d = T() && la(a, b, c));\n d ? q() - a.A >= a.w ? T() && la(a, b, c) && (null === a.u || a.u.hasOwnProperty(a.a.c)) ? V(a, a.v) : V(a, a.B) : ma(a) : V(a, a.v);\n }\n\n function ma(a) {\n setTimeout(p(function () {\n U(this);\n }, a), 50);\n }\n\n function V(a, b) {\n setTimeout(p(function () {\n v(this.g.a);\n v(this.h.a);\n v(this.j.a);\n v(this.m.a);\n b(this.a);\n }, a), 0);\n }\n\n ;\n\n function W(a, b, c) {\n this.c = a;\n this.a = b;\n this.f = 0;\n this.m = this.j = !1;\n this.s = c;\n }\n\n var X = null;\n\n W.prototype.g = function (a) {\n var b = this.a;\n b.g && w(b.f, [b.a.c(\"wf\", a.c, J(a).toString(), \"active\")], [b.a.c(\"wf\", a.c, J(a).toString(), \"loading\"), b.a.c(\"wf\", a.c, J(a).toString(), \"inactive\")]);\n K(b, \"fontactive\", a);\n this.m = !0;\n na(this);\n };\n\n W.prototype.h = function (a) {\n var b = this.a;\n\n if (b.g) {\n var c = y(b.f, b.a.c(\"wf\", a.c, J(a).toString(), \"active\")),\n d = [],\n e = [b.a.c(\"wf\", a.c, J(a).toString(), \"loading\")];\n c || d.push(b.a.c(\"wf\", a.c, J(a).toString(), \"inactive\"));\n w(b.f, d, e);\n }\n\n K(b, \"fontinactive\", a);\n na(this);\n };\n\n function na(a) {\n 0 == --a.f && a.j && (a.m ? (a = a.a, a.g && w(a.f, [a.a.c(\"wf\", \"active\")], [a.a.c(\"wf\", \"loading\"), a.a.c(\"wf\", \"inactive\")]), K(a, \"active\")) : L(a.a));\n }\n\n ;\n\n function oa(a) {\n this.j = a;\n this.a = new ja();\n this.h = 0;\n this.f = this.g = !0;\n }\n\n oa.prototype.load = function (a) {\n this.c = new ca(this.j, a.context || this.j);\n this.g = !1 !== a.events;\n this.f = !1 !== a.classes;\n pa(this, new ha(this.c, a), a);\n };\n\n function qa(a, b, c, d, e) {\n var f = 0 == --a.h;\n (a.f || a.g) && setTimeout(function () {\n var a = e || null,\n m = d || null || {};\n if (0 === c.length && f) L(b.a);else {\n b.f += c.length;\n f && (b.j = f);\n var h,\n l = [];\n\n for (h = 0; h < c.length; h++) {\n var k = c[h],\n n = m[k.c],\n r = b.a,\n x = k;\n r.g && w(r.f, [r.a.c(\"wf\", x.c, J(x).toString(), \"loading\")]);\n K(r, \"fontloading\", x);\n r = null;\n if (null === X) if (window.FontFace) {\n var x = /Gecko.*Firefox\\/(\\d+)/.exec(window.navigator.userAgent),\n xa = /OS X.*Version\\/10\\..*Safari/.exec(window.navigator.userAgent) && /Apple/.exec(window.navigator.vendor);\n X = x ? 42 < parseInt(x[1], 10) : xa ? !1 : !0;\n } else X = !1;\n X ? r = new P(p(b.g, b), p(b.h, b), b.c, k, b.s, n) : r = new Q(p(b.g, b), p(b.h, b), b.c, k, b.s, a, n);\n l.push(r);\n }\n\n for (h = 0; h < l.length; h++) {\n l[h].start();\n }\n }\n }, 0);\n }\n\n function pa(a, b, c) {\n var d = [],\n e = c.timeout;\n ia(b);\n var d = ka(a.a, c, a.c),\n f = new W(a.c, b, e);\n a.h = d.length;\n b = 0;\n\n for (c = d.length; b < c; b++) {\n d[b].load(function (b, d, c) {\n qa(a, f, b, d, c);\n });\n }\n }\n\n ;\n\n function ra(a, b) {\n this.c = a;\n this.a = b;\n }\n\n ra.prototype.load = function (a) {\n function b() {\n if (f[\"__mti_fntLst\" + d]) {\n var c = f[\"__mti_fntLst\" + d](),\n e = [],\n h;\n if (c) for (var l = 0; l < c.length; l++) {\n var k = c[l].fontfamily;\n void 0 != c[l].fontStyle && void 0 != c[l].fontWeight ? (h = c[l].fontStyle + c[l].fontWeight, e.push(new G(k, h))) : e.push(new G(k));\n }\n a(e);\n } else setTimeout(function () {\n b();\n }, 50);\n }\n\n var c = this,\n d = c.a.projectId,\n e = c.a.version;\n\n if (d) {\n var f = c.c.o;\n A(this.c, (c.a.api || \"https://fast.fonts.net/jsapi\") + \"/\" + d + \".js\" + (e ? \"?v=\" + e : \"\"), function (e) {\n e ? a([]) : (f[\"__MonotypeConfiguration__\" + d] = function () {\n return c.a;\n }, b());\n }).id = \"__MonotypeAPIScript__\" + d;\n } else a([]);\n };\n\n function sa(a, b) {\n this.c = a;\n this.a = b;\n }\n\n sa.prototype.load = function (a) {\n var b,\n c,\n d = this.a.urls || [],\n e = this.a.families || [],\n f = this.a.testStrings || {},\n g = new B();\n b = 0;\n\n for (c = d.length; b < c; b++) {\n z(this.c, d[b], C(g));\n }\n\n var m = [];\n b = 0;\n\n for (c = e.length; b < c; b++) {\n if (d = e[b].split(\":\"), d[1]) for (var h = d[1].split(\",\"), l = 0; l < h.length; l += 1) {\n m.push(new G(d[0], h[l]));\n } else m.push(new G(d[0]));\n }\n\n E(g, function () {\n a(m, f);\n });\n };\n\n function ta(a, b) {\n a ? this.c = a : this.c = ua;\n this.a = [];\n this.f = [];\n this.g = b || \"\";\n }\n\n var ua = \"https://fonts.googleapis.com/css\";\n\n function va(a, b) {\n for (var c = b.length, d = 0; d < c; d++) {\n var e = b[d].split(\":\");\n 3 == e.length && a.f.push(e.pop());\n var f = \"\";\n 2 == e.length && \"\" != e[1] && (f = \":\");\n a.a.push(e.join(f));\n }\n }\n\n function wa(a) {\n if (0 == a.a.length) throw Error(\"No fonts to load!\");\n if (-1 != a.c.indexOf(\"kit=\")) return a.c;\n\n for (var b = a.a.length, c = [], d = 0; d < b; d++) {\n c.push(a.a[d].replace(/ /g, \"+\"));\n }\n\n b = a.c + \"?family=\" + c.join(\"%7C\");\n 0 < a.f.length && (b += \"&subset=\" + a.f.join(\",\"));\n 0 < a.g.length && (b += \"&text=\" + encodeURIComponent(a.g));\n return b;\n }\n\n ;\n\n function ya(a) {\n this.f = a;\n this.a = [];\n this.c = {};\n }\n\n var za = {\n latin: \"BESbswy\",\n \"latin-ext\": \"\\xE7\\xF6\\xFC\\u011F\\u015F\",\n cyrillic: \"\\u0439\\u044F\\u0416\",\n greek: \"\\u03B1\\u03B2\\u03A3\",\n khmer: \"\\u1780\\u1781\\u1782\",\n Hanuman: \"\\u1780\\u1781\\u1782\"\n },\n Aa = {\n thin: \"1\",\n extralight: \"2\",\n \"extra-light\": \"2\",\n ultralight: \"2\",\n \"ultra-light\": \"2\",\n light: \"3\",\n regular: \"4\",\n book: \"4\",\n medium: \"5\",\n \"semi-bold\": \"6\",\n semibold: \"6\",\n \"demi-bold\": \"6\",\n demibold: \"6\",\n bold: \"7\",\n \"extra-bold\": \"8\",\n extrabold: \"8\",\n \"ultra-bold\": \"8\",\n ultrabold: \"8\",\n black: \"9\",\n heavy: \"9\",\n l: \"3\",\n r: \"4\",\n b: \"7\"\n },\n Ba = {\n i: \"i\",\n italic: \"i\",\n n: \"n\",\n normal: \"n\"\n },\n Ca = /^(thin|(?:(?:extra|ultra)-?)?light|regular|book|medium|(?:(?:semi|demi|extra|ultra)-?)?bold|black|heavy|l|r|b|[1-9]00)?(n|i|normal|italic)?$/;\n\n function Da(a) {\n for (var b = a.f.length, c = 0; c < b; c++) {\n var d = a.f[c].split(\":\"),\n e = d[0].replace(/\\+/g, \" \"),\n f = [\"n4\"];\n\n if (2 <= d.length) {\n var g;\n var m = d[1];\n g = [];\n if (m) for (var m = m.split(\",\"), h = m.length, l = 0; l < h; l++) {\n var k;\n k = m[l];\n\n if (k.match(/^[\\w-]+$/)) {\n var n = Ca.exec(k.toLowerCase());\n if (null == n) k = \"\";else {\n k = n[2];\n k = null == k || \"\" == k ? \"n\" : Ba[k];\n n = n[1];\n if (null == n || \"\" == n) n = \"4\";else var r = Aa[n],\n n = r ? r : isNaN(n) ? \"4\" : n.substr(0, 1);\n k = [k, n].join(\"\");\n }\n } else k = \"\";\n\n k && g.push(k);\n }\n 0 < g.length && (f = g);\n 3 == d.length && (d = d[2], g = [], d = d ? d.split(\",\") : g, 0 < d.length && (d = za[d[0]]) && (a.c[e] = d));\n }\n\n a.c[e] || (d = za[e]) && (a.c[e] = d);\n\n for (d = 0; d < f.length; d += 1) {\n a.a.push(new G(e, f[d]));\n }\n }\n }\n\n ;\n\n function Ea(a, b) {\n this.c = a;\n this.a = b;\n }\n\n var Fa = {\n Arimo: !0,\n Cousine: !0,\n Tinos: !0\n };\n\n Ea.prototype.load = function (a) {\n var b = new B(),\n c = this.c,\n d = new ta(this.a.api, this.a.text),\n e = this.a.families;\n va(d, e);\n var f = new ya(e);\n Da(f);\n z(c, wa(d), C(b));\n E(b, function () {\n a(f.a, f.c, Fa);\n });\n };\n\n function Ga(a, b) {\n this.c = a;\n this.a = b;\n }\n\n Ga.prototype.load = function (a) {\n var b = this.a.id,\n c = this.c.o;\n b ? A(this.c, (this.a.api || \"https://use.typekit.net\") + \"/\" + b + \".js\", function (b) {\n if (b) a([]);else if (c.Typekit && c.Typekit.config && c.Typekit.config.fn) {\n b = c.Typekit.config.fn;\n\n for (var e = [], f = 0; f < b.length; f += 2) {\n for (var g = b[f], m = b[f + 1], h = 0; h < m.length; h++) {\n e.push(new G(g, m[h]));\n }\n }\n\n try {\n c.Typekit.load({\n events: !1,\n classes: !1,\n async: !0\n });\n } catch (l) {}\n\n a(e);\n }\n }, 2E3) : a([]);\n };\n\n function Ha(a, b) {\n this.c = a;\n this.f = b;\n this.a = [];\n }\n\n Ha.prototype.load = function (a) {\n var b = this.f.id,\n c = this.c.o,\n d = this;\n b ? (c.__webfontfontdeckmodule__ || (c.__webfontfontdeckmodule__ = {}), c.__webfontfontdeckmodule__[b] = function (b, c) {\n for (var g = 0, m = c.fonts.length; g < m; ++g) {\n var h = c.fonts[g];\n d.a.push(new G(h.name, ga(\"font-weight:\" + h.weight + \";font-style:\" + h.style)));\n }\n\n a(d.a);\n }, A(this.c, (this.f.api || \"https://f.fontdeck.com/s/css/js/\") + ea(this.c) + \"/\" + b + \".js\", function (b) {\n b && a([]);\n })) : a([]);\n };\n\n var Y = new oa(window);\n\n Y.a.c.custom = function (a, b) {\n return new sa(b, a);\n };\n\n Y.a.c.fontdeck = function (a, b) {\n return new Ha(b, a);\n };\n\n Y.a.c.monotype = function (a, b) {\n return new ra(b, a);\n };\n\n Y.a.c.typekit = function (a, b) {\n return new Ga(b, a);\n };\n\n Y.a.c.google = function (a, b) {\n return new Ea(b, a);\n };\n\n var Z = {\n load: p(Y.load, Y)\n };\n \"function\" === typeof define && define.amd ? define(function () {\n return Z;\n }) : \"undefined\" !== typeof module && module.exports ? module.exports = Z : (window.WebFont = Z, window.WebFontConfig && Y.load(window.WebFontConfig));\n})();","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = true;\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.withPrefix = withPrefix;\nexports.withAssetPrefix = withAssetPrefix;\nexports.navigate = exports.default = void 0;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\n\nvar _utils = require(\"@gatsbyjs/reach-router/lib/utils\");\n\nvar _parsePath = require(\"./parse-path\");\n\nexports.parsePath = _parsePath.parsePath;\n\nvar isAbsolutePath = function isAbsolutePath(path) {\n return path === null || path === void 0 ? void 0 : path.startsWith(\"/\");\n};\n\nfunction withPrefix(path, prefix) {\n var _ref, _prefix;\n\n if (prefix === void 0) {\n prefix = getGlobalBasePrefix();\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n if (path.startsWith(\"./\") || path.startsWith(\"../\")) {\n return path;\n }\n\n var base = (_ref = (_prefix = prefix) !== null && _prefix !== void 0 ? _prefix : getGlobalPathPrefix()) !== null && _ref !== void 0 ? _ref : \"/\";\n return \"\" + (base !== null && base !== void 0 && base.endsWith(\"/\") ? base.slice(0, -1) : base) + (path.startsWith(\"/\") ? path : \"/\" + path);\n} // These global values are wrapped in typeof clauses to ensure the values exist.\n// This is especially problematic in unit testing of this component.\n\n\nvar getGlobalPathPrefix = function getGlobalPathPrefix() {\n return process.env.NODE_ENV !== \"production\" ? typeof __PATH_PREFIX__ !== \"undefined\" ? __PATH_PREFIX__ : undefined : __PATH_PREFIX__;\n};\n\nvar getGlobalBasePrefix = function getGlobalBasePrefix() {\n return process.env.NODE_ENV !== \"production\" ? typeof __BASE_PATH__ !== \"undefined\" ? __BASE_PATH__ : undefined : __BASE_PATH__;\n};\n\nvar isLocalLink = function isLocalLink(path) {\n return path && !path.startsWith(\"http://\") && !path.startsWith(\"https://\") && !path.startsWith(\"//\");\n};\n\nfunction withAssetPrefix(path) {\n return withPrefix(path, getGlobalPathPrefix());\n}\n\nfunction absolutify(path, current) {\n // If it's already absolute, return as-is\n if (isAbsolutePath(path)) {\n return path;\n }\n\n return (0, _utils.resolve)(path, current);\n}\n\nvar rewriteLinkPath = function rewriteLinkPath(path, relativeTo) {\n if (typeof path === \"number\") {\n return path;\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n return isAbsolutePath(path) ? withPrefix(path) : absolutify(path, relativeTo);\n};\n\nvar NavLinkPropTypes = {\n activeClassName: _propTypes.default.string,\n activeStyle: _propTypes.default.object,\n partiallyActive: _propTypes.default.bool\n}; // Set up IntersectionObserver\n\nvar createIntersectionObserver = function createIntersectionObserver(el, cb) {\n var io = new window.IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n if (el === entry.target) {\n // Check if element is within viewport, remove listener, destroy observer, and run link callback.\n // MSEdge doesn't currently support isIntersecting, so also test for an intersectionRatio > 0\n if (entry.isIntersecting || entry.intersectionRatio > 0) {\n io.unobserve(el);\n io.disconnect();\n cb();\n }\n }\n });\n }); // Add element to the observer\n\n io.observe(el);\n return {\n instance: io,\n el: el\n };\n};\n\nfunction GatsbyLinkLocationWrapper(props) {\n return /*#__PURE__*/_react.default.createElement(_reachRouter.Location, null, function (_ref2) {\n var location = _ref2.location;\n return /*#__PURE__*/_react.default.createElement(GatsbyLink, (0, _extends2.default)({}, props, {\n _location: location\n }));\n });\n}\n\nvar GatsbyLink = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(GatsbyLink, _React$Component);\n\n function GatsbyLink(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this; // Default to no support for IntersectionObserver\n\n _this.defaultGetProps = function (_ref3) {\n var isPartiallyCurrent = _ref3.isPartiallyCurrent,\n isCurrent = _ref3.isCurrent;\n\n if (_this.props.partiallyActive ? isPartiallyCurrent : isCurrent) {\n return {\n className: [_this.props.className, _this.props.activeClassName].filter(Boolean).join(\" \"),\n style: (0, _extends2.default)({}, _this.props.style, _this.props.activeStyle)\n };\n }\n\n return null;\n };\n\n var IOSupported = false;\n\n if (typeof window !== \"undefined\" && window.IntersectionObserver) {\n IOSupported = true;\n }\n\n _this.state = {\n IOSupported: IOSupported\n };\n _this.handleRef = _this.handleRef.bind((0, _assertThisInitialized2.default)(_this));\n return _this;\n }\n\n var _proto = GatsbyLink.prototype;\n\n _proto._prefetch = function _prefetch() {\n var currentPath = window.location.pathname; // reach router should have the correct state\n\n if (this.props._location && this.props._location.pathname) {\n currentPath = this.props._location.pathname;\n }\n\n var rewrittenPath = rewriteLinkPath(this.props.to, currentPath);\n var newPathName = (0, _parsePath.parsePath)(rewrittenPath).pathname; // Prefech is used to speed up next navigations. When you use it on the current navigation,\n // there could be a race-condition where Chrome uses the stale data instead of waiting for the network to complete\n\n if (currentPath !== newPathName) {\n ___loader.enqueue(newPathName);\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // Preserve non IO functionality if no support\n if (this.props.to !== prevProps.to && !this.state.IOSupported) {\n this._prefetch();\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n // Preserve non IO functionality if no support\n if (!this.state.IOSupported) {\n this._prefetch();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (!this.io) {\n return;\n }\n\n var _this$io = this.io,\n instance = _this$io.instance,\n el = _this$io.el;\n instance.unobserve(el);\n instance.disconnect();\n };\n\n _proto.handleRef = function handleRef(ref) {\n var _this2 = this;\n\n if (this.props.innerRef && this.props.innerRef.hasOwnProperty(\"current\")) {\n this.props.innerRef.current = ref;\n } else if (this.props.innerRef) {\n this.props.innerRef(ref);\n }\n\n if (this.state.IOSupported && ref) {\n // If IO supported and element reference found, setup Observer functionality\n this.io = createIntersectionObserver(ref, function () {\n _this2._prefetch();\n });\n }\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props = this.props,\n to = _this$props.to,\n _this$props$getProps = _this$props.getProps,\n getProps = _this$props$getProps === void 0 ? this.defaultGetProps : _this$props$getProps,\n _onClick = _this$props.onClick,\n _onMouseEnter = _this$props.onMouseEnter,\n $activeClassName = _this$props.activeClassName,\n $activeStyle = _this$props.activeStyle,\n $innerRef = _this$props.innerRef,\n partiallyActive = _this$props.partiallyActive,\n state = _this$props.state,\n replace = _this$props.replace,\n _location = _this$props._location,\n rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, [\"to\", \"getProps\", \"onClick\", \"onMouseEnter\", \"activeClassName\", \"activeStyle\", \"innerRef\", \"partiallyActive\", \"state\", \"replace\", \"_location\"]);\n\n if (process.env.NODE_ENV !== \"production\" && !isLocalLink(to)) {\n console.warn(\"External link \" + to + \" was detected in a Link component. Use the Link component only for internal links. See: https://gatsby.dev/internal-links\");\n }\n\n var prefixedTo = rewriteLinkPath(to, _location.pathname);\n\n if (!isLocalLink(prefixedTo)) {\n return /*#__PURE__*/_react.default.createElement(\"a\", (0, _extends2.default)({\n href: prefixedTo\n }, rest));\n }\n\n return /*#__PURE__*/_react.default.createElement(_reachRouter.Link, (0, _extends2.default)({\n to: prefixedTo,\n state: state,\n getProps: getProps,\n innerRef: this.handleRef,\n onMouseEnter: function onMouseEnter(e) {\n if (_onMouseEnter) {\n _onMouseEnter(e);\n }\n\n ___loader.hovering((0, _parsePath.parsePath)(prefixedTo).pathname);\n },\n onClick: function onClick(e) {\n if (_onClick) {\n _onClick(e);\n }\n\n if (e.button === 0 && // ignore right clicks\n !_this3.props.target && // let browser handle \"target=_blank\"\n !e.defaultPrevented && // onClick prevented default\n !e.metaKey && // ignore clicks with modifier keys...\n !e.altKey && !e.ctrlKey && !e.shiftKey) {\n e.preventDefault();\n var shouldReplace = replace;\n\n var isCurrent = encodeURI(prefixedTo) === _location.pathname;\n\n if (typeof replace !== \"boolean\" && isCurrent) {\n shouldReplace = true;\n } // Make sure the necessary scripts and data are\n // loaded before continuing.\n\n\n window.___navigate(prefixedTo, {\n state: state,\n replace: shouldReplace\n });\n }\n\n return true;\n }\n }, rest));\n };\n\n return GatsbyLink;\n}(_react.default.Component);\n\nGatsbyLink.propTypes = (0, _extends2.default)({}, NavLinkPropTypes, {\n onClick: _propTypes.default.func,\n to: _propTypes.default.string.isRequired,\n replace: _propTypes.default.bool,\n state: _propTypes.default.object\n});\n\nvar _default = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {\n return /*#__PURE__*/_react.default.createElement(GatsbyLinkLocationWrapper, (0, _extends2.default)({\n innerRef: ref\n }, props));\n});\n\nexports.default = _default;\n\nvar navigate = function navigate(to, options) {\n window.___navigate(rewriteLinkPath(to, window.location.pathname), options);\n};\n\nexports.navigate = navigate;","\"use strict\";\n\nexports.__esModule = true;\nexports.parsePath = parsePath;\n\nfunction parsePath(path) {\n var pathname = path || \"/\";\n var search = \"\";\n var hash = \"\";\n var hashIndex = pathname.indexOf(\"#\");\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf(\"?\");\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === \"?\" ? \"\" : search,\n hash: hash === \"#\" ? \"\" : hash\n };\n}","\"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}","// prefer default export if available\nconst preferDefault = m => (m && m.default) || m\n\nexports.components = {\n \"component---src-pages-404-js\": () => import(\"./../../../src/pages/404.js\" /* webpackChunkName: \"component---src-pages-404-js\" */),\n \"component---src-pages-about-js\": () => import(\"./../../../src/pages/about.js\" /* webpackChunkName: \"component---src-pages-about-js\" */),\n \"component---src-pages-accountancy-js\": () => import(\"./../../../src/pages/accountancy.js\" /* webpackChunkName: \"component---src-pages-accountancy-js\" */),\n \"component---src-pages-automotive-js\": () => import(\"./../../../src/pages/automotive.js\" /* webpackChunkName: \"component---src-pages-automotive-js\" */),\n \"component---src-pages-construction-js\": () => import(\"./../../../src/pages/construction.js\" /* webpackChunkName: \"component---src-pages-construction-js\" */),\n \"component---src-pages-index-js\": () => import(\"./../../../src/pages/index.js\" /* webpackChunkName: \"component---src-pages-index-js\" */),\n \"component---src-pages-legal-acceptable-use-js\": () => import(\"./../../../src/pages/legal/acceptable-use.js\" /* webpackChunkName: \"component---src-pages-legal-acceptable-use-js\" */),\n \"component---src-pages-legal-cookies-js\": () => import(\"./../../../src/pages/legal/cookies.js\" /* webpackChunkName: \"component---src-pages-legal-cookies-js\" */),\n \"component---src-pages-legal-index-js\": () => import(\"./../../../src/pages/legal/index.js\" /* webpackChunkName: \"component---src-pages-legal-index-js\" */),\n \"component---src-pages-legal-privacy-js\": () => import(\"./../../../src/pages/legal/privacy.js\" /* webpackChunkName: \"component---src-pages-legal-privacy-js\" */),\n \"component---src-pages-legal-refund-policy-js\": () => import(\"./../../../src/pages/legal/refund-policy.js\" /* webpackChunkName: \"component---src-pages-legal-refund-policy-js\" */),\n \"component---src-pages-legal-terms-conditions-js\": () => import(\"./../../../src/pages/legal/terms-conditions.js\" /* webpackChunkName: \"component---src-pages-legal-terms-conditions-js\" */),\n \"component---src-pages-legal-terms-of-use-js\": () => import(\"./../../../src/pages/legal/terms-of-use.js\" /* webpackChunkName: \"component---src-pages-legal-terms-of-use-js\" */),\n \"component---src-pages-manufacturing-js\": () => import(\"./../../../src/pages/manufacturing.js\" /* webpackChunkName: \"component---src-pages-manufacturing-js\" */),\n \"component---src-pages-pricing-js\": () => import(\"./../../../src/pages/pricing.js\" /* webpackChunkName: \"component---src-pages-pricing-js\" */)\n}\n\n","module.exports = [{\n plugin: require('../node_modules/gatsby-plugin-image/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-scroll-reveal/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-page-transitions/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-google-gtag/gatsby-browser.js'),\n options: {\"plugins\":[],\"trackingIds\":[\"G-0SP8KEEFYW\"],\"gtagConfig\":{\"optimize_id\":\"OPT_CONTAINER_ID\",\"anonymize_ip\":true,\"cookie_expires\":0},\"pluginConfig\":{\"head\":false,\"respectDNT\":true,\"exclude\":[\"/preview/**\",\"/do-not-track/me/too/\"]}},\n },{\n plugin: require('../node_modules/gatsby-plugin-web-font-loader/gatsby-browser.js'),\n options: {\"plugins\":[],\"typekit\":{\"id\":\"cig2lhl\"}},\n },{\n plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n options: {\"plugins\":[],\"name\":\"T Cards Online\",\"short_name\":\"TCards\",\"start_url\":\"/\",\"background_color\":\"#fff\",\"theme_color\":\"#008fcf\",\"display\":\"standalone\",\"icon\":\"src/images/icons/logo.png\",\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"crossOrigin\":\"anonymous\",\"include_favicon\":true,\"cacheDigest\":\"0e005ac95bb085e7e408d9ed98d8602e\"},\n }]\n","const plugins = require(`./api-runner-browser-plugins`)\nconst {\n getResourceURLsForPathname,\n loadPage,\n 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","// \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","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","export default path => {\n if (path === undefined) {\n return path\n }\n if (path === `/`) {\n return `/`\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1)\n }\n return path\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 const pathname = decodeURIComponent(rawPathname)\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 // Remove search query\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\"\nimport Link, {\n withPrefix,\n withAssetPrefix,\n navigate,\n push,\n replace,\n navigateTo,\n parsePath,\n} from \"gatsby-link\"\nimport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nimport PageRenderer from \"./public-page-renderer\"\nimport loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nconst StaticQueryContext = React.createContext({})\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\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n return (\n \n {staticQueryData => (\n \n )}\n \n )\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\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 const context = React.useContext(StaticQueryContext)\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\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\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 {\n Link,\n withAssetPrefix,\n withPrefix,\n graphql,\n parsePath,\n navigate,\n useScrollRestoration,\n StaticQueryContext,\n StaticQuery,\n PageRenderer,\n useStaticQuery,\n prefetchPathname,\n}\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\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 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 preferDefault = m => (m && m.default) || m\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 = path => {\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json`\n}\n\nfunction doFetch(url, method = `GET`) {\n return new Promise((resolve, reject) => {\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\nconst toPageResources = (pageData, component = null) => {\n const page = {\n componentChunkName: pageData.componentChunkName,\n path: pageData.path,\n webpackCompilationHash: pageData.webpackCompilationHash,\n matchPath: pageData.matchPath,\n staticQueryHashes: pageData.staticQueryHashes,\n }\n\n return {\n component,\n json: pageData.result,\n page,\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.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 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 page and it doesn't exist, we're done\n if (pagePath === `/404.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 Object.assign(loadObj, {\n status: PageResourceStatus.Error,\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 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 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 const 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 const componentChunkPromise = this.loadComponent(componentChunkName).then(\n component => {\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)\n }\n // undefined if final result is an error\n return pageResources\n }\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 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 // 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 false\n }\n\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 false\n }\n\n const realPath = findPath(pagePath)\n // Todo make doPrefetch logic cacheable\n // eslint-disable-next-line consistent-return\n this.doPrefetch(realPath).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n })\n\n return true\n }\n\n doPrefetch(pagePath) {\n const pageDataUrl = createPageDataUrl(pagePath)\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 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) {\n const loadComponent = chunkName => {\n if (!asyncRequires.components[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.components[chunkName]()\n .then(preferDefault)\n // loader will handle the case when component is error\n .catch(err => err)\n )\n }\n\n super(loadComponent, matchPaths)\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\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 React, { createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\n\n// Renders page\nclass PageRenderer extends React.Component {\n render() {\n const props = {\n ...this.props,\n params: {\n ...grabMatchParams(this.props.location.pathname),\n ...this.props.pageResources.json.pageContext.__params,\n },\n }\n\n const pageElement = createElement(this.props.pageResources.component, {\n ...props,\n key: this.props.path || this.props.pageResources.page.path,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n { element: pageElement, props },\n pageElement,\n ({ result }) => {\n return { element: result, props }\n }\n ).pop()\n\n return wrappedPage\n }\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\n if (redirect != null) {\n window.___replace(redirect.toPath)\n return true\n } else {\n return false\n }\n}\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(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 let { pathname } = 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\n pathname = parsePath(to).pathname\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\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).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\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 // Check for initial page-load redirect\n maybeRedirect(window.location.pathname)\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, { withErrorDetails: true }),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(location.pathname, {\n withErrorDetails: true,\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(nextProps.location.pathname)\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(nextProps.location.pathname)\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 ReactDOM from \"react-dom\"\nimport { Router, navigate, Location, BaseContext } from \"@gatsbyjs/reach-router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport domReady from \"@mikaelkristiansson/domready\"\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\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\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 const staticQueryResults = getStaticQueryResults()\n return (\n \n \n {children}\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). But\n // 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 !== browserLoc.pathname &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath === `/404.html` ||\n pagePath.match(/^\\/404\\/?$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(__BASE_PATH__ + pagePath + browserLoc.search + browserLoc.hash, {\n replace: true,\n })\n }\n\n publicLoader.loadPage(browserLoc.pathname).then(page => {\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 window.___webpackCompilationHash = page.page.webpackCompilationHash\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 performance.mark(`onInitialClientRender`)\n\n apiRunner(`onInitialClientRender`)\n }\n }, [])\n\n return {SiteRoot}\n }\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n process.env.GATSBY_EXPERIMENTAL_CONCURRENT_FEATURES\n ? ReactDOM.unstable_createRoot\n : ReactDOM.hydrate\n )[0]\n\n domReady(() => {\n const container =\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : null\n\n if (renderer === ReactDOM.unstable_createRoot) {\n renderer(container, {\n hydrate: true,\n }).render()\n } else {\n renderer(, container)\n }\n })\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","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};","/* eslint-disable no-unused-expressions */\nimport { stripIndent } from \"common-tags\"\nimport camelCase from \"camelcase\"\nimport { IGatsbyImageData } from \".\"\n\nconst DEFAULT_PIXEL_DENSITIES = [0.25, 0.5, 1, 2]\nexport const DEFAULT_BREAKPOINTS = [750, 1080, 1366, 1920]\nexport const EVERY_BREAKPOINT = [\n 320,\n 654,\n 768,\n 1024,\n 1366,\n 1600,\n 1920,\n 2048,\n 2560,\n 3440,\n 3840,\n 4096,\n]\nconst DEFAULT_FLUID_WIDTH = 800\nconst DEFAULT_FIXED_WIDTH = 800\nconst DEFAULT_ASPECT_RATIO = 4 / 3\n\nexport type Fit = \"cover\" | \"fill\" | \"inside\" | \"outside\" | \"contain\"\n\nexport type Layout = \"fixed\" | \"fullWidth\" | \"constrained\"\nexport type ImageFormat = \"jpg\" | \"png\" | \"webp\" | \"avif\" | \"auto\" | \"\"\n\n/**\n * The minimal required reporter, as we don't want to import it from gatsby-cli\n */\nexport interface IReporter {\n warn(message: string): void\n}\n\nexport interface ISharpGatsbyImageArgs {\n layout?: Layout\n formats?: Array\n placeholder?: \"tracedSVG\" | \"dominantColor\" | \"blurred\" | \"none\"\n tracedSVGOptions?: Record\n width?: number\n height?: number\n aspectRatio?: number\n sizes?: string\n quality?: number\n transformOptions?: {\n fit?: Fit\n cropFocus?: number | string\n }\n jpgOptions?: Record\n pngOptions?: Record\n webpOptions?: Record\n avifOptions?: Record\n blurredOptions?: { width?: number; toFormat?: ImageFormat }\n breakpoints?: Array\n backgroundColor?: string\n}\n\nexport interface IImageSizeArgs {\n width?: number\n height?: number\n layout?: Layout\n filename: string\n outputPixelDensities?: Array\n breakpoints?: Array\n fit?: Fit\n reporter?: IReporter\n sourceMetadata: { width: number; height: number }\n}\n\nexport interface IImageSizes {\n sizes: Array\n presentationWidth: number\n presentationHeight: number\n aspectRatio: number\n unscaledWidth: number\n}\n\nexport interface IImage {\n src: string\n width: number\n height: number\n format: ImageFormat\n}\n\nexport interface IGatsbyImageHelperArgs {\n pluginName: string\n generateImageSource: (\n filename: string,\n width: number,\n height: number,\n format: ImageFormat,\n fit?: Fit,\n options?: Record\n ) => IImage\n layout?: Layout\n formats?: Array\n filename: string\n placeholderURL?: string\n width?: number\n height?: number\n sizes?: string\n reporter?: IReporter\n sourceMetadata?: { width: number; height: number; format: ImageFormat }\n fit?: Fit\n options?: Record\n breakpoints?: Array\n backgroundColor?: string\n aspectRatio?: number\n}\n\nconst warn = (message: string): void => console.warn(message)\n\nconst sortNumeric = (a: number, b: number): number => a - b\n\nexport const getSizes = (width: number, layout: Layout): string | undefined => {\n switch (layout) {\n // If screen is wider than the max size, image width is the max size,\n // otherwise it's the width of the screen\n case `constrained`:\n return `(min-width: ${width}px) ${width}px, 100vw`\n\n // Image is always the same width, whatever the size of the screen\n case `fixed`:\n return `${width}px`\n\n // Image is always the width of the screen\n case `fullWidth`:\n return `100vw`\n\n default:\n return undefined\n }\n}\n\nexport const getSrcSet = (images: Array): string =>\n images.map(image => `${image.src} ${image.width}w`).join(`,\\n`)\n\nexport function formatFromFilename(filename: string): ImageFormat | undefined {\n const dot = filename.lastIndexOf(`.`)\n if (dot !== -1) {\n const ext = filename.substr(dot + 1)\n if (ext === `jpeg`) {\n return `jpg`\n }\n if (ext.length === 3 || ext.length === 4) {\n return ext as ImageFormat\n }\n }\n return undefined\n}\n\nexport function setDefaultDimensions(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageHelperArgs {\n let {\n layout = `constrained`,\n width,\n height,\n sourceMetadata,\n breakpoints,\n aspectRatio,\n formats = [`auto`, `webp`],\n } = args\n formats = formats.map(format => format.toLowerCase() as ImageFormat)\n layout = camelCase(layout) as Layout\n\n if (width && height) {\n return { ...args, formats, layout, aspectRatio: width / height }\n }\n if (sourceMetadata.width && sourceMetadata.height && !aspectRatio) {\n aspectRatio = sourceMetadata.width / sourceMetadata.height\n }\n\n if (layout === `fullWidth`) {\n width = width || sourceMetadata.width || breakpoints[breakpoints.length - 1]\n height = height || Math.round(width / (aspectRatio || DEFAULT_ASPECT_RATIO))\n } else {\n if (!width) {\n if (height && aspectRatio) {\n width = height * aspectRatio\n } else if (sourceMetadata.width) {\n width = sourceMetadata.width\n } else if (height) {\n width = Math.round(height / DEFAULT_ASPECT_RATIO)\n } else {\n width = DEFAULT_FIXED_WIDTH\n }\n }\n\n if (aspectRatio && !height) {\n height = Math.round(width / aspectRatio)\n } else if (!aspectRatio) {\n aspectRatio = width / height\n }\n }\n return { ...args, width, height, aspectRatio, layout, formats }\n}\n\n/**\n * Use this for getting an image for the blurred placeholder. This ensures the\n * aspect ratio and crop match the main image\n */\nexport function getLowResolutionImageURL(\n args: IGatsbyImageHelperArgs,\n width = 20\n): string {\n args = setDefaultDimensions(args)\n const { generateImageSource, filename, aspectRatio } = args\n return generateImageSource(\n filename,\n width,\n Math.round(width / aspectRatio),\n args.sourceMetadata.format || `jpg`,\n args.fit,\n args.options\n )?.src\n}\n\nexport function generateImageData(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageData {\n args = setDefaultDimensions(args)\n\n let {\n pluginName,\n sourceMetadata,\n generateImageSource,\n layout,\n fit,\n options,\n width,\n height,\n filename,\n reporter = { warn },\n backgroundColor,\n placeholderURL,\n } = args\n\n if (!pluginName) {\n reporter.warn(\n `[gatsby-plugin-image] \"generateImageData\" was not passed a plugin name`\n )\n }\n\n if (typeof generateImageSource !== `function`) {\n throw new Error(`generateImageSource must be a function`)\n }\n\n if (!sourceMetadata || (!sourceMetadata.width && !sourceMetadata.height)) {\n // No metadata means we let the CDN handle max size etc, aspect ratio etc\n sourceMetadata = {\n width,\n height,\n format: sourceMetadata?.format || formatFromFilename(filename) || `auto`,\n }\n } else if (!sourceMetadata.format) {\n sourceMetadata.format = formatFromFilename(filename)\n }\n\n const formats = new Set(args.formats)\n\n if (formats.size === 0 || formats.has(`auto`) || formats.has(``)) {\n formats.delete(`auto`)\n formats.delete(``)\n formats.add(sourceMetadata.format)\n }\n\n if (formats.has(`jpg`) && formats.has(`png`)) {\n reporter.warn(\n `[${pluginName}] Specifying both 'jpg' and 'png' formats is not supported. Using 'auto' instead`\n )\n if (sourceMetadata.format === `jpg`) {\n formats.delete(`png`)\n } else {\n formats.delete(`jpg`)\n }\n }\n\n const imageSizes = calculateImageSizes({ ...args, sourceMetadata })\n\n const result: IGatsbyImageData[\"images\"] = {\n sources: [],\n }\n\n let sizes = args.sizes\n if (!sizes) {\n sizes = getSizes(imageSizes.presentationWidth, layout)\n }\n\n formats.forEach(format => {\n const images = imageSizes.sizes\n .map(size => {\n const imageSrc = generateImageSource(\n filename,\n size,\n Math.round(size / imageSizes.aspectRatio),\n format,\n fit,\n options\n )\n if (\n !imageSrc?.width ||\n !imageSrc.height ||\n !imageSrc.src ||\n !imageSrc.format\n ) {\n reporter.warn(\n `[${pluginName}] The resolver for image ${filename} returned an invalid value.`\n )\n return undefined\n }\n return imageSrc\n })\n .filter(Boolean)\n\n if (format === `jpg` || format === `png` || format === `auto`) {\n const unscaled =\n images.find(img => img.width === imageSizes.unscaledWidth) || images[0]\n\n if (unscaled) {\n result.fallback = {\n src: unscaled.src,\n srcSet: getSrcSet(images),\n sizes,\n }\n }\n } else {\n result.sources?.push({\n srcSet: getSrcSet(images),\n sizes,\n type: `image/${format}`,\n })\n }\n })\n\n const imageProps: Partial = {\n images: result,\n layout,\n backgroundColor,\n }\n\n if (placeholderURL) {\n imageProps.placeholder = { fallback: placeholderURL }\n }\n\n switch (layout) {\n case `fixed`:\n imageProps.width = imageSizes.presentationWidth\n imageProps.height = imageSizes.presentationHeight\n break\n\n case `fullWidth`:\n imageProps.width = 1\n imageProps.height = 1 / imageSizes.aspectRatio\n break\n\n case `constrained`:\n imageProps.width = args.width || imageSizes.presentationWidth || 1\n imageProps.height = (imageProps.width || 1) / imageSizes.aspectRatio\n }\n\n return imageProps as IGatsbyImageData\n}\n\nconst dedupeAndSortDensities = (values: Array): Array =>\n Array.from(new Set([1, ...values])).sort(sortNumeric)\n\nexport function calculateImageSizes(args: IImageSizeArgs): IImageSizes {\n const {\n width,\n height,\n filename,\n layout = `constrained`,\n sourceMetadata: imgDimensions,\n reporter = { warn },\n breakpoints = DEFAULT_BREAKPOINTS,\n } = args\n\n // check that all dimensions provided are positive\n const userDimensions = { width, height }\n const erroneousUserDimensions = Object.entries(userDimensions).filter(\n ([_, size]) => typeof size === `number` && size < 1\n )\n if (erroneousUserDimensions.length) {\n throw new Error(\n `Specified dimensions for images must be positive numbers (> 0). Problem dimensions you have are ${erroneousUserDimensions\n .map(dim => dim.join(`: `))\n .join(`, `)}`\n )\n }\n\n if (layout === `fixed`) {\n return fixedImageSizes(args)\n } else if (layout === `constrained`) {\n return responsiveImageSizes(args)\n } else if (layout === `fullWidth`) {\n return responsiveImageSizes({ breakpoints, ...args })\n } else {\n reporter.warn(\n `No valid layout was provided for the image at ${filename}. Valid image layouts are fixed, fullWidth, and constrained. Found ${layout}`\n )\n return {\n sizes: [imgDimensions.width],\n presentationWidth: imgDimensions.width,\n presentationHeight: imgDimensions.height,\n aspectRatio: imgDimensions.width / imgDimensions.height,\n unscaledWidth: imgDimensions.width,\n }\n }\n}\nexport function fixedImageSizes({\n filename,\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n reporter = { warn },\n}: IImageSizeArgs): IImageSizes {\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n if (!width) {\n if (!height) {\n width = DEFAULT_FIXED_WIDTH\n } else {\n width = Math.round(height * aspectRatio)\n }\n } else if (!height) {\n height = Math.round(width / aspectRatio)\n }\n\n const originalWidth = width // will use this for presentationWidth, don't want to lose it\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n\n // If the image is smaller than requested, warn the user that it's being processed as such\n // print out this message with the necessary information before we overwrite it for sizing\n if (isTopSizeOverriden) {\n const fixedDimension = imgDimensions.width < width ? `width` : `height`\n reporter.warn(stripIndent`\n The requested ${fixedDimension} \"${\n fixedDimension === `width` ? width : height\n }px\" for the image ${filename} was larger than the actual image ${fixedDimension} of ${\n imgDimensions[fixedDimension]\n }px. If possible, replace the current image with a larger one.`)\n\n if (fixedDimension === `width`) {\n width = imgDimensions.width\n height = Math.round(width / aspectRatio)\n } else {\n height = imgDimensions.height\n width = height * aspectRatio\n }\n }\n\n const sizes = densities\n .filter(size => size >= 1) // remove smaller densities because fixed images don't need them\n .map(density => Math.round(density * (width as number)))\n .filter(size => size <= imgDimensions.width)\n\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function responsiveImageSizes({\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n breakpoints,\n layout,\n}: IImageSizeArgs): IImageSizes {\n let sizes\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n // Case 1: width of height were passed in, make sure it isn't larger than the actual image\n width = width && Math.min(width, imgDimensions.width)\n height = height && Math.min(height, imgDimensions.height)\n\n // Case 2: neither width or height were passed in, use default size\n if (!width && !height) {\n width = Math.min(DEFAULT_FLUID_WIDTH, imgDimensions.width)\n height = width / aspectRatio\n }\n\n // if it still hasn't been found, calculate width from the derived height.\n // TS isn't smart enough to realise the type for height has been narrowed here\n if (!width) {\n width = (height as number) * aspectRatio\n }\n\n const originalWidth = width\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n if (isTopSizeOverriden) {\n width = imgDimensions.width\n height = imgDimensions.height\n }\n\n width = Math.round(width)\n\n if (breakpoints?.length > 0) {\n sizes = breakpoints.filter(size => size <= imgDimensions.width)\n\n // If a larger breakpoint has been filtered-out, add the actual image width instead\n if (\n sizes.length < breakpoints.length &&\n !sizes.includes(imgDimensions.width)\n ) {\n sizes.push(imgDimensions.width)\n }\n } else {\n sizes = densities.map(density => Math.round(density * (width as number)))\n sizes = sizes.filter(size => size <= imgDimensions.width)\n }\n\n // ensure that the size passed in is included in the final output\n if (layout === `constrained` && !sizes.includes(width)) {\n sizes.push(width)\n }\n sizes = sizes.sort(sortNumeric)\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function getDimensionsAndAspectRatio(\n dimensions,\n options\n): { width: number; height: number; aspectRatio: number } {\n // Calculate the eventual width/height of the image.\n const imageAspectRatio = dimensions.width / dimensions.height\n\n let width = options.width\n let height = options.height\n\n switch (options.fit) {\n case `fill`: {\n width = options.width ? options.width : dimensions.width\n height = options.height ? options.height : dimensions.height\n break\n }\n case `inside`: {\n const widthOption = options.width\n ? options.width\n : Number.MAX_SAFE_INTEGER\n const heightOption = options.height\n ? options.height\n : Number.MAX_SAFE_INTEGER\n\n width = Math.min(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.min(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n case `outside`: {\n const widthOption = options.width ? options.width : 0\n const heightOption = options.height ? options.height : 0\n\n width = Math.max(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.max(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n\n default: {\n if (options.width && !options.height) {\n width = options.width\n height = Math.round(options.width / imageAspectRatio)\n }\n\n if (options.height && !options.width) {\n width = Math.round(options.height * imageAspectRatio)\n height = options.height\n }\n }\n }\n\n return {\n width,\n height,\n aspectRatio: width / height,\n }\n}\n","/* eslint-disable no-unused-expressions */\nimport {\n useState,\n CSSProperties,\n useEffect,\n HTMLAttributes,\n ImgHTMLAttributes,\n ReactEventHandler,\n SetStateAction,\n Dispatch,\n RefObject,\n} from \"react\"\nimport { Node } from \"gatsby\"\nimport { PlaceholderProps } from \"./placeholder\"\nimport { MainImageProps } from \"./main-image\"\nimport type { IGatsbyImageData } from \"./gatsby-image.browser\"\nimport {\n IGatsbyImageHelperArgs,\n generateImageData,\n Layout,\n EVERY_BREAKPOINT,\n IImage,\n ImageFormat,\n} from \"../image-utils\"\nconst imageCache = new Set()\n\n// Native lazy-loading support: https://addyosmani.com/blog/lazy-loading/\nexport const hasNativeLazyLoadSupport = (): boolean =>\n typeof HTMLImageElement !== `undefined` &&\n `loading` in HTMLImageElement.prototype\n\nexport function gatsbyImageIsInstalled(): boolean {\n return typeof GATSBY___IMAGE !== `undefined` && GATSBY___IMAGE\n}\n\nexport function storeImageloaded(cacheKey?: string): void {\n if (cacheKey) {\n imageCache.add(cacheKey)\n }\n}\n\nexport function hasImageLoaded(cacheKey: string): boolean {\n return imageCache.has(cacheKey)\n}\nexport type IGatsbyImageDataParent = T & {\n gatsbyImageData: IGatsbyImageData\n}\nexport type FileNode = Node & {\n childImageSharp?: IGatsbyImageDataParent\n}\n\nconst isGatsbyImageData = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageData | any\n): node is IGatsbyImageData =>\n // 🦆 check for a deep prop to be sure this is a valid gatsbyImageData object\n Boolean(node?.images?.fallback?.src)\n\nconst isGatsbyImageDataParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageDataParent | any\n): node is IGatsbyImageDataParent => Boolean(node?.gatsbyImageData)\n\nexport type ImageDataLike = FileNode | IGatsbyImageDataParent | IGatsbyImageData\nexport const getImage = (node: ImageDataLike): IGatsbyImageData | undefined => {\n if (isGatsbyImageData(node)) {\n return node\n }\n if (isGatsbyImageDataParent(node)) {\n return node.gatsbyImageData\n }\n return node?.childImageSharp?.gatsbyImageData\n}\n\nexport const getSrc = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.src\n\nexport const getSrcSet = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.srcSet\n\nexport function getWrapperProps(\n width: number,\n height: number,\n layout: Layout\n): Pick, \"className\" | \"style\"> & {\n \"data-gatsby-image-wrapper\": string\n} {\n const wrapperStyle: CSSProperties = {}\n\n let className = `gatsby-image-wrapper`\n\n // If the plugin isn't installed we need to apply the styles inline\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.position = `relative`\n wrapperStyle.overflow = `hidden`\n }\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n } else if (layout === `constrained`) {\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.display = `inline-block`\n wrapperStyle.verticalAlign = `top`\n }\n className = `gatsby-image-wrapper gatsby-image-wrapper-constrained`\n }\n\n return {\n className,\n \"data-gatsby-image-wrapper\": ``,\n style: wrapperStyle,\n }\n}\n\nexport async function applyPolyfill(\n ref: RefObject\n): Promise {\n if (!(`objectFitPolyfill` in window)) {\n await import(\n /* webpackChunkName: \"gatsby-plugin-image-objectfit-polyfill\" */ `objectFitPolyfill`\n )\n }\n ;(window as any).objectFitPolyfill(ref.current)\n}\n\nexport interface IUrlBuilderArgs {\n width: number\n height: number\n baseUrl: string\n format: ImageFormat\n options: OptionsType\n}\nexport interface IGetImageDataArgs> {\n baseUrl: string\n /**\n * For constrained and fixed images, the size of the image element\n */\n width?: number\n height?: number\n /**\n * If available, pass the source image width and height\n */\n sourceWidth?: number\n sourceHeight?: number\n /**\n * If only one dimension is passed, then this will be used to calculate the other.\n */\n aspectRatio?: number\n layout?: Layout\n /**\n * Returns a URL based on the passed arguments. Should be a pure function\n */\n urlBuilder: (args: IUrlBuilderArgs) => string\n\n /**\n * Should be a data URI\n */\n placeholderURL?: string\n backgroundColor?: string\n /**\n * Used in error messages etc\n */\n pluginName?: string\n\n /**\n * If you do not support auto-format, pass an array of image types here\n */\n formats?: Array\n\n breakpoints?: Array\n\n /**\n * Passed to the urlBuilder function\n */\n options?: OptionsType\n}\n\n/**\n * Use this hook to generate gatsby-plugin-image data in the browser.\n */\nexport function getImageData({\n baseUrl,\n urlBuilder,\n sourceWidth,\n sourceHeight,\n pluginName = `getImageData`,\n formats = [`auto`],\n breakpoints,\n options,\n ...props\n}: IGetImageDataArgs): IGatsbyImageData {\n if (\n !breakpoints?.length &&\n (props.layout === `fullWidth` || (props.layout as string) === `FULL_WIDTH`)\n ) {\n breakpoints = EVERY_BREAKPOINT\n }\n const generateImageSource = (\n baseUrl: string,\n width: number,\n height?: number,\n format?: ImageFormat\n ): IImage => {\n return {\n width,\n height,\n format,\n src: urlBuilder({ baseUrl, width, height, options, format }),\n }\n }\n\n const sourceMetadata: IGatsbyImageHelperArgs[\"sourceMetadata\"] = {\n width: sourceWidth,\n height: sourceHeight,\n format: `auto`,\n }\n\n const args: IGatsbyImageHelperArgs = {\n ...props,\n pluginName,\n generateImageSource,\n filename: baseUrl,\n formats,\n breakpoints,\n sourceMetadata,\n }\n return generateImageData(args)\n}\n\nexport function getMainProps(\n isLoading: boolean,\n isLoaded: boolean,\n images: IGatsbyImageData[\"images\"],\n loading?: \"eager\" | \"lazy\",\n toggleLoaded?: (loaded: boolean) => void,\n cacheKey?: string,\n ref?: RefObject,\n style: CSSProperties = {}\n): Partial {\n const onLoad: ReactEventHandler = function (e) {\n if (isLoaded) {\n return\n }\n\n storeImageloaded(cacheKey)\n\n const target = e.currentTarget\n const img = new Image()\n img.src = target.currentSrc\n\n if (img.decode) {\n // Decode the image through javascript to support our transition\n img\n .decode()\n .catch(() => {\n // ignore error, we just go forward\n })\n .then(() => {\n toggleLoaded(true)\n })\n } else {\n toggleLoaded(true)\n }\n }\n\n // Polyfill \"object-fit\" if unsupported (mostly IE)\n if (ref?.current && !(`objectFit` in document.documentElement.style)) {\n ref.current.dataset.objectFit = style.objectFit ?? `cover`\n ref.current.dataset.objectPosition = `${style.objectPosition ?? `50% 50%`}`\n applyPolyfill(ref)\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n transform: `translateZ(0)`,\n transition: `opacity 250ms linear`,\n width: `100%`,\n willChange: `opacity`,\n ...style,\n }\n }\n\n const result = {\n ...images,\n loading,\n shouldLoad: isLoading,\n \"data-main-image\": ``,\n style: {\n ...style,\n opacity: isLoaded ? 1 : 0,\n },\n onLoad,\n ref,\n }\n\n return result\n}\n\nexport type PlaceholderImageAttrs = ImgHTMLAttributes &\n Pick & {\n \"data-placeholder-image\"?: string\n }\n\nexport function getPlaceholderProps(\n placeholder: PlaceholderImageAttrs | undefined,\n isLoaded: boolean,\n layout: Layout,\n width?: number,\n height?: number,\n backgroundColor?: string,\n objectFit?: CSSProperties[\"objectFit\"],\n objectPosition?: CSSProperties[\"objectPosition\"]\n): PlaceholderImageAttrs {\n const wrapperStyle: CSSProperties = {}\n\n if (backgroundColor) {\n wrapperStyle.backgroundColor = backgroundColor\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n wrapperStyle.backgroundColor = backgroundColor\n wrapperStyle.position = `relative`\n } else if (layout === `constrained`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n } else if (layout === `fullWidth`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n }\n }\n\n if (objectFit) {\n wrapperStyle.objectFit = objectFit\n }\n\n if (objectPosition) {\n wrapperStyle.objectPosition = objectPosition\n }\n const result: PlaceholderImageAttrs = {\n ...placeholder,\n \"aria-hidden\": true,\n \"data-placeholder-image\": ``,\n style: {\n opacity: isLoaded ? 0 : 1,\n transition: `opacity 500ms linear`,\n ...wrapperStyle,\n },\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n result.style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n width: `100%`,\n }\n }\n\n return result\n}\n\nexport function useImageLoaded(\n cacheKey: string,\n loading: \"lazy\" | \"eager\",\n ref: any\n): {\n isLoaded: boolean\n isLoading: boolean\n toggleLoaded: Dispatch>\n} {\n const [isLoaded, toggleLoaded] = useState(false)\n const [isLoading, toggleIsLoading] = useState(loading === `eager`)\n\n const rAF =\n typeof window !== `undefined` && `requestAnimationFrame` in window\n ? requestAnimationFrame\n : function (cb: TimerHandler): number {\n return setTimeout(cb, 16)\n }\n const cRAF =\n typeof window !== `undefined` && `cancelAnimationFrame` in window\n ? cancelAnimationFrame\n : clearTimeout\n\n useEffect(() => {\n let interval: number\n // @see https://stackoverflow.com/questions/44074747/componentdidmount-called-before-ref-callback/50019873#50019873\n function toggleIfRefExists(): void {\n if (ref.current) {\n if (loading === `eager` && ref.current.complete) {\n storeImageloaded(cacheKey)\n toggleLoaded(true)\n } else {\n toggleIsLoading(true)\n }\n } else {\n interval = rAF(toggleIfRefExists)\n }\n }\n toggleIfRefExists()\n\n return (): void => {\n cRAF(interval)\n }\n }, [])\n\n return {\n isLoading,\n isLoaded,\n toggleLoaded,\n }\n}\n\nexport interface IArtDirectedImage {\n media: string\n image: IGatsbyImageData\n}\n\n/**\n * Generate a Gatsby image data object with multiple, art-directed images that display at different\n * resolutions.\n *\n * @param defaultImage The image displayed when no media query matches.\n * It is also used for all other settings applied to the image, such as width, height and layout.\n * You should pass a className to the component with media queries to adjust the size of the container,\n * as this cannot be adjusted automatically.\n * @param artDirected Array of objects which each contains a `media` string which is a media query\n * such as `(min-width: 320px)`, and the image object to use when that query matches.\n */\nexport function withArtDirection(\n defaultImage: IGatsbyImageData,\n artDirected: Array\n): IGatsbyImageData {\n const { images, placeholder, ...props } = defaultImage\n const output: IGatsbyImageData = {\n ...props,\n images: {\n ...images,\n sources: [],\n },\n placeholder: placeholder && {\n ...placeholder,\n sources: [],\n },\n }\n\n artDirected.forEach(({ media, image }) => {\n if (!media) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(\n \"[gatsby-plugin-image] All art-directed images passed to must have a value set for `media`. Skipping.\"\n )\n }\n return\n }\n\n if (\n image.layout !== defaultImage.layout &&\n process.env.NODE_ENV === `development`\n ) {\n console.warn(\n `[gatsby-plugin-image] Mismatched image layout: expected \"${defaultImage.layout}\" but received \"${image.layout}\". All art-directed images use the same layout as the default image`\n )\n }\n\n output.images.sources.push(\n ...image.images.sources.map(source => {\n return { ...source, media }\n }),\n {\n media,\n srcSet: image.images.fallback.srcSet,\n }\n )\n\n if (!output.placeholder) {\n return\n }\n\n output.placeholder.sources.push({\n media,\n srcSet: image.placeholder.fallback,\n })\n })\n output.images.sources.push(...images.sources)\n if (placeholder?.sources) {\n output.placeholder?.sources.push(...placeholder.sources)\n }\n return output\n}\n","// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \n\nimport React, { Fragment, FunctionComponent } from \"react\"\nimport terserMacro from \"../../macros/terser.macro\"\nimport { Layout } from \"../image-utils\"\n\nexport interface ILayoutWrapperProps {\n layout: Layout\n width: number\n height: number\n}\n\nconst NativeScriptLoading: FunctionComponent = () => (\n \n)\n\nexport function getSizer(\n layout: Layout,\n width: number,\n height: number\n): string {\n let sizer: string | null = null\n if (layout === `fullWidth`) {\n sizer = `
`\n }\n if (layout === `constrained`) {\n sizer = `
\"\"
`\n }\n return sizer\n}\n\nconst Sizer: FunctionComponent = function Sizer({\n layout,\n width,\n height,\n}) {\n if (layout === `fullWidth`) {\n return (\n
\n )\n }\n if (layout === `constrained`) {\n return (\n
\n \n
\n )\n }\n\n return null\n}\n\nexport const LayoutWrapper: FunctionComponent = function LayoutWrapper({\n children,\n ...props\n}) {\n return (\n \n \n {children}\n\n {\n // eslint-disable-next-line no-undef\n SERVER && \n }\n \n )\n}\n","/* eslint-disable filenames/match-regex */\nimport React, {\n FunctionComponent,\n ImgHTMLAttributes,\n forwardRef,\n LegacyRef,\n} from \"react\"\nimport * as PropTypes from \"prop-types\"\n\nexport interface IResponsiveImageProps {\n sizes?: string\n srcSet: string\n}\n\nexport type SourceProps = IResponsiveImageProps &\n (\n | {\n media: string\n type?: string\n }\n | {\n media?: string\n type: string\n }\n )\n\ntype FallbackProps = { src: string } & Partial\n\ntype ImageProps = ImgHTMLAttributes & {\n src: string\n alt: string\n shouldLoad: boolean\n innerRef: LegacyRef\n}\n\nexport type PictureProps = ImgHTMLAttributes & {\n fallback?: FallbackProps\n sources?: Array\n alt: string\n shouldLoad?: boolean\n}\n\nconst Image: FunctionComponent = function Image({\n src,\n srcSet,\n loading,\n alt = ``,\n shouldLoad,\n innerRef,\n ...props\n}) {\n return (\n \n )\n}\n\nexport const Picture = forwardRef(\n function Picture(\n { fallback, sources = [], shouldLoad = true, ...props },\n ref\n ) {\n const sizes = props.sizes || fallback?.sizes\n const fallbackImage = (\n \n )\n\n if (!sources.length) {\n return fallbackImage\n }\n\n return (\n \n {sources.map(({ media, srcSet, type }) => (\n \n ))}\n {fallbackImage}\n \n )\n }\n)\n\nImage.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string,\n shouldLoad: PropTypes.bool,\n}\n\nPicture.displayName = `Picture`\nPicture.propTypes = {\n alt: PropTypes.string.isRequired,\n shouldLoad: PropTypes.bool,\n fallback: PropTypes.exact({\n src: PropTypes.string.isRequired,\n srcSet: PropTypes.string,\n sizes: PropTypes.string,\n }),\n sources: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.exact({\n media: PropTypes.string.isRequired,\n type: PropTypes.string,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n PropTypes.exact({\n media: PropTypes.string,\n type: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n ])\n ),\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\nimport { Picture, SourceProps } from \"./picture\"\n\nexport type PlaceholderProps = ImgHTMLAttributes & {\n fallback?: string\n sources?: Array\n}\n\nexport const Placeholder: FunctionComponent = function Placeholder({\n fallback,\n ...props\n}) {\n if (fallback) {\n return (\n \n )\n } else {\n return
\n }\n}\n\nPlaceholder.displayName = `Placeholder`\nPlaceholder.propTypes = {\n fallback: PropTypes.string,\n sources: Picture.propTypes?.sources,\n alt: function (props, propName, componentName): Error | null {\n if (!props[propName]) {\n return null\n }\n return new Error(\n `Invalid prop \\`${propName}\\` supplied to \\`${componentName}\\`. Validation failed.`\n )\n },\n}\n","import React, { forwardRef } from \"react\"\nimport { Picture, PictureProps } from \"./picture\"\n\nexport type MainImageProps = PictureProps\n\nexport const MainImage = forwardRef(\n function MainImage(props, ref) {\n return (\n <>\n \n \n \n )\n }\n)\n\nMainImage.displayName = `MainImage`\nMainImage.propTypes = Picture.propTypes\n","import React, {\n ElementType,\n FunctionComponent,\n CSSProperties,\n WeakValidationMap,\n} from \"react\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport { getWrapperProps, getMainProps, getPlaceholderProps } from \"./hooks\"\nimport { Placeholder } from \"./placeholder\"\nimport { MainImage, MainImageProps } from \"./main-image\"\nimport { LayoutWrapper } from \"./layout-wrapper\"\nimport PropTypes from \"prop-types\"\n\nconst removeNewLines = (str: string): string => str.replace(/\\n/g, ``)\n\nexport const GatsbyImageHydrator: FunctionComponent<{\n as?: ElementType\n style?: CSSProperties\n className?: string\n}> = function GatsbyImageHydrator({ as: Type = `div`, children, ...props }) {\n return {children}\n}\n\nexport const GatsbyImage: FunctionComponent = function GatsbyImage({\n as,\n className,\n class: preactClass,\n style,\n image,\n loading = `lazy`,\n imgClassName,\n imgStyle,\n backgroundColor,\n objectFit,\n objectPosition,\n ...props\n}) {\n if (!image) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n return null\n }\n if (preactClass) {\n className = preactClass\n }\n imgStyle = {\n objectFit,\n objectPosition,\n backgroundColor,\n ...imgStyle,\n }\n\n const {\n width,\n height,\n layout,\n images,\n placeholder,\n backgroundColor: placeholderBackgroundColor,\n } = image\n\n const { style: wStyle, className: wClass, ...wrapperProps } = getWrapperProps(\n width,\n height,\n layout\n )\n\n const cleanedImages: IGatsbyImageData[\"images\"] = {\n fallback: undefined,\n sources: [],\n }\n if (images.fallback) {\n cleanedImages.fallback = {\n ...images.fallback,\n srcSet: images.fallback.srcSet\n ? removeNewLines(images.fallback.srcSet)\n : undefined,\n }\n }\n\n if (images.sources) {\n cleanedImages.sources = images.sources.map(source => {\n return {\n ...source,\n srcSet: removeNewLines(source.srcSet),\n }\n })\n }\n\n return (\n \n \n \n\n )}\n // When eager is set we want to start the isLoading state on true (we want to load the img without react)\n {...getMainProps(\n loading === `eager`,\n false,\n cleanedImages,\n loading,\n undefined,\n undefined,\n undefined,\n imgStyle\n )}\n />\n \n \n )\n}\n\nexport const altValidator: PropTypes.Validator = (\n props: GatsbyImageProps,\n propName,\n componentName,\n ...rest\n): Error | undefined => {\n if (!props.alt && props.alt !== ``) {\n return new Error(\n `The \"alt\" prop is required in ${componentName}. If the image is purely presentational then pass an empty string: e.g. alt=\"\". Learn more: https://a11y-style-guide.com/style-guide/section-media.html`\n )\n }\n return PropTypes.string(props, propName, componentName, ...rest)\n}\nexport const propTypes = {\n image: PropTypes.object.isRequired,\n alt: altValidator,\n} as WeakValidationMap\n","/* eslint-disable no-unused-expressions */\nimport React, {\n Component,\n ElementType,\n createRef,\n MutableRefObject,\n FunctionComponent,\n ImgHTMLAttributes,\n RefObject,\n CSSProperties,\n} from \"react\"\nimport {\n getWrapperProps,\n hasNativeLazyLoadSupport,\n storeImageloaded,\n hasImageLoaded,\n gatsbyImageIsInstalled,\n} from \"./hooks\"\nimport { PlaceholderProps } from \"./placeholder\"\nimport { MainImageProps } from \"./main-image\"\nimport { Layout } from \"../image-utils\"\nimport { getSizer } from \"./layout-wrapper\"\nimport { propTypes } from \"./gatsby-image.server\"\nimport { Unobserver } from \"./intersection-observer\"\nimport { render } from \"react-dom\"\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface GatsbyImageProps\n extends Omit<\n ImgHTMLAttributes,\n \"placeholder\" | \"onLoad\" | \"src\" | \"srcSet\" | \"width\" | \"height\"\n > {\n alt: string\n as?: ElementType\n className?: string\n class?: string\n imgClassName?: string\n image: IGatsbyImageData\n imgStyle?: CSSProperties\n backgroundColor?: string\n objectFit?: CSSProperties[\"objectFit\"]\n objectPosition?: CSSProperties[\"objectPosition\"]\n onLoad?: () => void\n onError?: () => void\n onStartLoad?: (props: { wasCached?: boolean }) => void\n}\n\nexport interface IGatsbyImageData {\n layout: Layout\n width: number\n height: number\n backgroundColor?: string\n images: Pick\n placeholder?: Pick\n}\n\nclass GatsbyImageHydrator extends Component<\n GatsbyImageProps,\n { isLoading: boolean; isLoaded: boolean }\n> {\n root: RefObject = createRef<\n HTMLImageElement | undefined\n >()\n hydrated: MutableRefObject = { current: false }\n forceRender: MutableRefObject = {\n // In dev we use render not hydrate, to avoid hydration warnings\n current: process.env.NODE_ENV === `development`,\n }\n lazyHydrator: () => void | null = null\n ref = createRef()\n unobserveRef: Unobserver\n\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: hasNativeLazyLoadSupport(),\n isLoaded: false,\n }\n }\n\n _lazyHydrate(props, state): Promise {\n const hasSSRHtml = this.root.current.querySelector(\n `[data-gatsby-image-ssr]`\n )\n // On first server hydration do nothing\n if (hasNativeLazyLoadSupport() && hasSSRHtml && !this.hydrated.current) {\n this.hydrated.current = true\n return Promise.resolve()\n }\n\n return import(`./lazy-hydrate`).then(({ lazyHydrate }) => {\n this.lazyHydrator = lazyHydrate(\n {\n image: props.image.images,\n isLoading: state.isLoading,\n isLoaded: state.isLoaded,\n toggleIsLoaded: () => {\n props.onLoad?.()\n\n this.setState({\n isLoaded: true,\n })\n },\n ref: this.ref,\n ...props,\n },\n this.root,\n this.hydrated,\n this.forceRender\n )\n })\n }\n\n /**\n * Choose if setupIntersectionObserver should use the image cache or not.\n */\n _setupIntersectionObserver(useCache = true): void {\n import(`./intersection-observer`).then(({ createIntersectionObserver }) => {\n const intersectionObserver = createIntersectionObserver(() => {\n if (this.root.current) {\n const cacheKey = JSON.stringify(this.props.image.images)\n this.props.onStartLoad?.({\n wasCached: useCache && hasImageLoaded(cacheKey),\n })\n this.setState({\n isLoading: true,\n isLoaded: useCache && hasImageLoaded(cacheKey),\n })\n }\n })\n\n if (this.root.current) {\n this.unobserveRef = intersectionObserver(this.root)\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState): boolean {\n let hasChanged = false\n if (!this.state.isLoading && nextState.isLoading && !nextState.isLoaded) {\n // Props have changed between SSR and hydration, so we need to force render instead of hydrate\n this.forceRender.current = true\n }\n // this check mostly means people do not have the correct ref checks in place, we want to reset some state to suppport loading effects\n if (this.props.image.images !== nextProps.image.images) {\n // reset state, we'll rely on intersection observer to reload\n if (this.unobserveRef) {\n // unregister intersectionObserver\n this.unobserveRef()\n\n // // on unmount, make sure we cleanup\n if (this.hydrated.current && this.lazyHydrator) {\n render(null, this.root.current)\n }\n }\n\n this.setState(\n {\n isLoading: false,\n isLoaded: false,\n },\n () => {\n this._setupIntersectionObserver(false)\n }\n )\n\n hasChanged = true\n }\n\n if (this.root.current && !hasChanged) {\n this._lazyHydrate(nextProps, nextState)\n }\n\n return false\n }\n\n componentDidMount(): void {\n if (this.root.current) {\n const ssrElement = this.root.current.querySelector(\n `[data-gatsby-image-ssr]`\n ) as HTMLImageElement\n const cacheKey = JSON.stringify(this.props.image.images)\n\n // when SSR and native lazyload is supported we'll do nothing ;)\n if (\n hasNativeLazyLoadSupport() &&\n ssrElement &&\n gatsbyImageIsInstalled()\n ) {\n this.props.onStartLoad?.({ wasCached: false })\n\n // When the image is already loaded before we have hydrated, we trigger onLoad and cache the item\n if (ssrElement.complete) {\n this.props.onLoad?.()\n storeImageloaded(cacheKey)\n } else {\n // We need the current class context (this) inside our named onLoad function\n // The named function is necessary to easily remove the listener afterward.\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _this = this\n // add an onLoad to the image\n ssrElement.addEventListener(`load`, function onLoad() {\n ssrElement.removeEventListener(`load`, onLoad)\n\n _this.props.onLoad?.()\n storeImageloaded(cacheKey)\n })\n }\n\n return\n }\n\n // Fallback to custom lazy loading (intersection observer)\n this._setupIntersectionObserver(true)\n }\n }\n\n componentWillUnmount(): void {\n // Cleanup when onmount happens\n if (this.unobserveRef) {\n // unregister intersectionObserver\n this.unobserveRef()\n\n // on unmount, make sure we cleanup\n if (this.hydrated.current && this.lazyHydrator) {\n this.lazyHydrator()\n }\n }\n\n return\n }\n\n render(): JSX.Element {\n const Type = this.props.as || `div`\n const { width, height, layout } = this.props.image\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n\n let className = this.props.className\n // preact class\n if (this.props.class) {\n className = this.props.class\n }\n\n const sizer = getSizer(layout, width, height)\n\n return (\n \n )\n }\n}\n\nexport const GatsbyImage: FunctionComponent = function GatsbyImage(\n props\n) {\n if (!props.image) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n }\n return null\n }\n\n if (!gatsbyImageIsInstalled()) {\n console.error(\n `[gatsby-plugin-image] You're missing out on some cool performance features. Please add \"gatsby-plugin-image\" to your gatsby-config.js`\n )\n }\n const { className, class: classSafe, backgroundColor, image } = props\n const { width, height, layout } = image\n const propsKey = JSON.stringify([\n width,\n height,\n layout,\n className,\n classSafe,\n backgroundColor,\n ])\n return \n}\n\nGatsbyImage.propTypes = propTypes\n\nGatsbyImage.displayName = `GatsbyImage`\n","import React, { FunctionComponent, ReactElement } from \"react\"\nimport {\n altValidator,\n GatsbyImage as GatsbyImageServer,\n} from \"./gatsby-image.server\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport PropTypes from \"prop-types\"\nimport { ISharpGatsbyImageArgs } from \"../image-utils\"\n\nexport interface IStaticImageProps\n extends Omit,\n Omit {\n src: string\n}\n\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nexport function _getStaticImage(\n GatsbyImage: FunctionComponent\n): React.FC {\n return function StaticImage({\n src,\n __imageData: imageData,\n __error,\n // We extract these because they're not meant to be passed-down to GatsbyImage\n /* eslint-disable @typescript-eslint/no-unused-vars */\n width,\n height,\n aspectRatio,\n tracedSVGOptions,\n placeholder,\n formats,\n quality,\n transformOptions,\n jpgOptions,\n pngOptions,\n webpOptions,\n avifOptions,\n blurredOptions,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...props\n }): ReactElement {\n if (__error) {\n console.warn(__error)\n }\n\n if (imageData) {\n return \n }\n console.warn(`Image not loaded`, src)\n if (!__error && process.env.NODE_ENV === `development`) {\n console.warn(\n `Please ensure that \"gatsby-plugin-image\" is included in the plugins array in gatsby-config.js, and that your version of gatsby is at least 2.24.78`\n )\n }\n return null\n }\n}\n\nconst StaticImage: React.FC<\n IStaticImageProps & IPrivateProps\n> = _getStaticImage(GatsbyImageServer)\n\nconst checkDimensionProps: PropTypes.Validator = (\n props: IStaticImageProps & IPrivateProps,\n propName: keyof IStaticImageProps & IPrivateProps,\n ...rest\n) => {\n if (\n props.layout === `fullWidth` &&\n (propName === `width` || propName === `height`) &&\n props[propName]\n ) {\n return new Error(\n `\"${propName}\" ${props[propName]} may not be passed when layout is fullWidth.`\n )\n }\n return PropTypes.number(props, propName, ...rest)\n}\n\nconst validLayouts = new Set([`fixed`, `fullWidth`, `constrained`])\n\nexport const propTypes = {\n src: PropTypes.string.isRequired,\n alt: altValidator,\n width: checkDimensionProps,\n height: checkDimensionProps,\n sizes: PropTypes.string,\n layout: (props: IStaticImageProps & IPrivateProps): Error | undefined => {\n if (props.layout === undefined) {\n return undefined\n }\n if (validLayouts.has(props.layout)) {\n return undefined\n }\n\n return new Error(\n `Invalid value ${props.layout}\" provided for prop \"layout\". Defaulting to \"constrained\". Valid values are \"fixed\", \"fullWidth\" or \"constrained\".`\n )\n },\n}\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import {\n GatsbyImage as GatsbyImageBrowser,\n IGatsbyImageData,\n} from \"./gatsby-image.browser\"\nimport React from \"react\"\nimport {\n _getStaticImage,\n propTypes,\n IStaticImageProps,\n} from \"./static-image.server\"\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nconst StaticImage: React.FC<\n IStaticImageProps & IPrivateProps\n> = _getStaticImage(GatsbyImageBrowser)\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import * as React from \"react\"\nexport function LaterHydrator({\n children,\n}: React.PropsWithChildren>): React.ReactNode {\n React.useEffect(() => {\n // eslint-disable-next-line no-unused-expressions\n import(`./lazy-hydrate`)\n }, [])\n\n return children\n}\n","import React from \"react\"\nimport { LaterHydrator } from \".\"\n\nexport function wrapRootElement({ element }) {\n return {element}\n}\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 _createBrowserHistory = require('history/createBrowserHistory');\n\nvar _createBrowserHistory2 = _interopRequireDefault(_createBrowserHistory);\n\nvar _index = require('./index.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.onClientEntry = function (_, _ref) {\n var transitionTime = _ref.transitionTime;\n\n global.window[_index.pageTransitionTime] = transitionTime || 250;\n};\n\nvar getUserConfirmation = function getUserConfirmation(pathname, callback) {\n var event = new global.window.CustomEvent(_index.pageTransitionEvent, {\n detail: { pathname: pathname }\n });\n global.window.dispatchEvent(event);\n var time = global.window[_index.componentTransitionTime] || global.window[_index.pageTransitionTime];\n global.window[_index.pageTransitionExists] ? setTimeout(function () {\n return callback(true);\n }, time) : callback(true);\n};\n\nvar history = (0, _createBrowserHistory2.default)({ getUserConfirmation: getUserConfirmation });\nhistory.block(function (location) {\n return location.pathname;\n});\nexports.replaceHistory = function () {\n return history;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.componentTransitionTime = exports.pageTransitionExists = exports.pageTransitionTime = exports.pageTransitionEvent = undefined;\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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _Transition = require('react-transition-group/Transition');\n\nvar _Transition2 = _interopRequireDefault(_Transition);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\nvar pageTransitionEvent = exports.pageTransitionEvent = 'gatsby-plugin-page-transition::exit';\nvar pageTransitionTime = exports.pageTransitionTime = 'gatsby-plugin-page-transition::time';\nvar pageTransitionExists = exports.pageTransitionExists = 'gatsby-plugin-page-transition::exists';\nvar componentTransitionTime = exports.componentTransitionTime = 'gatsby-plugin-page-transition::comTime';\n\nvar PageTransition = function (_React$Component) {\n _inherits(PageTransition, _React$Component);\n\n function PageTransition(props) {\n _classCallCheck(this, PageTransition);\n\n var _this = _possibleConstructorReturn(this, (PageTransition.__proto__ || Object.getPrototypeOf(PageTransition)).call(this, props));\n\n _this.setIn = _this.setIn.bind(_this);\n _this.listenerHandler = _this.listenerHandler.bind(_this);\n _this.state = {\n in: false,\n transitionTime: 0\n };\n return _this;\n }\n\n _createClass(PageTransition, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.setIn(true);\n global.window.addEventListener(pageTransitionEvent, this.listenerHandler);\n global.window[pageTransitionExists] = true;\n global.window[componentTransitionTime] = this.props.transitionTime;\n this.setState({\n transitionTime: this.props.transitionTime || global.window[pageTransitionTime]\n });\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n global.window.removeEventListener(pageTransitionEvent, this.listenerHandler);\n global.window[pageTransitionExists] = false;\n global.window[componentTransitionTime] = undefined;\n }\n }, {\n key: 'setIn',\n value: function setIn(inProp) {\n this.setState({ in: inProp });\n }\n }, {\n key: 'listenerHandler',\n value: function listenerHandler(event) {\n var currentPath = global.window.location.pathname;\n var nextPath = event.detail.pathname;\n if (currentPath !== nextPath) this.setIn(false);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var defaultStyle = this.props.defaultStyle || {\n transition: 'opacity ' + this.state.transitionTime + 'ms ease-in-out',\n opacity: 0\n };\n\n var transitionStyles = this.props.transitionStyles || {\n entering: { opacity: 1 },\n entered: { opacity: 1 },\n exiting: { opacity: 0 }\n };\n\n return _react2.default.createElement(\n _Transition2.default,\n { 'in': this.state.in, timeout: this.state.transitionTime },\n function (state) {\n return _react2.default.createElement(\n 'div',\n {\n style: _extends({}, defaultStyle, transitionStyles[state])\n },\n _this2.props.children\n );\n }\n );\n }\n }]);\n\n return PageTransition;\n}(_react2.default.Component);\n\nPageTransition.propTypes = {\n children: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.shape({})), _propTypes2.default.shape({})]).isRequired,\n transitionTime: _propTypes2.default.number,\n defaultStyle: _propTypes2.default.shape({}),\n transitionStyles: _propTypes2.default.shape({})\n};\n\nexports.default = PageTransition;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","\"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};","const WebFont = require('webfontloader')\n\nexports.onInitialClientRender = (a, options) => {\n\toptions = { ...options }\n\tdelete options.plugins\n\tWebFont.load(options)\n}","import invariant from \"invariant\"; ////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\n\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\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.\n\n\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// match(path, uri) - Matches just one path to a uri, also lol\n\n\nvar match = function match(path, uri) {\n return pick([{\n path: path\n }], uri);\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.\n\n\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); // ?a=b, /users?b=c => /users?a=b\n\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n } // profile, /users/789 => /users/789/profile\n\n\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\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\n\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n\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// insertParams(path, params)\n\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 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\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Junk\n\n\nvar paramRe = /^:(.+)/;\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};\n\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\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 {\n route: route,\n score: score,\n index: index\n };\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 // 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 * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\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) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\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 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\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({\n location: location,\n action: \"POP\"\n });\n };\n\n source.addEventListener(\"popstate\", popstateListener);\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, {\n key: Date.now() + \"\"\n }); // try...catch iOS Safari limits to 100 pushState calls\n\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({\n location: location,\n action: \"PUSH\"\n });\n });\n return transition;\n }\n };\n}; ////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\n\n\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\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 return {\n get location() {\n return stack[index];\n },\n\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n history: {\n get entries() {\n return stack;\n },\n\n get index() {\n return index;\n },\n\n get state() {\n return states[index];\n },\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({\n pathname: pathname,\n search: search.length ? \"?\" + search : search\n });\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] = {\n pathname: pathname,\n search: search\n };\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// global history - uses window.history as the source if available, otherwise a\n// memory history\n\n\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate; ////////////////////////////////////////////////////////////////////////////////\n\nexport { globalHistory, navigate, createHistory, createMemorySource };","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n/* eslint-disable jsx-a11y/anchor-has-content */\n\n\nimport React, { useContext, createContext } from \"react\";\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\nvar createNamedContext = function createNamedContext(name, defaultValue) {\n var Ctx = createContext(defaultValue);\n Ctx.displayName = name;\n return Ctx;\n}; ////////////////////////////////////////////////////////////////////////////////\n// Location Context/Provider\n\n\nvar LocationContext = createNamedContext(\"Location\"); // sets up a listener if there isn't one already so apps don't need to be\n// wrapped in some top level provider\n\nvar Location = function Location(_ref) {\n var children = _ref.children;\n return React.createElement(LocationContext.Consumer, null, function (context) {\n return context ? children(context) : React.createElement(LocationProvider, null, children);\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: {\n unlisten: null\n }\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 return {\n navigate: navigate,\n location: location\n };\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, {\n replace: true\n });\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\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 {\n context: _this2.getContext()\n };\n });\n }\n });\n });\n });\n };\n\n LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n var refs = this.state.refs;\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 return React.createElement(LocationContext.Provider, {\n value: context\n }, typeof children === \"function\" ? children(context) : children || null);\n };\n\n return LocationProvider;\n}(React.Component); ////////////////////////////////////////////////////////////////////////////////\n\n\nLocationProvider.defaultProps = {\n history: globalHistory\n};\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\n\nvar ServerLocation = function ServerLocation(_ref2) {\n var url = _ref2.url,\n children = _ref2.children;\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(LocationContext.Provider, {\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 }, children);\n}; ////////////////////////////////////////////////////////////////////////////////\n// Sets baseuri and basepath for nested routers and links\n\n\nvar BaseContext = createNamedContext(\"Base\", {\n baseuri: \"/\",\n basepath: \"/\",\n navigate: globalHistory.navigate\n}); ////////////////////////////////////////////////////////////////////////////////\n// The main event, welcome to the show everybody.\n\nvar Router = function Router(props) {\n return React.createElement(BaseContext.Consumer, null, function (baseContext) {\n return React.createElement(Location, null, function (locationContext) {\n return React.createElement(RouterImpl, _extends({}, baseContext, locationContext, props));\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 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; // 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(Router, {\n location: location,\n primary: primary\n }, element.props.children) : undefined); // using 'div' for < 16.3 support\n\n var FocusWrapper = primary ? FocusHandler : component; // don't pass any props to 'div'\n\n var wrapperProps = primary ? _extends({\n uri: uri,\n location: location,\n component: component\n }, domProps) : domProps;\n return React.createElement(BaseContext.Provider, {\n value: {\n baseuri: uri,\n basepath: basepath,\n navigate: props.navigate\n }\n }, React.createElement(FocusWrapper, wrapperProps, clone));\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};\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(FocusContext.Consumer, null, function (requestFocus) {\n return React.createElement(FocusHandlerImpl, _extends({}, domProps, {\n component: component,\n requestFocus: requestFocus,\n uri: uri,\n location: location\n }));\n });\n}; // don't focus on initial render\n\n\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\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\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 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(Comp, _extends({\n style: _extends({\n outline: \"none\"\n }, style),\n tabIndex: \"-1\",\n ref: function ref(n) {\n return _this5.node = n;\n }\n }, domProps), React.createElement(FocusContext.Provider, {\n value: this.requestFocus\n }, this.props.children));\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(BaseContext.Consumer, null, function (_ref5) {\n var basepath = _ref5.basepath,\n baseuri = _ref5.baseuri;\n return React.createElement(Location, null, 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 return React.createElement(\"a\", _extends({\n ref: ref || innerRef,\n \"aria-current\": isCurrent ? \"page\" : undefined\n }, anchorProps, getProps({\n isCurrent: isCurrent,\n isPartiallyCurrent: isPartiallyCurrent,\n href: href,\n location: location\n }), {\n href: href,\n onClick: function onClick(event) {\n if (anchorProps.onClick) anchorProps.onClick(event);\n\n if (shouldNavigate(event)) {\n event.preventDefault();\n var shouldReplace = replace;\n\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\n navigate(href, {\n state: state,\n replace: shouldReplace\n });\n }\n }\n }));\n });\n });\n});\nLink.displayName = \"Link\";\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0; ////////////////////////////////////////////////////////////////////////////////\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 } // Support React < 16 with this hook\n\n\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), {\n replace: replace,\n state: state\n });\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(BaseContext.Consumer, null, function (_ref7) {\n var baseuri = _ref7.baseuri;\n return React.createElement(Location, null, function (locationContext) {\n return React.createElement(RedirectImpl, _extends({}, locationContext, {\n baseuri: baseuri\n }, props));\n });\n });\n};\n\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0; ////////////////////////////////////////////////////////////////////////////////\n\nvar Match = function Match(_ref8) {\n var path = _ref8.path,\n children = _ref8.children;\n return React.createElement(BaseContext.Consumer, null, function (_ref9) {\n var baseuri = _ref9.baseuri;\n return React.createElement(Location, null, function (_ref10) {\n var navigate = _ref10.navigate,\n location = _ref10.location;\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// Hooks\n\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 var results = match(context.basepath, location.pathname);\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\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 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// Junk\n\n\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\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 !!(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 !!(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 {\n value: element,\n default: true\n };\n }\n\n var elementPath = element.type === Redirect ? element.props.from : element.props.path;\n var path = elementPath === \"/\" ? basepath : stripSlashes(basepath) + \"/\" + stripSlashes(elementPath);\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 , BaseContext };","/**\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"],"sourceRoot":""}