{"version":3,"file":"static/chunks/pages/_app-3cb1c84f7c93ee19.js","mappings":"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CH,IAAI4tH,EAAatG,QAAU,IAAI,KAAe,2BAA2B3rH,OAAOgyH,EAAO,0BAA0BhyH,OAAOqE,EAAE9N,UAAY,IAAI,KAAe,IAEzJ,MADA07H,EAAWA,WAAa5tH,EAClB4tH,EAEV,OAAO70G,GCXA80G,GAAmB,SAAUh/G,EAAUzT,EAAQlJ,GACtD,IAAI4c,EAAQ,IAAIhd,MAAMI,GAKtB,MAJA4c,EAAMlb,KAAO,cACbkb,EAAMD,SAAWA,EACjBC,EAAMg/G,WAAaj/G,EAASpZ,OAC5BqZ,EAAM1T,OAASA,EACT0T,GCLN,GAAiBvV,OAAO7I,UAAUic,eCA/B,I,WCOP,MAAMohH,GAAgB,gCAEtB,SAASC,GAAgBhzG,GACvB,OAAOizG,GAAgBjzG,EAAIkS,WAAW,IAGxC,MAAM+gG,GAAkB,CACtB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,MACA,MACA,MACA,UACA,MACA,MACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,GACA,GACA,MACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,OACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA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","sources":["webpack://_N_E/./node_modules/@sentry/hub/esm/exports.js","webpack://_N_E/./node_modules/@sentry/hub/esm/hub.js","webpack://_N_E/./node_modules/@sentry/hub/esm/scope.js","webpack://_N_E/./node_modules/@sentry/hub/esm/session.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/errors.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/hubextensions.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/idletransaction.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/span.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/transaction.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/utils.js","webpack://_N_E/./node_modules/@sentry/utils/esm/baggage.js","webpack://_N_E/./node_modules/@sentry/utils/esm/browser.js","webpack://_N_E/./node_modules/@sentry/utils/esm/buildPolyfills/_nullishCoalesce.js","webpack://_N_E/./node_modules/@sentry/utils/esm/global.js","webpack://_N_E/./node_modules/@sentry/utils/esm/instrument.js","webpack://_N_E/./node_modules/@sentry/utils/esm/is.js","webpack://_N_E/./node_modules/@sentry/utils/esm/logger.js","webpack://_N_E/./node_modules/@sentry/utils/esm/misc.js","webpack://_N_E/./node_modules/@sentry/utils/esm/node.js","webpack://_N_E/./node_modules/@sentry/utils/esm/env.js","webpack://_N_E/./node_modules/@sentry/utils/esm/normalize.js","webpack://_N_E/./node_modules/@sentry/utils/esm/memo.js","webpack://_N_E/./node_modules/@sentry/utils/esm/object.js","webpack://_N_E/./node_modules/@sentry/utils/esm/stacktrace.js","webpack://_N_E/./node_modules/@sentry/utils/esm/string.js","webpack://_N_E/./node_modules/@sentry/utils/esm/supports.js","webpack://_N_E/./node_modules/@sentry/utils/esm/syncpromise.js","webpack://_N_E/./node_modules/@sentry/utils/esm/time.js","webpack://_N_E/./node_modules/@sentry/webpack-plugin/src/sentry-webpack.module.js","webpack://_N_E/./node_modules/@wry/equality/lib/equality.esm.js","webpack://_N_E/./node_modules/babel-runtime/core-js/object/assign.js","webpack://_N_E/./node_modules/babel-runtime/core-js/object/create.js","webpack://_N_E/./node_modules/babel-runtime/core-js/object/define-property.js","webpack://_N_E/./node_modules/babel-runtime/core-js/object/get-prototype-of.js","webpack://_N_E/./node_modules/babel-runtime/core-js/object/set-prototype-of.js","webpack://_N_E/./node_modules/babel-runtime/core-js/symbol.js","webpack://_N_E/./node_modules/babel-runtime/core-js/symbol/iterator.js","webpack://_N_E/./node_modules/babel-runtime/helpers/classCallCheck.js","webpack://_N_E/./node_modules/babel-runtime/helpers/createClass.js","webpack://_N_E/./node_modules/babel-runtime/helpers/extends.js","webpack://_N_E/./node_modules/babel-runtime/helpers/inherits.js","webpack://_N_E/./node_modules/babel-runtime/helpers/possibleConstructorReturn.js","webpack://_N_E/./node_modules/babel-runtime/helpers/typeof.js","webpack://_N_E/./node_modules/core-js/library/fn/object/assign.js","webpack://_N_E/./node_modules/core-js/library/fn/object/create.js","webpack://_N_E/./node_modules/core-js/library/fn/object/define-property.js","webpack://_N_E/./node_modules/core-js/library/fn/object/get-prototype-of.js","webpack://_N_E/./node_modules/core-js/library/fn/object/set-prototype-of.js","webpack://_N_E/./node_modules/core-js/library/fn/symbol/index.js","webpack://_N_E/./node_modules/core-js/library/fn/symbol/iterator.js","webpack://_N_E/./node_modules/core-js/library/modules/_a-function.js","webpack://_N_E/./node_modules/core-js/library/modules/_add-to-unscopables.js","webpack://_N_E/./node_modules/core-js/library/modules/_an-object.js","webpack://_N_E/./node_modules/core-js/library/modules/_array-includes.js","webpack://_N_E/./node_modules/core-js/library/modules/_cof.js","webpack://_N_E/./node_modules/core-js/library/modules/_core.js","webpack://_N_E/./node_modules/core-js/library/modules/_ctx.js","webpack://_N_E/./node_modules/core-js/library/modules/_defined.js","webpack://_N_E/./node_modules/core-js/library/modules/_descriptors.js","webpack://_N_E/./node_modules/core-js/library/modules/_dom-create.js","webpack://_N_E/./node_modules/core-js/library/modules/_enum-bug-keys.js","webpack://_N_E/./node_modules/core-js/library/modules/_enum-keys.js","webpack://_N_E/./node_modules/core-js/library/modules/_export.js","webpack://_N_E/./node_modules/core-js/library/modules/_fails.js","webpack://_N_E/./node_modules/core-js/library/modules/_global.js","webpack://_N_E/./node_modules/core-js/library/modules/_has.js","webpack://_N_E/./node_modules/core-js/library/modules/_hide.js","webpack://_N_E/./node_modules/core-js/library/modules/_html.js","webpack://_N_E/./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://_N_E/./node_modules/core-js/library/modules/_iobject.js","webpack://_N_E/./node_modules/core-js/library/modules/_is-array.js","webpack://_N_E/./node_modules/core-js/library/modules/_is-object.js","webpack://_N_E/./node_modules/core-js/library/modules/_iter-create.js","webpack://_N_E/./node_modules/core-js/library/modules/_iter-define.js","webpack://_N_E/./node_modules/core-js/library/modules/_iter-step.js","webpack://_N_E/./node_modules/core-js/library/modules/_iterators.js","webpack://_N_E/./node_modules/core-js/library/modules/_library.js","webpack://_N_E/./node_modules/core-js/library/modules/_meta.js","webpack://_N_E/./node_modules/core-js/library/modules/_object-assign.js","webpack://_N_E/./node_modules/core-js/library/modules/_object-create.js","webpack://_N_E/./node_modules/core-js/library/modules/_object-dp.js","webpack://_N_E/./node_modules/core-js/library/modules/_object-dps.js","webpack://_N_E/./node_modules/core-js/library/modules/_object-gopd.js","webpack://_N_E/./node_modules/core-js/library/modules/_object-gopn-ext.js","webpack://_N_E/./node_modules/core-js/library/modules/_object-gopn.js","webpack://_N_E/./node_modules/core-js/library/modules/_object-gops.js","webpack://_N_E/./node_modules/core-js/library/modules/_object-gpo.js","webpack://_N_E/./node_modules/core-js/library/modules/_object-keys-internal.js","webpack://_N_E/./node_modules/core-js/library/modules/_object-keys.js","webpack://_N_E/./node_modules/core-js/library/modules/_object-pie.js","webpack://_N_E/./node_modules/core-js/library/modules/_object-sap.js","webpack://_N_E/./node_modules/core-js/library/modules/_property-desc.js","webpack://_N_E/./node_modules/core-js/library/modules/_redefine.js","webpack://_N_E/./node_modules/core-js/library/modules/_set-proto.js","webpack://_N_E/./node_modules/core-js/library/modules/_set-to-string-tag.js","webpack://_N_E/./node_modules/core-js/library/modules/_shared-key.js","webpack://_N_E/./node_modules/core-js/library/modules/_shared.js","webpack://_N_E/./node_modules/core-js/library/modules/_string-at.js","webpack://_N_E/./node_modules/core-js/library/modules/_to-absolute-index.js","webpack://_N_E/./node_modules/core-js/library/modules/_to-integer.js","webpack://_N_E/./node_modules/core-js/library/modules/_to-iobject.js","webpack://_N_E/./node_modules/core-js/library/modules/_to-length.js","webpack://_N_E/./node_modules/core-js/library/modules/_to-object.js","webpack://_N_E/./node_modules/core-js/library/modules/_to-primitive.js","webpack://_N_E/./node_modules/core-js/library/modules/_uid.js","webpack://_N_E/./node_modules/core-js/library/modules/_wks-define.js","webpack://_N_E/./node_modules/core-js/library/modules/_wks-ext.js","webpack://_N_E/./node_modules/core-js/library/modules/_wks.js","webpack://_N_E/./node_modules/core-js/library/modules/es6.array.iterator.js","webpack://_N_E/./node_modules/core-js/library/modules/es6.object.assign.js","webpack://_N_E/./node_modules/core-js/library/modules/es6.object.create.js","webpack://_N_E/./node_modules/core-js/library/modules/es6.object.define-property.js","webpack://_N_E/./node_modules/core-js/library/modules/es6.object.get-prototype-of.js","webpack://_N_E/./node_modules/core-js/library/modules/es6.object.set-prototype-of.js","webpack://_N_E/./node_modules/core-js/library/modules/es6.string.iterator.js","webpack://_N_E/./node_modules/core-js/library/modules/es6.symbol.js","webpack://_N_E/./node_modules/core-js/library/modules/es7.symbol.async-iterator.js","webpack://_N_E/./node_modules/core-js/library/modules/es7.symbol.observable.js","webpack://_N_E/./node_modules/core-js/library/modules/web.dom.iterable.js","webpack://_N_E/./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://_N_E/./node_modules/graphql/jsutils/invariant.mjs","webpack://_N_E/./node_modules/graphql/language/location.mjs","webpack://_N_E/./node_modules/graphql/language/printLocation.mjs","webpack://_N_E/./node_modules/graphql/error/GraphQLError.mjs","webpack://_N_E/./node_modules/graphql/jsutils/isObjectLike.mjs","webpack://_N_E/./node_modules/graphql/error/syntaxError.mjs","webpack://_N_E/./node_modules/graphql/language/directiveLocation.mjs","webpack://_N_E/./node_modules/graphql/language/tokenKind.mjs","webpack://_N_E/./node_modules/graphql/language/lexer.mjs","webpack://_N_E/./node_modules/graphql/language/parser.mjs","webpack://_N_E/./node_modules/graphql-tag/lib/index.js","webpack://_N_E/./node_modules/lottie-web/build/player/lottie.js","webpack://_N_E/./node_modules/next/dist/build/polyfills/process.js","webpack://_N_E/?adc8","webpack://_N_E/./components/Loader/Loader.tsx","webpack://_N_E/./assets/svg/rastel_title.svg","webpack://_N_E/./components/common/AppHero/AppHero.tsx","webpack://_N_E/./node_modules/@wry/trie/lib/trie.esm.js","webpack://_N_E/./node_modules/@wry/context/lib/context.esm.js","webpack://_N_E/./node_modules/optimism/lib/bundle.esm.js","webpack://_N_E/./node_modules/@apollo/client/cache/inmemory/reactiveVars.js","webpack://_N_E/./node_modules/zen-observable-ts/module.js","webpack://_N_E/./node_modules/@apollo/client/utilities/graphql/fragments.js","webpack://_N_E/./node_modules/@apollo/client/utilities/graphql/storeUtils.js","webpack://_N_E/./node_modules/@apollo/client/utilities/graphql/getFromAST.js","webpack://_N_E/./node_modules/@apollo/client/link/core/ApolloLink.js","webpack://_N_E/./node_modules/@apollo/client/link/utils/createOperation.js","webpack://_N_E/./node_modules/@apollo/client/link/utils/transformOperation.js","webpack://_N_E/./node_modules/@apollo/client/link/utils/validateOperation.js","webpack://_N_E/./node_modules/graphql/language/visitor.mjs","webpack://_N_E/./node_modules/@apollo/client/link/http/serializeFetchParameter.js","webpack://_N_E/./node_modules/@apollo/client/link/utils/throwServerError.js","webpack://_N_E/./node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js","webpack://_N_E/./node_modules/@apollo/client/link/http/checkFetcher.js","webpack://_N_E/./node_modules/graphql/language/printString.mjs","webpack://_N_E/./node_modules/graphql/language/printer.mjs","webpack://_N_E/./node_modules/@apollo/client/link/http/selectHttpOptionsAndBody.js","webpack://_N_E/./node_modules/@apollo/client/link/utils/fromError.js","webpack://_N_E/./node_modules/@apollo/client/link/http/createHttpLink.js","webpack://_N_E/./node_modules/@apollo/client/link/http/selectURI.js","webpack://_N_E/./node_modules/@apollo/client/link/http/createSignalIfSupported.js","webpack://_N_E/./node_modules/@apollo/client/link/http/rewriteURIForGET.js","webpack://_N_E/./node_modules/@apollo/client/link/http/HttpLink.js","webpack://_N_E/./node_modules/@apollo/client/link/core/execute.js","webpack://_N_E/./node_modules/@apollo/client/utilities/graphql/directives.js","webpack://_N_E/./node_modules/@apollo/client/utilities/common/mergeDeep.js","webpack://_N_E/./node_modules/@apollo/client/cache/inmemory/helpers.js","webpack://_N_E/./node_modules/@apollo/client/cache/inmemory/object-canon.js","webpack://_N_E/./node_modules/@apollo/client/utilities/observables/asyncMap.js","webpack://_N_E/./node_modules/@apollo/client/utilities/common/errorHandling.js","webpack://_N_E/./node_modules/@apollo/client/utilities/common/filterInPlace.js","webpack://_N_E/./node_modules/@apollo/client/utilities/graphql/transform.js","webpack://_N_E/./node_modules/@apollo/client/utilities/common/makeUniqueId.js","webpack://_N_E/./node_modules/@apollo/client/utilities/observables/iteration.js","webpack://_N_E/./node_modules/@apollo/client/utilities/observables/subclassing.js","webpack://_N_E/./node_modules/@apollo/client/utilities/observables/Concast.js","webpack://_N_E/./node_modules/@apollo/client/utilities/common/cloneDeep.js","webpack://_N_E/./node_modules/@apollo/client/core/ObservableQuery.js","webpack://_N_E/./node_modules/@apollo/client/core/LocalState.js","webpack://_N_E/./node_modules/@apollo/client/core/QueryInfo.js","webpack://_N_E/./node_modules/@apollo/client/core/QueryManager.js","webpack://_N_E/./node_modules/@apollo/client/core/ApolloClient.js","webpack://_N_E/./node_modules/@apollo/client/version.js","webpack://_N_E/./node_modules/@apollo/client/cache/core/cache.js","webpack://_N_E/./node_modules/@apollo/client/cache/core/types/common.js","webpack://_N_E/./node_modules/@apollo/client/cache/inmemory/entityStore.js","webpack://_N_E/./node_modules/@apollo/client/cache/inmemory/readFromStore.js","webpack://_N_E/./node_modules/@apollo/client/cache/inmemory/key-extractor.js","webpack://_N_E/./node_modules/@apollo/client/cache/inmemory/policies.js","webpack://_N_E/./node_modules/@apollo/client/utilities/common/stringifyForDisplay.js","webpack://_N_E/./node_modules/@apollo/client/cache/inmemory/writeToStore.js","webpack://_N_E/./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js","webpack://_N_E/./node_modules/@apollo/client/link/error/index.js","webpack://_N_E/./node_modules/@apollo/client/link/context/index.js","webpack://_N_E/./lib/apollo.ts","webpack://_N_E/./node_modules/@apollo/client/react/context/ApolloProvider.js","webpack://_N_E/./graphql/auth/currentUserQuery.ts","webpack://_N_E/./graphql/auth/forgotPassword/redeemForgotPasswordTokenMutation.ts","webpack://_N_E/./graphql/auth/loginWithPasswordMutation.ts","webpack://_N_E/./graphql/auth/registerRiderMutation.ts","webpack://_N_E/./lib/auth.tsx","webpack://_N_E/./node_modules/@stripe/stripe-js/dist/stripe.esm.js","webpack://_N_E/./lib/stripe.ts","webpack://_N_E/./ni18n.config.ts","webpack://_N_E/./assets/svg/map.svg","webpack://_N_E/./components/GoogleAnalytics.tsx","webpack://_N_E/./assets/svg/profile.svg","webpack://_N_E/./assets/svg/car.svg","webpack://_N_E/./lib/routes.tsx","webpack://_N_E/./components/layout/BottomNav/BottomNav.tsx","webpack://_N_E/./components/layout/Page/Page.tsx","webpack://_N_E/./components/layout/AppContainer/AppContainer.tsx","webpack://_N_E/./components/common/MobileOnly/MobileOnly.tsx","webpack://_N_E/./node_modules/i18next/dist/esm/i18next.js","webpack://_N_E/./node_modules/i18next-http-backend/esm/utils.js","webpack://_N_E/./node_modules/i18next-http-backend/esm/request.js","webpack://_N_E/./node_modules/i18next-http-backend/esm/index.js","webpack://_N_E/./node_modules/ni18n/dist/esm/create-i18n-instance/is-browser.js","webpack://_N_E/./node_modules/ni18n/dist/esm/create-i18n-instance/get-backend-config.js","webpack://_N_E/./node_modules/ni18n/dist/esm/create-i18n-instance/create-i18n-instance.js","webpack://_N_E/./node_modules/ni18n/dist/esm/use-backend/browser.js","webpack://_N_E/./node_modules/ni18n/dist/esm/app-with-i18next/app-with-i18next.js","webpack://_N_E/./pages/_app.tsx","webpack://_N_E/./node_modules/ni18n/dist/esm/common/unique-array.js","webpack://_N_E/./node_modules/ni18n/dist/esm/use-sync-language/use-sync-language.js","webpack://_N_E/./utils/utilsDevice.ts","webpack://_N_E/./node_modules/@sentry/core/esm/version.js","webpack://_N_E/./node_modules/@sentry/core/esm/integration.js","webpack://_N_E/./node_modules/@sentry/core/esm/integrations/inboundfilters.js","webpack://_N_E/./node_modules/@sentry/core/esm/integrations/functiontostring.js","webpack://_N_E/./node_modules/@sentry/utils/esm/error.js","webpack://_N_E/./node_modules/@sentry/utils/esm/dsn.js","webpack://_N_E/./node_modules/@sentry/utils/esm/envelope.js","webpack://_N_E/./node_modules/@sentry/core/esm/api.js","webpack://_N_E/./node_modules/@sentry/core/esm/envelope.js","webpack://_N_E/./node_modules/@sentry/core/esm/baseclient.js","webpack://_N_E/./node_modules/@sentry/browser/esm/eventbuilder.js","webpack://_N_E/./node_modules/@sentry/utils/esm/severity.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/utils.js","webpack://_N_E/./node_modules/@sentry/browser/esm/client.js","webpack://_N_E/./node_modules/@sentry/utils/esm/clientreport.js","webpack://_N_E/./node_modules/@sentry/browser/esm/stack-parsers.js","webpack://_N_E/./node_modules/@sentry/browser/esm/helpers.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/trycatch.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/globalhandlers.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/linkederrors.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/dedupe.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/httpcontext.js","webpack://_N_E/./node_modules/@sentry/utils/esm/promisebuffer.js","webpack://_N_E/./node_modules/@sentry/utils/esm/ratelimit.js","webpack://_N_E/./node_modules/@sentry/core/esm/transports/base.js","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/fetch.js","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/xhr.js","webpack://_N_E/./node_modules/@sentry/browser/esm/sdk.js","webpack://_N_E/./node_modules/@sentry/core/esm/sdk.js","webpack://_N_E/./node_modules/@sentry/utils/esm/tracing.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/backgroundtab.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/bindReporter.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/initMetric.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/generateUniqueID.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/observe.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/onHidden.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/getLCP.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/metrics/utils.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/metrics/index.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/getCLS.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/getFID.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/request.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/router.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/browsertracing.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/index.js","webpack://_N_E/./node_modules/@sentry/nextjs/esm/performance/client.js","webpack://_N_E/./node_modules/@sentry/nextjs/esm/utils/userIntegrations.js","webpack://_N_E/./node_modules/@sentry/nextjs/esm/index.client.js","webpack://_N_E/./node_modules/@sentry/nextjs/esm/utils/metadata.js","webpack://_N_E/./node_modules/@sentry/react/esm/sdk.js","webpack://_N_E/./sentry.client.config.js","webpack://_N_E/./utils/utilsLanguage.ts","webpack://_N_E/./utils/utilsToken.ts","webpack://_N_E/./node_modules/next/dist/compiled/path-browserify/index.js","webpack://_N_E/./node_modules/next/dist/compiled/process/browser.js","webpack://_N_E/./node_modules/next/router.js","webpack://_N_E/./node_modules/next/script.js","webpack://_N_E/./node_modules/nextjs-progressbar/dist/index.js","webpack://_N_E/./node_modules/nprogress/nprogress.js","webpack://_N_E/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://_N_E/./node_modules/prop-types/index.js","webpack://_N_E/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://_N_E/./node_modules/qrcode.react/lib/esm/index.js","webpack://_N_E/./node_modules/react-lottie/dist/index.js","webpack://_N_E/./node_modules/tslib/tslib.es6.js","webpack://_N_E/./node_modules/void-elements/index.js","webpack://_N_E/./node_modules/i18next-http-backend/esm/getFetch.cjs","webpack://_N_E/./node_modules/@apollo/client/core/networkStatus.js","webpack://_N_E/./node_modules/@apollo/client/errors/index.js","webpack://_N_E/./node_modules/@apollo/client/react/context/ApolloContext.js","webpack://_N_E/./node_modules/@apollo/client/utilities/common/arrays.js","webpack://_N_E/./node_modules/@apollo/client/utilities/common/canUse.js","webpack://_N_E/./node_modules/@apollo/client/utilities/common/compact.js","webpack://_N_E/./node_modules/@apollo/client/utilities/common/maybeDeepFreeze.js","webpack://_N_E/./node_modules/@apollo/client/utilities/common/mergeOptions.js","webpack://_N_E/./node_modules/@apollo/client/utilities/common/objects.js","webpack://_N_E/./node_modules/ts-invariant/lib/invariant.js","webpack://_N_E/./node_modules/@apollo/client/utilities/globals/maybe.js","webpack://_N_E/./node_modules/@apollo/client/utilities/globals/global.js","webpack://_N_E/./node_modules/@apollo/client/utilities/globals/DEV.js","webpack://_N_E/./node_modules/ts-invariant/process/index.js","webpack://_N_E/./node_modules/@apollo/client/utilities/globals/fix-graphql.js","webpack://_N_E/./node_modules/@apollo/client/utilities/globals/index.js","webpack://_N_E/./node_modules/@swc/helpers/src/_async_to_generator.mjs","webpack://_N_E/./node_modules/@swc/helpers/src/_define_property.mjs","webpack://_N_E/./node_modules/@swc/helpers/src/_object_spread.mjs","webpack://_N_E/./node_modules/@swc/helpers/src/_object_spread_props.mjs","webpack://_N_E/./node_modules/@swc/helpers/src/_object_without_properties.mjs","webpack://_N_E/./node_modules/@swc/helpers/src/_object_without_properties_loose.mjs","webpack://_N_E/./node_modules/@swc/helpers/src/_tagged_template_literal.mjs","webpack://_N_E/./node_modules/graphql/jsutils/devAssert.mjs","webpack://_N_E/./node_modules/graphql/jsutils/inspect.mjs","webpack://_N_E/./node_modules/graphql/language/ast.mjs","webpack://_N_E/./node_modules/graphql/language/blockString.mjs","webpack://_N_E/./node_modules/graphql/language/characterClasses.mjs","webpack://_N_E/./node_modules/graphql/language/kinds.mjs","webpack://_N_E/./node_modules/graphql/jsutils/instanceOf.mjs","webpack://_N_E/./node_modules/graphql/language/source.mjs","webpack://_N_E/./node_modules/goober/dist/goober.modern.js","webpack://_N_E/./node_modules/react-hot-toast/dist/index.mjs","webpack://_N_E/./node_modules/html-parse-stringify/dist/html-parse-stringify.module.js","webpack://_N_E/./node_modules/react-i18next/dist/es/utils.js","webpack://_N_E/./node_modules/react-i18next/dist/es/unescape.js","webpack://_N_E/./node_modules/react-i18next/dist/es/defaults.js","webpack://_N_E/./node_modules/react-i18next/dist/es/i18nInstance.js","webpack://_N_E/./node_modules/react-i18next/dist/es/initReactI18next.js","webpack://_N_E/./node_modules/react-i18next/dist/es/context.js","webpack://_N_E/./node_modules/react-i18next/dist/es/useTranslation.js","webpack://_N_E/./node_modules/react-i18next/dist/es/I18nextProvider.js"],"sourcesContent":["import { getCurrentHub } from './hub.js';\n\n// Note: All functions in this file are typed with a return value of `ReturnType`,\n// where HUB_FUNCTION is some method on the Hub class.\n//\n// This is done to make sure the top level SDK methods stay in sync with the hub methods.\n// Although every method here has an explicit return type, some of them (that map to void returns) do not\n// contain `return` keywords. This is done to save on bundle size, as `return` is not minifiable.\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @param captureContext Additional scope data to apply to exception event.\n * @returns The generated eventId.\n */\nfunction captureException(exception, captureContext) {\n return getCurrentHub().captureException(exception, { captureContext });\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param Severity Define the level of the message.\n * @returns The generated eventId.\n */\nfunction captureMessage(\n message,\n captureContext,\n) {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n var level = typeof captureContext === 'string' ? captureContext : undefined;\n var context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nfunction captureEvent(event, hint) {\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nfunction configureScope(callback) {\n getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nfunction addBreadcrumb(breadcrumb) {\n getCurrentHub().addBreadcrumb(breadcrumb);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\nfunction setContext(name, context) {\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nfunction setExtras(extras) {\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nfunction setExtra(key, extra) {\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nfunction setTags(tags) {\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nfunction setTag(key, value) {\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nfunction setUser(user) {\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nfunction withScope(callback) {\n getCurrentHub().withScope(callback);\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nfunction startTransaction(\n context,\n customSamplingContext,\n) {\n return getCurrentHub().startTransaction(\n {\n metadata: { source: 'custom' },\n ...context,\n },\n customSamplingContext,\n );\n}\n\nexport { addBreadcrumb, captureEvent, captureException, captureMessage, configureScope, setContext, setExtra, setExtras, setTag, setTags, setUser, startTransaction, withScope };\n//# sourceMappingURL=exports.js.map\n","import { uuid4, dateTimestampInSeconds, consoleSandbox, logger, getGlobalObject, getGlobalSingleton, isNodeEnv } from '@sentry/utils';\nimport { Scope } from './scope.js';\nimport { closeSession, makeSession, updateSession } from './session.js';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nvar API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nvar DEFAULT_BREADCRUMBS = 100;\n\n/**\n * A layer in the process stack.\n * @hidden\n */\n\n/**\n * @inheritDoc\n */\nclass Hub {\n /** Is a {@link Layer}[] containing the client and scope */\n __init() {this._stack = [{}];}\n\n /** Contains the last event id of a captured event. */\n \n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n constructor(client, scope = new Scope(), _version = API_VERSION) {;this._version = _version;Hub.prototype.__init.call(this);\n this.getStackTop().scope = scope;\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n isOlderThan(version) {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n bindClient(client) {\n var top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n pushScope() {\n // We want to clone the content of prev scope\n var scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n popScope() {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n withScope(callback) {\n var scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n getClient() {\n return this.getStackTop().client ;\n }\n\n /** Returns the scope of the top stack. */\n getScope() {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n getStack() {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n getStackTop() {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n captureException(exception, hint) {\n var eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n var syntheticException = new Error('Sentry syntheticException');\n this._withClient((client, scope) => {\n client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(\n message,\n level,\n hint,\n ) {\n var eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n var syntheticException = new Error(message);\n this._withClient((client, scope) => {\n client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint) {\n var eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (event.type !== 'transaction') {\n this._lastEventId = eventId;\n }\n\n this._withClient((client, scope) => {\n client.captureEvent(event, { ...hint, event_id: eventId }, scope);\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n lastEventId() {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, hint) {\n const { scope, client } = this.getStackTop();\n\n if (!scope || !client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n var timestamp = dateTimestampInSeconds();\n var mergedBreadcrumb = { timestamp, ...breadcrumb };\n var finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) )\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n var scope = this.getScope();\n if (scope) scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n var scope = this.getScope();\n if (scope) scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n var scope = this.getScope();\n if (scope) scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n var scope = this.getScope();\n if (scope) scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n var scope = this.getScope();\n if (scope) scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n setContext(name, context) {\n var scope = this.getScope();\n if (scope) scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n configureScope(callback) {\n const { scope, client } = this.getStackTop();\n if (scope && client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n run(callback) {\n var oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n getIntegration(integration) {\n var client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n startTransaction(context, customSamplingContext) {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n }\n\n /**\n * @inheritDoc\n */\n traceHeaders() {\n return this._callExtensionMethod('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n captureSession(endSession = false) {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n endSession() {\n var layer = this.getStackTop();\n var scope = layer && layer.scope;\n var session = scope && scope.getSession();\n if (session) {\n closeSession(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n if (scope) {\n scope.setSession();\n }\n }\n\n /**\n * @inheritDoc\n */\n startSession(context) {\n const { scope, client } = this.getStackTop();\n const { release, environment } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n var global = getGlobalObject();\n const { userAgent } = global.navigator || {};\n\n var session = makeSession({\n release,\n environment,\n ...(scope && { user: scope.getUser() }),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n if (scope) {\n // End existing session if there's one\n var currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n }\n\n return session;\n }\n\n /**\n * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n * when Tracing is used.\n */\n shouldSendDefaultPii() {\n var client = this.getClient();\n var options = client && client.getOptions();\n return Boolean(options && options.sendDefaultPii);\n }\n\n /**\n * Sends the current Session on the scope\n */\n _sendSessionUpdate() {\n const { scope, client } = this.getStackTop();\n if (!scope) return;\n\n var session = scope.getSession();\n if (session) {\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n _withClient(callback) {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(client, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n _callExtensionMethod(method, ...args) {\n var carrier = getMainCarrier();\n var sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nfunction getMainCarrier() {\n var carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nfunction makeMain(hub) {\n var registry = getMainCarrier();\n var oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nfunction getCurrentHub() {\n // Get main carrier (global for every environment)\n var registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry) {\n try {\n var sentry = getMainCarrier().__SENTRY__;\n var activeDomain = sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n var registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier) {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nfunction getHubFromCarrier(carrier) {\n return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nfunction setHubOnCarrier(carrier, hub) {\n if (!carrier) return false;\n var __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n\nexport { API_VERSION, Hub, getCurrentHub, getHubFromCarrier, getMainCarrier, makeMain, setHubOnCarrier };\n//# sourceMappingURL=hub.js.map\n","import { isPlainObject, dateTimestampInSeconds, getGlobalSingleton, SyncPromise, logger, isThenable } from '@sentry/utils';\nimport { updateSession } from './session.js';\n\n/**\n * Absolute maximum number of breadcrumbs added to an event.\n * The `maxBreadcrumbs` option cannot be higher than this value.\n */\nvar MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nclass Scope {\n /** Flag if notifying is happening. */\n \n\n /** Callback for client to receive scope changes. */\n \n\n /** Callback list that will be called after {@link applyToEvent}. */\n \n\n /** Array of breadcrumbs. */\n \n\n /** User */\n \n\n /** Tags */\n \n\n /** Extra */\n \n\n /** Contexts */\n \n\n /** Attachments */\n \n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n \n\n /** Fingerprint */\n \n\n /** Severity */\n \n\n /** Transaction Name */\n \n\n /** Span */\n \n\n /** Session */\n \n\n /** Request Mode Session Status */\n \n\n constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n }\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n static clone(scope) {\n var newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n newScope._attachments = [...scope._attachments];\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n addScopeListener(callback) {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n addEventProcessor(callback) {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n this._user = user || {};\n if (this._session) {\n updateSession(this._session, { user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getUser() {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n getRequestSession() {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n setRequestSession(requestSession) {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setFingerprint(fingerprint) {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setLevel(\n level,\n ) {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTransactionName(name) {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setContext(key, context) {\n if (context === null) {\n delete this._contexts[key];\n } else {\n this._contexts = { ...this._contexts, [key]: context };\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setSpan(span) {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSpan() {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n getTransaction() {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n var span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n setSession(session) {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSession() {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n update(captureContext) {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n var updatedScope = (captureContext )(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n } else if (isPlainObject(captureContext)) {\n captureContext = captureContext ;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n clear() {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, maxBreadcrumbs) {\n var maxCrumbs = typeof maxBreadcrumbs === 'number' ? Math.min(maxBreadcrumbs, MAX_BREADCRUMBS) : MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n var mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n clearBreadcrumbs() {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addAttachment(attachment) {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getAttachments() {\n return this._attachments;\n }\n\n /**\n * @inheritDoc\n */\n clearAttachments() {\n this._attachments = [];\n return this;\n }\n\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional information about the original exception.\n * @hidden\n */\n applyToEvent(event, hint = {}) {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n var transactionName = this._span.transaction && this._span.transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = { ...event.sdkProcessingMetadata, ...this._sdkProcessingMetadata };\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n setSDKProcessingMetadata(newData) {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n _notifyEventProcessors(\n processors,\n event,\n hint,\n index = 0,\n ) {\n return new SyncPromise((resolve, reject) => {\n var processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n var result = processor({ ...event }, hint) ;\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n processor.id &&\n result === null &&\n logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n _notifyScopeListeners() {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n _applyFingerprint(event) {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors() {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nfunction addGlobalEventProcessor(callback) {\n getGlobalEventProcessors().push(callback);\n}\n\nexport { Scope, addGlobalEventProcessor };\n//# sourceMappingURL=scope.js.map\n","import { timestampInSeconds, uuid4, dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nfunction makeSession(context) {\n // Both timestamp and started are in seconds since the UNIX epoch.\n var startingTime = timestampInSeconds();\n\n var session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\nfunction updateSession(session, context = {}) {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n var duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nfunction closeSession(session, status) {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session) {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n\nexport { closeSession, makeSession, updateSession };\n//# sourceMappingURL=session.js.map\n","import { addInstrumentationHandler, logger } from '@sentry/utils';\nimport { getActiveTransaction } from './utils.js';\n\n/**\n * Configures global error listeners\n */\nfunction registerErrorInstrumentation() {\n addInstrumentationHandler('error', errorCallback);\n addInstrumentationHandler('unhandledrejection', errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback() {\n var activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n var status = 'internal_error';\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n\nexport { registerErrorInstrumentation };\n//# sourceMappingURL=errors.js.map\n","import { getMainCarrier } from '@sentry/hub';\nimport { logger, isNaN, dynamicRequire, loadModule, isNodeEnv } from '@sentry/utils';\nimport { registerErrorInstrumentation } from './errors.js';\nimport { IdleTransaction } from './idletransaction.js';\nimport { Transaction } from './transaction.js';\nimport { hasTracingEnabled } from './utils.js';\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders() {\n var scope = this.getScope();\n if (scope) {\n var span = scope.getSpan();\n if (span) {\n return {\n 'sentry-trace': span.toTraceparent(),\n };\n }\n }\n return {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(\n transaction,\n options,\n samplingContext,\n) {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.setMetadata({\n transactionSampling: { method: 'explicitly_set' },\n });\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_sampler',\n // cast to number in case it's a boolean\n rate: Number(sampleRate),\n },\n });\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n transaction.setMetadata({\n transactionSampling: { method: 'inheritance' },\n });\n } else {\n sampleRate = options.tracesSampleRate;\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_rate',\n // cast to number in case it's a boolean\n rate: Number(sampleRate),\n },\n });\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < (sampleRate );\n\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate) {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n \n transactionContext,\n customSamplingContext,\n) {\n var client = this.getClient();\n var options = (client && client.getOptions()) || {};\n\n let transaction = new Transaction(transactionContext, this);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nfunction startIdleTransaction(\n hub,\n transactionContext,\n idleTimeout,\n finalTimeout,\n onScope,\n customSamplingContext,\n) {\n var client = hub.getClient();\n var options = (client && client.getOptions()) || {};\n\n let transaction = new IdleTransaction(transactionContext, hub, idleTimeout, finalTimeout, onScope);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n return transaction;\n}\n\n/**\n * @private\n */\nfunction _addTracingExtensions() {\n var carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n}\n\n/**\n * @private\n */\nfunction _autoloadDatabaseIntegrations() {\n var carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n\n var packageToIntegrationMapping = {\n mongodb() {\n var integration = dynamicRequire(module, './integrations/node/mongo') \n\n;\n return new integration.Mongo();\n },\n mongoose() {\n var integration = dynamicRequire(module, './integrations/node/mongo') \n\n;\n return new integration.Mongo({ mongoose: true });\n },\n mysql() {\n var integration = dynamicRequire(module, './integrations/node/mysql') \n\n;\n return new integration.Mysql();\n },\n pg() {\n var integration = dynamicRequire(module, './integrations/node/postgres') \n\n;\n return new integration.Postgres();\n },\n };\n\n var mappedPackages = Object.keys(packageToIntegrationMapping)\n .filter(moduleName => !!loadModule(moduleName))\n .map(pkg => {\n try {\n return packageToIntegrationMapping[pkg]();\n } catch (e) {\n return undefined;\n }\n })\n .filter(p => p) ;\n\n if (mappedPackages.length > 0) {\n carrier.__SENTRY__.integrations = [...(carrier.__SENTRY__.integrations || []), ...mappedPackages];\n }\n}\n\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nfunction addExtensionMethods() {\n _addTracingExtensions();\n\n // Detect and automatically load specified integrations.\n if (isNodeEnv()) {\n _autoloadDatabaseIntegrations();\n }\n\n // If an error happens globally, we should make sure transaction status is set to error.\n registerErrorInstrumentation();\n}\n\nexport { _addTracingExtensions, addExtensionMethods, startIdleTransaction };\n//# sourceMappingURL=hubextensions.js.map\n","import { timestampWithMs, logger } from '@sentry/utils';\nimport { SpanRecorder } from './span.js';\nimport { Transaction } from './transaction.js';\n\nvar DEFAULT_IDLE_TIMEOUT = 1000;\nvar DEFAULT_FINAL_TIMEOUT = 30000;\nvar HEARTBEAT_INTERVAL = 5000;\n\n/**\n * @inheritDoc\n */\nclass IdleTransactionSpanRecorder extends SpanRecorder {\n constructor(\n _pushActivity,\n _popActivity,\n transactionSpanId,\n maxlen,\n ) {\n super(maxlen);this._pushActivity = _pushActivity;this._popActivity = _popActivity;this.transactionSpanId = transactionSpanId;;\n }\n\n /**\n * @inheritDoc\n */\n add(span) {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanId !== this.transactionSpanId) {\n // We patch span.finish() to pop an activity after setting an endTimestamp.\n span.finish = (endTimestamp) => {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n this._popActivity(span.spanId);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (span.endTimestamp === undefined) {\n this._pushActivity(span.spanId);\n }\n }\n\n super.add(span);\n }\n}\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nclass IdleTransaction extends Transaction {\n // Activities store a list of active spans\n __init() {this.activities = {};}\n\n // Track state of activities in previous heartbeat\n \n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n __init2() {this._heartbeatCounter = 0;}\n\n // We should not use heartbeat if we finished a transaction\n __init3() {this._finished = false;}\n\n __init4() {this._beforeFinishCallbacks = [];}\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n \n\n constructor(\n transactionContext,\n _idleHub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n _idleTimeout = DEFAULT_IDLE_TIMEOUT,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n _finalTimeout = DEFAULT_FINAL_TIMEOUT,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n _onScope = false,\n ) {\n super(transactionContext, _idleHub);this._idleHub = _idleHub;this._idleTimeout = _idleTimeout;this._finalTimeout = _finalTimeout;this._onScope = _onScope;IdleTransaction.prototype.__init.call(this);IdleTransaction.prototype.__init2.call(this);IdleTransaction.prototype.__init3.call(this);IdleTransaction.prototype.__init4.call(this);;\n\n if (_onScope) {\n // There should only be one active transaction on the scope\n clearActiveTransaction(_idleHub);\n\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`);\n _idleHub.configureScope(scope => scope.setSpan(this));\n }\n\n this._startIdleTimeout();\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this.finish();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n finish(endTimestamp = timestampWithMs()) {\n this._finished = true;\n this.activities = {};\n\n if (this.spanRecorder) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n\n for (var callback of this._beforeFinishCallbacks) {\n callback(this, endTimestamp);\n }\n\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === this.spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus('cancelled');\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n var keepSpan = span.startTimestamp < endTimestamp;\n if (!keepSpan) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n '[Tracing] discarding Span since it happened after Transaction was finished',\n JSON.stringify(span, undefined, 2),\n );\n }\n return keepSpan;\n });\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n clearActiveTransaction(this._idleHub);\n }\n\n return super.finish(endTimestamp);\n }\n\n /**\n * Register a callback function that gets excecuted before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n registerBeforeFinishCallback(callback) {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n initSpanRecorder(maxlen) {\n if (!this.spanRecorder) {\n var pushActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n var popActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idletimeout, if there is one\n */\n _cancelIdleTimeout() {\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n }\n }\n\n /**\n * Creates an idletimeout\n */\n _startIdleTimeout(endTimestamp) {\n this._cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this.finish(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n _pushActivity(spanId) {\n this._cancelIdleTimeout();\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n _popActivity(spanId) {\n if (this.activities[spanId]) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] popActivity ${spanId}`);\n delete this.activities[spanId];\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampWithMs is in seconds, timeout is in ms\n var endTimestamp = timestampWithMs() + this._idleTimeout / 1000;\n this._startIdleTimeout(endTimestamp);\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n _beat() {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n var heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter += 1;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this.finish();\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n _pingHeartbeat() {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, HEARTBEAT_INTERVAL);\n }\n}\n\n/**\n * Reset transaction on scope to `undefined`\n */\nfunction clearActiveTransaction(hub) {\n var scope = hub.getScope();\n if (scope) {\n var transaction = scope.getTransaction();\n if (transaction) {\n scope.setSpan(undefined);\n }\n }\n}\n\nexport { DEFAULT_FINAL_TIMEOUT, DEFAULT_IDLE_TIMEOUT, HEARTBEAT_INTERVAL, IdleTransaction, IdleTransactionSpanRecorder };\n//# sourceMappingURL=idletransaction.js.map\n","import { _nullishCoalesce } from '@sentry/utils/esm/buildPolyfills';\nimport { uuid4, timestampWithMs, logger, dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nclass SpanRecorder {\n __init() {this.spans = [];}\n\n constructor(maxlen = 1000) {;SpanRecorder.prototype.__init.call(this);\n this._maxlen = maxlen;\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n add(span) {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nclass Span {\n /**\n * @inheritDoc\n */\n __init2() {this.traceId = uuid4();}\n\n /**\n * @inheritDoc\n */\n __init3() {this.spanId = uuid4().substring(16);}\n\n /**\n * @inheritDoc\n */\n \n\n /**\n * Internal keeper of the status\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * Timestamp in seconds when the span was created.\n */\n __init4() {this.startTimestamp = timestampWithMs();}\n\n /**\n * Timestamp in seconds when the span ended.\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n __init5() {this.tags = {};}\n\n /**\n * @inheritDoc\n */\n __init6() {this.data = {};}\n\n /**\n * List of spans that were finalized\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n constructor(spanContext) {;Span.prototype.__init2.call(this);Span.prototype.__init3.call(this);Span.prototype.__init4.call(this);Span.prototype.__init5.call(this);Span.prototype.__init6.call(this);\n if (!spanContext) {\n return this;\n }\n if (spanContext.traceId) {\n this.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n this.spanId = spanContext.spanId;\n }\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.data) {\n this.data = spanContext.data;\n }\n if (spanContext.tags) {\n this.tags = spanContext.tags;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.startTimestamp) {\n this.startTimestamp = spanContext.startTimestamp;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n }\n\n /**\n * @inheritDoc\n */\n startChild(\n spanContext,\n ) {\n var childSpan = new Span({\n ...spanContext,\n parentSpanId: this.spanId,\n sampled: this.sampled,\n traceId: this.traceId,\n });\n\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n\n childSpan.transaction = this.transaction;\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && childSpan.transaction) {\n var opStr = (spanContext && spanContext.op) || '< unknown op >';\n var nameStr = childSpan.transaction.name || '< unknown name >';\n var idStr = childSpan.transaction.spanId;\n\n var logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n childSpan.transaction.metadata.spanMetadata[childSpan.spanId] = { logMessage };\n logger.log(logMessage);\n }\n\n return childSpan;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setData(key, value) {\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setStatus(value) {\n this.status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setHttpStatus(httpStatus) {\n this.setTag('http.status_code', String(httpStatus));\n var spanStatus = spanStatusfromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n this.setStatus(spanStatus);\n }\n return this;\n }\n\n /**\n * @inheritDoc\n */\n isSuccess() {\n return this.status === 'ok';\n }\n\n /**\n * @inheritDoc\n */\n finish(endTimestamp) {\n if (\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n // Don't call this for transactions\n this.transaction &&\n this.transaction.spanId !== this.spanId\n ) {\n const { logMessage } = this.transaction.metadata.spanMetadata[this.spanId];\n if (logMessage) {\n logger.log((logMessage ).replace('Starting', 'Finishing'));\n }\n }\n\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n }\n\n /**\n * @inheritDoc\n */\n toTraceparent() {\n let sampledString = '';\n if (this.sampled !== undefined) {\n sampledString = this.sampled ? '-1' : '-0';\n }\n return `${this.traceId}-${this.spanId}${sampledString}`;\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n return dropUndefinedKeys({\n data: this.data,\n description: this.description,\n endTimestamp: this.endTimestamp,\n op: this.op,\n parentSpanId: this.parentSpanId,\n sampled: this.sampled,\n spanId: this.spanId,\n startTimestamp: this.startTimestamp,\n status: this.status,\n tags: this.tags,\n traceId: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n updateWithContext(spanContext) {\n this.data = _nullishCoalesce(spanContext.data, () => ( {}));\n this.description = spanContext.description;\n this.endTimestamp = spanContext.endTimestamp;\n this.op = spanContext.op;\n this.parentSpanId = spanContext.parentSpanId;\n this.sampled = spanContext.sampled;\n this.spanId = _nullishCoalesce(spanContext.spanId, () => ( this.spanId));\n this.startTimestamp = _nullishCoalesce(spanContext.startTimestamp, () => ( this.startTimestamp));\n this.status = spanContext.status;\n this.tags = _nullishCoalesce(spanContext.tags, () => ( {}));\n this.traceId = _nullishCoalesce(spanContext.traceId, () => ( this.traceId));\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getTraceContext()\n\n {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n toJSON()\n\n {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId,\n });\n }\n}\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nfunction spanStatusfromHttpCode(httpStatus) {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n\nexport { Span, SpanRecorder, spanStatusfromHttpCode };\n//# sourceMappingURL=span.js.map\n","import { _nullishCoalesce } from '@sentry/utils/esm/buildPolyfills';\nimport { getCurrentHub } from '@sentry/hub';\nimport { logger, dropUndefinedKeys, isBaggageMutable, createBaggage, getSentryBaggageItems } from '@sentry/utils';\nimport { Span, SpanRecorder } from './span.js';\n\n/** JSDoc */\nclass Transaction extends Span {\n \n\n /**\n * The reference to the current hub.\n */\n \n\n __init() {this._measurements = {};}\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n constructor(transactionContext, hub) {\n super(transactionContext);Transaction.prototype.__init.call(this);;\n\n this._hub = hub || getCurrentHub();\n\n this._name = transactionContext.name || '';\n\n this.metadata = {\n ...transactionContext.metadata,\n spanMetadata: {},\n };\n\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n this.transaction = this;\n }\n\n /** Getter for `name` property */\n get name() {\n return this._name;\n }\n\n /** Setter for `name` property, which also sets `source` */\n set name(newName) {\n this._name = newName;\n this.metadata.source = 'custom';\n }\n\n /**\n * JSDoc\n */\n setName(name, source = 'custom') {\n this.name = name;\n this.metadata.source = source;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n initSpanRecorder(maxlen = 1000) {\n if (!this.spanRecorder) {\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * @inheritDoc\n */\n setMeasurement(name, value, unit = '') {\n this._measurements[name] = { value, unit };\n }\n\n /**\n * @inheritDoc\n */\n setMetadata(newMetadata) {\n this.metadata = { ...this.metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n finish(endTimestamp) {\n // This transaction is already finished, so we should not flush it again.\n if (this.endTimestamp !== undefined) {\n return undefined;\n }\n\n if (!this.name) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Transaction has no name, falling back to ``.');\n this.name = '';\n }\n\n // just sets the end timestamp\n super.finish(endTimestamp);\n\n if (this.sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n var client = this._hub.getClient();\n if (client) {\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return undefined;\n }\n\n var finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(s => s !== this && s.endTimestamp) : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n this.endTimestamp = finishedSpans.reduce((prev, current) => {\n if (prev.endTimestamp && current.endTimestamp) {\n return prev.endTimestamp > current.endTimestamp ? prev : current;\n }\n return prev;\n }).endTimestamp;\n }\n\n var metadata = this.metadata;\n\n var transaction = {\n contexts: {\n trace: this.getTraceContext(),\n },\n spans: finishedSpans,\n start_timestamp: this.startTimestamp,\n tags: this.tags,\n timestamp: this.endTimestamp,\n transaction: this.name,\n type: 'transaction',\n sdkProcessingMetadata: {\n ...metadata,\n baggage: this.getBaggage(),\n },\n ...(metadata.source && {\n transaction_info: {\n source: metadata.source,\n },\n }),\n };\n\n var hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n '[Measurements] Adding measurements to transaction',\n JSON.stringify(this._measurements, undefined, 2),\n );\n transaction.measurements = this._measurements;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this.name}.`);\n\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n var spanContext = super.toContext();\n\n return dropUndefinedKeys({\n ...spanContext,\n name: this.name,\n trimEnd: this._trimEnd,\n });\n }\n\n /**\n * @inheritDoc\n */\n updateWithContext(transactionContext) {\n super.updateWithContext(transactionContext);\n\n this.name = _nullishCoalesce(transactionContext.name, () => ( ''));\n\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @experimental\n */\n getBaggage() {\n var existingBaggage = this.metadata.baggage;\n\n // Only add Sentry baggage items to baggage, if baggage does not exist yet or it is still\n // empty and mutable\n var finalBaggage =\n !existingBaggage || isBaggageMutable(existingBaggage)\n ? this._populateBaggageWithSentryValues(existingBaggage)\n : existingBaggage;\n\n // Update the baggage stored on the transaction.\n this.metadata.baggage = finalBaggage;\n\n return finalBaggage;\n }\n\n /**\n * Collects and adds data to the passed baggage object.\n *\n * Note: This function does not explicitly check if the passed baggage object is allowed\n * to be modified. Implicitly, `setBaggageValue` will not make modification to the object\n * if it was already set immutable.\n *\n * After adding the data, the baggage object is set immutable to prevent further modifications.\n *\n * @param baggage\n *\n * @returns modified and immutable baggage object\n */\n _populateBaggageWithSentryValues(baggage = createBaggage({})) {\n var hub = this._hub || getCurrentHub();\n var client = hub && hub.getClient();\n\n if (!client) return baggage;\n\n const { environment, release } = client.getOptions() || {};\n const { publicKey: public_key } = client.getDsn() || {};\n\n var rate = this.metadata && this.metadata.transactionSampling && this.metadata.transactionSampling.rate;\n var sample_rate =\n rate !== undefined\n ? rate.toLocaleString('fullwide', { useGrouping: false, maximumFractionDigits: 16 })\n : undefined;\n\n var scope = hub.getScope();\n const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n var source = this.metadata.source;\n var transaction = source && source !== 'url' ? this.name : undefined;\n\n return createBaggage(\n dropUndefinedKeys({\n environment,\n release,\n transaction,\n user_segment,\n public_key,\n trace_id: this.traceId,\n sample_rate,\n ...getSentryBaggageItems(baggage), // keep user-added values\n } ),\n '',\n false, // set baggage immutable\n );\n }\n}\n\nexport { Transaction };\n//# sourceMappingURL=transaction.js.map\n","import { getCurrentHub } from '@sentry/hub';\nexport { TRACEPARENT_REGEXP, extractTraceparentData, stripUrlQueryAndFragment } from '@sentry/utils';\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nfunction hasTracingEnabled(\n maybeOptions,\n) {\n var client = getCurrentHub().getClient();\n var options = maybeOptions || (client && client.getOptions());\n return !!options && ('tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\n/** Grabs active transaction off scope, if any */\nfunction getActiveTransaction(maybeHub) {\n var hub = maybeHub || getCurrentHub();\n var scope = hub.getScope();\n return scope && (scope.getTransaction() );\n}\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nfunction msToSec(time) {\n return time / 1000;\n}\n\n/**\n * Converts from seconds to milliseconds\n * @param time time in seconds\n */\nfunction secToMs(time) {\n return time * 1000;\n}\n\nexport { getActiveTransaction, hasTracingEnabled, msToSec, secToMs };\n//# sourceMappingURL=utils.js.map\n","import { isString } from './is.js';\nimport { logger } from './logger.js';\n\nvar BAGGAGE_HEADER_NAME = 'baggage';\n\nvar SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nvar SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nvar MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/** Create an instance of Baggage */\nfunction createBaggage(initItems, baggageString = '', mutable = true) {\n return [{ ...initItems }, baggageString, mutable];\n}\n\n/** Get a value from baggage */\nfunction getBaggageValue(baggage, key) {\n return baggage[0][key];\n}\n\n/** Add a value to baggage */\nfunction setBaggageValue(baggage, key, value) {\n if (isBaggageMutable(baggage)) {\n baggage[0][key] = value;\n }\n}\n\n/** Check if the Sentry part of the passed baggage (i.e. the first element in the tuple) is empty */\nfunction isSentryBaggageEmpty(baggage) {\n return Object.keys(baggage[0]).length === 0;\n}\n\n/** Returns Sentry specific baggage values */\nfunction getSentryBaggageItems(baggage) {\n return baggage[0];\n}\n\n/**\n * Returns 3rd party baggage string of @param baggage\n * @param baggage\n */\nfunction getThirdPartyBaggage(baggage) {\n return baggage[1];\n}\n\n/**\n * Checks if baggage is mutable\n * @param baggage\n * @returns true if baggage is mutable, else false\n */\nfunction isBaggageMutable(baggage) {\n return baggage[2];\n}\n\n/**\n * Sets the passed baggage immutable\n * @param baggage\n */\nfunction setBaggageImmutable(baggage) {\n baggage[2] = false;\n}\n\n/** Serialize a baggage object */\nfunction serializeBaggage(baggage) {\n return Object.keys(baggage[0]).reduce((prev, key) => {\n var val = baggage[0][key] ;\n var baggageEntry = `${SENTRY_BAGGAGE_KEY_PREFIX}${encodeURIComponent(key)}=${encodeURIComponent(val)}`;\n var newVal = prev === '' ? baggageEntry : `${prev},${baggageEntry}`;\n if (newVal.length > MAX_BAGGAGE_STRING_LENGTH) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`Not adding key: ${key} with val: ${val} to baggage due to exceeding baggage size limits.`);\n return prev;\n } else {\n return newVal;\n }\n }, baggage[1]);\n}\n\n/**\n * Parse a baggage header from a string or a string array and return a Baggage object\n *\n * If @param includeThirdPartyEntries is set to true, third party baggage entries are added to the Baggage object\n * (This is necessary for merging potentially pre-existing baggage headers in outgoing requests with\n * our `sentry-` values)\n */\nfunction parseBaggageHeader(\n inputBaggageValue,\n includeThirdPartyEntries = false,\n) {\n // Adding this check here because we got reports of this function failing due to the input value\n // not being a string. This debug log might help us determine what's going on here.\n if ((!Array.isArray(inputBaggageValue) && !isString(inputBaggageValue)) || typeof inputBaggageValue === 'number') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n '[parseBaggageHeader] Received input value of incompatible type: ',\n typeof inputBaggageValue,\n inputBaggageValue,\n );\n\n // Gonna early-return an empty baggage object so that we don't fail later on\n return createBaggage({}, '');\n }\n\n var baggageEntries = (isString(inputBaggageValue) ? inputBaggageValue : inputBaggageValue.join(','))\n .split(',')\n .map(entry => entry.trim())\n .filter(entry => entry !== '' && (includeThirdPartyEntries || SENTRY_BAGGAGE_KEY_PREFIX_REGEX.test(entry)));\n\n return baggageEntries.reduce(\n ([baggageObj, baggageString], curr) => {\n const [key, val] = curr.split('=');\n if (SENTRY_BAGGAGE_KEY_PREFIX_REGEX.test(key)) {\n var baggageKey = decodeURIComponent(key.split('-')[1]);\n return [\n {\n ...baggageObj,\n [baggageKey]: decodeURIComponent(val),\n },\n baggageString,\n true,\n ];\n } else {\n return [baggageObj, baggageString === '' ? curr : `${baggageString},${curr}`, true];\n }\n },\n [{}, '', true],\n );\n}\n\n/**\n * Merges the baggage header we saved from the incoming request (or meta tag) with\n * a possibly created or modified baggage header by a third party that's been added\n * to the outgoing request header.\n *\n * In case @param headerBaggageString exists, we can safely add the the 3rd party part of @param headerBaggage\n * with our @param incomingBaggage. This is possible because if we modified anything beforehand,\n * it would only affect parts of the sentry baggage (@see Baggage interface).\n *\n * @param incomingBaggage the baggage header of the incoming request that might contain sentry entries\n * @param thirdPartyBaggageHeader possibly existing baggage header string or string[] added from a third\n * party to the request headers\n *\n * @return a merged and serialized baggage string to be propagated with the outgoing request\n */\nfunction mergeAndSerializeBaggage(incomingBaggage, thirdPartyBaggageHeader) {\n if (!incomingBaggage && !thirdPartyBaggageHeader) {\n return '';\n }\n\n var headerBaggage = (thirdPartyBaggageHeader && parseBaggageHeader(thirdPartyBaggageHeader, true)) || undefined;\n var thirdPartyHeaderBaggage = headerBaggage && getThirdPartyBaggage(headerBaggage);\n\n var finalBaggage = createBaggage((incomingBaggage && incomingBaggage[0]) || {}, thirdPartyHeaderBaggage || '');\n return serializeBaggage(finalBaggage);\n}\n\n/**\n * Helper function that takes a raw baggage string (if available) and the processed sentry-trace header\n * data (if available), parses the baggage string and creates a Baggage object\n * If there is no baggage string, it will create an empty Baggage object.\n * In a second step, this functions determines if the created Baggage object should be set immutable\n * to prevent mutation of the Sentry data.\n *\n * Extracted this logic to a function because it's duplicated in a lot of places.\n *\n * @param rawBaggageValue\n * @param sentryTraceHeader\n */\nfunction parseBaggageSetMutability(\n rawBaggageValue,\n sentryTraceHeader,\n) {\n var baggage = parseBaggageHeader(rawBaggageValue || '');\n\n // Because we are always creating a Baggage object by calling `parseBaggageHeader` above\n // (either a filled one or an empty one, even if we didn't get a `baggage` header),\n // we only need to check if we have a sentry-trace header or not. As soon as we have it,\n // we set baggage immutable. In case we don't get a sentry-trace header, we can assume that\n // this SDK is the head of the trace and thus we still permit mutation at this time.\n // There is one exception though, which is that we get a baggage-header with `sentry-`\n // items but NO sentry-trace header. In this case we also set the baggage immutable for now\n // but if smoething like this would ever happen, we should revisit this and determine\n // what this would actually mean for the trace (i.e. is this SDK the head?, what happened\n // before that we don't have a sentry-trace header?, etc)\n (sentryTraceHeader || !isSentryBaggageEmpty(baggage)) && setBaggageImmutable(baggage);\n\n return baggage;\n}\n\nexport { BAGGAGE_HEADER_NAME, MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, createBaggage, getBaggageValue, getSentryBaggageItems, getThirdPartyBaggage, isBaggageMutable, isSentryBaggageEmpty, mergeAndSerializeBaggage, parseBaggageHeader, parseBaggageSetMutability, serializeBaggage, setBaggageImmutable, setBaggageValue };\n//# sourceMappingURL=baggage.js.map\n","import { getGlobalObject } from './global.js';\nimport { isString } from './is.js';\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction htmlTreeAsString(elem, keyAttrs) {\n \n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem ;\n var MAX_TRAVERSE_HEIGHT = 5;\n var MAX_OUTPUT_LEN = 80;\n var out = [];\n let height = 0;\n let len = 0;\n var separator = ' > ';\n var sepLength = separator.length;\n let nextStr;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el, keyAttrs) {\n var elem = el \n\n;\n\n var out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n var keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n var allowedAttrs = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nfunction getLocationHref() {\n var global = getGlobalObject();\n try {\n return global.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\nexport { getLocationHref, htmlTreeAsString };\n//# sourceMappingURL=browser.js.map\n","/**\n * Polyfill for the nullish coalescing operator (`??`).\n *\n * Note that the RHS is wrapped in a function so that if it's a computed value, that evaluation won't happen unless the\n * LHS evaluates to a nullish value, to mimic the operator's short-circuiting behavior.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n *\n * @param lhs The value of the expression to the left of the `??`\n * @param rhsFn A function returning the value of the expression to the right of the `??`\n * @returns The LHS value, unless it's `null` or `undefined`, in which case, the RHS value\n */\nfunction _nullishCoalesce(lhs, rhsFn) {\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n return lhs != null ? lhs : rhsFn();\n}\n\n// Sucrase version:\n// function _nullishCoalesce(lhs, rhsFn) {\n// if (lhs != null) {\n// return lhs;\n// } else {\n// return rhsFn();\n// }\n// }\n\nexport { _nullishCoalesce };\n//# sourceMappingURL=_nullishCoalesce.js.map\n","import { isNodeEnv } from './node.js';\n\n/** Internal */\n\nvar fallbackGlobalObject = {};\n\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nfunction getGlobalObject() {\n return (\n isNodeEnv()\n ? global\n : typeof window !== 'undefined' ? window : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject\n ) ;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `getGlobalObject`'s return value\n * @returns the singleton\n */\nfunction getGlobalSingleton(name, creator, obj) {\n var global = (obj || getGlobalObject()) ;\n var __SENTRY__ = (global.__SENTRY__ = global.__SENTRY__ || {});\n var singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n\nexport { getGlobalObject, getGlobalSingleton };\n//# sourceMappingURL=global.js.map\n","import { getGlobalObject } from './global.js';\nimport { isInstanceOf, isString } from './is.js';\nimport { logger, CONSOLE_LEVELS } from './logger.js';\nimport { fill } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\nimport { supportsNativeFetch, supportsHistory } from './supports.js';\n\nvar global = getGlobalObject();\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nvar handlers = {};\nvar instrumented = {};\n\n/** Instruments given API */\nfunction instrument(type) {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('unknown instrumentation type:', type);\n return;\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addInstrumentationHandler(type, callback) {\n handlers[type] = handlers[type] || [];\n (handlers[type] ).push(callback);\n instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (var handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole() {\n if (!('console' in global)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level) {\n if (!(level in global.console)) {\n return;\n }\n\n fill(global.console, level, function (originalConsoleMethod) {\n return function (...args) {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleMethod) {\n originalConsoleMethod.apply(global.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch() {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(global, 'fetch', function (originalFetch) {\n return function (...args) {\n var handlerData = {\n args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n return originalFetch.apply(global, args).then(\n (response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs = []) {\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs = []) {\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n\n/** JSDoc */\nfunction instrumentXHR() {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n\n var xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen) {\n return function ( ...args) {\n var xhr = this;\n var url = args[1];\n var xhrInfo = (xhr.__sentry_xhr__ = {\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n });\n\n // if Sentry key appears in URL, don't capture it as a request\n if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n\n var onreadystatechangeHandler = function () {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr,\n });\n }\n };\n\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original) {\n return function (...readyStateArgs) {\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n } else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n return originalOpen.apply(xhr, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend) {\n return function ( ...args) {\n if (this.__sentry_xhr__ && args[0] !== undefined) {\n this.__sentry_xhr__.body = args[0];\n }\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref;\n\n/** JSDoc */\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n\n var oldOnPopState = global.onpopstate;\n global.onpopstate = function ( ...args) {\n var to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n var from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction) {\n return function ( ...args) {\n var url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n var from = lastHref;\n var to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\n\nvar debounceDuration = 1000;\nlet debounceTimerID;\nlet lastCapturedEvent;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous, current) {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event) {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n\n try {\n var target = event.target ;\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler, globalListener = false) {\n return (event) => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n\n var name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = global.setTimeout(() => {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n\n/** JSDoc */\nfunction instrumentDOM() {\n if (!('document' in global)) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n var triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n var globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n global.document.addEventListener('click', globalDOMEventHandler, false);\n global.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target) => {\n var proto = (global )[target] && (global )[target].prototype;\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener) {\n return function (\n \n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n var el = this ;\n var handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n var handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n var handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount += 1;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener) {\n return function (\n \n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n var el = this ;\n var handlers = el.__sentry_instrumentation_handlers__ || {};\n var handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount -= 1;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\nlet _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n _oldOnErrorHandler = global.onerror;\n\n global.onerror = function (msg, url, line, column, error) {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler) {\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n}\n\nlet _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n\n global.onunhandledrejection = function (e) {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler) {\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n}\n\nexport { addInstrumentationHandler };\n//# sourceMappingURL=instrument.js.map\n","var objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isError(wat) {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n\nfunction isBuiltin(wat, ty) {\n return objectToString.call(wat) === `[object ${ty}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isErrorEvent(wat) {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMError(wat) {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMException(wat) {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isString(wat) {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPrimitive(wat) {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPlainObject(wat) {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isElement(wat) {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isRegExp(wat) {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nfunction isThenable(wat) {\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isSyntheticEvent(wat) {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isNaN(wat) {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nfunction isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isNaN, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable };\n//# sourceMappingURL=is.js.map\n","import { getGlobalObject, getGlobalSingleton } from './global.js';\n\n// TODO: Implement different loggers for different environments\nvar global = getGlobalObject();\n\n/** Prefix for logging strings */\nvar PREFIX = 'Sentry Logger ';\n\nvar CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] ;\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nfunction consoleSandbox(callback) {\n var global = getGlobalObject();\n\n if (!('console' in global)) {\n return callback();\n }\n\n var originalConsole = global.console ;\n var wrappedLevels = {};\n\n // Restore all wrapped console methods\n CONSOLE_LEVELS.forEach(level => {\n // TODO(v7): Remove this check as it's only needed for Node 6\n var originalWrappedFunc =\n originalConsole[level] && (originalConsole[level] ).__sentry_original__;\n if (level in global.console && originalWrappedFunc) {\n wrappedLevels[level] = originalConsole[level] ;\n originalConsole[level] = originalWrappedFunc ;\n }\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level ];\n });\n }\n}\n\nfunction makeLogger() {\n let enabled = false;\n var logger = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n };\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = (...args) => {\n if (enabled) {\n consoleSandbox(() => {\n global.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger ;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger;\nif ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger = getGlobalSingleton('logger', makeLogger);\n} else {\n logger = makeLogger();\n}\n\nexport { CONSOLE_LEVELS, consoleSandbox, logger };\n//# sourceMappingURL=logger.js.map\n","import { getGlobalObject } from './global.js';\nimport { addNonEnumerableProperty } from './object.js';\nimport { snipLine } from './string.js';\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nfunction uuid4() {\n var global = getGlobalObject() ;\n var crypto = (global.crypto || global.msCrypto) ;\n\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n\n var getRandomByte =\n crypto && crypto.getRandomValues ? () => crypto.getRandomValues(new Uint8Array(1))[0] : () => Math.random() * 16;\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] ) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16),\n );\n}\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nfunction parseUrl(url)\n\n {\n if (!url) {\n return {};\n }\n\n var match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n var query = match[6] || '';\n var fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\nfunction getFirstException(event) {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nfunction getEventDescription(event) {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n var firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nfunction addExceptionTypeValue(event, value, type) {\n var exception = (event.exception = event.exception || {});\n var values = (exception.values = exception.values || []);\n var firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nfunction addExceptionMechanism(event, newMechanism) {\n var firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n var defaultMechanism = { type: 'generic', handled: true };\n var currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n var mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nvar SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nfunction parseSemver(input) {\n var match = input.match(SEMVER_REGEXP) || [];\n var major = parseInt(match[1], 10);\n var minor = parseInt(match[2], 10);\n var patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n var lineno = frame.lineno || 0;\n var maxLines = lines.length;\n var sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line) => snipLine(line, 0));\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nfunction stripUrlQueryAndFragment(urlPath) {\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nfunction checkOrSetAlreadyCaught(exception) {\n if (exception && (exception ).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception , '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, checkOrSetAlreadyCaught, getEventDescription, parseSemver, parseUrl, stripUrlQueryAndFragment, uuid4 };\n//# sourceMappingURL=misc.js.map\n","import { isBrowserBundle } from './env.js';\n\n/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nfunction isNodeEnv() {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\nfunction dynamicRequire(mod, request) {\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nfunction loadModule(moduleName) {\n let mod;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) ;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n\nexport { dynamicRequire, isNodeEnv, loadModule };\n//# sourceMappingURL=node.js.map\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These fags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nfunction isBrowserBundle() {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\nexport { isBrowserBundle };\n//# sourceMappingURL=env.js.map\n","import { isNaN, isSyntheticEvent } from './is.js';\nimport { memoBuilder } from './memo.js';\nimport { convertToPlainObject } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output..\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\nfunction normalize(input, depth = +Infinity, maxProperties = +Infinity) {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nfunction normalizeToSize(\n object,\n // Default Node.js REPL depth\n depth = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize = 100 * 1024,\n) {\n var normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized ;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key,\n value,\n depth = +Infinity,\n maxProperties = +Infinity,\n memo = memoBuilder(),\n) {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (value === null || (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))) {\n return value ;\n }\n\n var stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value )['__sentry_skip_normalization__']) {\n return value ;\n }\n\n // We're also done if we've reached the max depth\n if (depth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n var valueWithToJSON = value ;\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n var jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, depth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n var normalized = (Array.isArray(value) ? [] : {}) ;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n var visitable = convertToPlainObject(value );\n\n for (var visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n var visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, depth - 1, maxProperties, memo);\n\n numAdded += 1;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value,\n) {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value )._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n // this catches `undefined` (but not `null`, which is a primitive and can be serialized on its own)\n if (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n return `[object ${(Object.getPrototypeOf(value) ).constructor.name}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n\nexport { normalize, normalizeToSize, visit as walk };\n//# sourceMappingURL=normalize.js.map\n","/**\n * Helper to decycle json objects\n */\nfunction memoBuilder() {\n var hasWeakSet = typeof WeakSet === 'function';\n var inner = hasWeakSet ? new WeakSet() : [];\n function memoize(obj) {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n for (let i = 0; i < inner.length; i++) {\n var value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj) {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n\nexport { memoBuilder };\n//# sourceMappingURL=memo.js.map\n","import { htmlTreeAsString } from './browser.js';\nimport { isError, isEvent, isInstanceOf, isElement, isPlainObject, isPrimitive } from './is.js';\nimport { truncate } from './string.js';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nfunction fill(source, name, replacementFactory) {\n if (!(name in source)) {\n return;\n }\n\n var original = source[name] ;\n var wrapped = replacementFactory(original) ;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nfunction addNonEnumerableProperty(obj, name, value) {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nfunction markFunctionWrapped(wrapped, original) {\n var proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nfunction getOriginalFunction(func) {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nfunction urlEncode(object) {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nfunction convertToPlainObject(\n value,\n)\n\n {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n var newObj\n\n = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target) {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj) {\n if (typeof obj === 'object' && obj !== null) {\n var extractedProps = {};\n for (var property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj )[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nfunction extractExceptionKeysForMessage(exception, maxLength = 40) {\n var keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n var serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nfunction dropUndefinedKeys(inputValue) {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n var memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue, memoizationMap) {\n if (isPlainObject(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n var memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n var returnValue = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (var key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue ;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n var memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n var returnValue = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue ;\n }\n\n return inputValue;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nfunction objectify(wat) {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n objectified = new (wat ).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, urlEncode };\n//# sourceMappingURL=object.js.map\n","import { _optionalChain } from './buildPolyfills';\n\nvar STACKTRACE_LIMIT = 50;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nfunction createStackParser(...parsers) {\n var sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack, skipFirst = 0) => {\n var frames = [];\n\n for (var line of stack.split('\\n').slice(skipFirst)) {\n for (var parser of sortedParsers) {\n var frame = parser(line);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nfunction stackParserFromStackParserOptions(stackParser) {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * @hidden\n */\nfunction stripSentryFramesAndReverse(stack) {\n if (!stack.length) {\n return [];\n }\n\n let localStack = stack;\n\n var firstFrameFunction = localStack[0].function || '';\n var lastFrameFunction = localStack[localStack.length - 1].function || '';\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .slice(0, STACKTRACE_LIMIT)\n .map(frame => ({\n ...frame,\n filename: frame.filename || localStack[0].filename,\n function: frame.function || '?',\n }))\n .reverse();\n}\n\nvar defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nfunction getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\nfunction node(getModule) {\n var FILENAME_MATCH = /^\\s*[-]{4,}$/;\n var FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+?):(\\d+)(?::(\\d+))?|([^)]+))\\)?/;\n\n return (line) => {\n if (line.match(FILENAME_MATCH)) {\n return {\n filename: line,\n };\n }\n\n var lineMatch = line.match(FULL_MATCH);\n if (!lineMatch) {\n return undefined;\n }\n\n let object;\n let method;\n let functionName;\n let typeName;\n let methodName;\n\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n\n let methodStart = functionName.lastIndexOf('.');\n if (functionName[methodStart - 1] === '.') {\n methodStart--;\n }\n\n if (methodStart > 0) {\n object = functionName.substr(0, methodStart);\n method = functionName.substr(methodStart + 1);\n var objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.substr(objectEnd + 1);\n object = object.substr(0, objectEnd);\n }\n }\n typeName = undefined;\n }\n\n if (method) {\n typeName = object;\n methodName = method;\n }\n\n if (method === '') {\n methodName = undefined;\n functionName = undefined;\n }\n\n if (functionName === undefined) {\n methodName = methodName || '';\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n\n var filename = _optionalChain([lineMatch, 'access', _ => _[2], 'optionalAccess', _2 => _2.startsWith, 'call', _3 => _3('file://')]) ? lineMatch[2].substr(7) : lineMatch[2];\n var isNative = lineMatch[5] === 'native';\n var isInternal =\n isNative || (filename && !filename.startsWith('/') && !filename.startsWith('.') && filename.indexOf(':\\\\') !== 1);\n\n // in_app is all that's not an internal Node function or a module within node_modules\n // note that isNative appears to return true even for node core libraries\n // see https://github.com/getsentry/raven-node/issues/176\n var in_app = !isInternal && filename !== undefined && !filename.includes('node_modules/');\n\n return {\n filename,\n module: _optionalChain([getModule, 'optionalCall', _4 => _4(filename)]),\n function: functionName,\n lineno: parseInt(lineMatch[3], 10) || undefined,\n colno: parseInt(lineMatch[4], 10) || undefined,\n in_app,\n };\n };\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nfunction nodeStackLineParser(getModule) {\n return [90, node(getModule)];\n}\n\nexport { createStackParser, getFunctionName, nodeStackLineParser, stackParserFromStackParserOptions, stripSentryFramesAndReverse };\n//# sourceMappingURL=stacktrace.js.map\n","import { isString, isRegExp } from './is.js';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nfunction truncate(str, max = 0) {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nfunction snipLine(line, colno) {\n let newLine = line;\n var lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\nfunction safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return '';\n }\n\n var output = [];\n for (let i = 0; i < input.length; i++) {\n var value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nfunction isMatchingPattern(value, pattern) {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n\n/**\n * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to\n * `new RegExp()`.\n *\n * Based on https://github.com/sindresorhus/escape-string-regexp. Vendored to a) reduce the size by skipping the runtime\n * type-checking, and b) ensure it gets down-compiled for old versions of Node (the published package only supports Node\n * 12+).\n *\n * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nfunction escapeStringForRegex(regexString) {\n // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems\n // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20.\n return regexString.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n\nexport { escapeStringForRegex, isMatchingPattern, safeJoin, snipLine, truncate };\n//# sourceMappingURL=string.js.map\n","import { getGlobalObject } from './global.js';\nimport { logger } from './logger.js';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsErrorEvent() {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMError() {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMException() {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsFetch() {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n\n try {\n new Headers();\n new Request('');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\nfunction isNativeFetch(func) {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nfunction supportsNativeFetch() {\n if (!supportsFetch()) {\n return false;\n }\n\n var global = getGlobalObject();\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n var doc = global.document;\n if (doc && typeof (doc.createElement ) === 'function') {\n try {\n var sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReportingObserver() {\n return 'ReportingObserver' in getGlobalObject();\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReferrerPolicy() {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' ,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var global = getGlobalObject();\n var chrome = (global ).chrome;\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n var hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n\nexport { isNativeFetch, supportsDOMError, supportsDOMException, supportsErrorEvent, supportsFetch, supportsHistory, supportsNativeFetch, supportsReferrerPolicy, supportsReportingObserver };\n//# sourceMappingURL=supports.js.map\n","import { isThenable } from './is.js';\n\n/** SyncPromise internal states */\nvar States; (function (States) {\n /** Pending */\n var PENDING = 0; States[States[\"PENDING\"] = PENDING] = \"PENDING\";\n /** Resolved / OK */\n var RESOLVED = 1; States[States[\"RESOLVED\"] = RESOLVED] = \"RESOLVED\";\n /** Rejected / Error */\n var REJECTED = 2; States[States[\"REJECTED\"] = REJECTED] = \"REJECTED\";\n})(States || (States = {}));\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nfunction resolvedSyncPromise(value) {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nfunction rejectedSyncPromise(reason) {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise {\n __init() {this._state = States.PENDING;}\n __init2() {this._handlers = [];}\n \n\n constructor(\n executor,\n ) {;SyncPromise.prototype.__init.call(this);SyncPromise.prototype.__init2.call(this);SyncPromise.prototype.__init3.call(this);SyncPromise.prototype.__init4.call(this);SyncPromise.prototype.__init5.call(this);SyncPromise.prototype.__init6.call(this);\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n then(\n onfulfilled,\n onrejected,\n ) {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result );\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n catch(\n onrejected,\n ) {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n finally(onfinally) {\n return new SyncPromise((resolve, reject) => {\n let val;\n let isRejected;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val );\n });\n });\n }\n\n /** JSDoc */\n __init3() {this._resolve = (value) => {\n this._setResult(States.RESOLVED, value);\n };}\n\n /** JSDoc */\n __init4() {this._reject = (reason) => {\n this._setResult(States.REJECTED, reason);\n };}\n\n /** JSDoc */\n __init5() {this._setResult = (state, value) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value ).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };}\n\n /** JSDoc */\n __init6() {this._executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n var cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n handler[1](this._value );\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };}\n}\n\nexport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise };\n//# sourceMappingURL=syncpromise.js.map\n","import { getGlobalObject } from './global.js';\nimport { dynamicRequire, isNodeEnv } from './node.js';\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nvar dateTimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance() {\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n var timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance() {\n try {\n var perfHooks = dynamicRequire(module, 'perf_hooks') ;\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nvar platformPerformance = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nvar timestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nvar dateTimestampInSeconds = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nvar timestampInSeconds = timestampSource.nowSeconds.bind(timestampSource);\n\n// Re-exported with an old name for backwards-compatibility.\nvar timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nvar usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nlet _browserPerformanceTimeOriginMode;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nvar browserPerformanceTimeOrigin = (() => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n var threshold = 3600 * 1000;\n var performanceNow = performance.now();\n var dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n var timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n var timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n var navigationStart = performance.timing && performance.timing.navigationStart;\n var hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n var navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n var navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n\nexport { _browserPerformanceTimeOriginMode, browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds, timestampWithMs, usingPerformanceAPI };\n//# sourceMappingURL=time.js.map\n","var _global = (typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}); _global.SENTRY_RELEASE={id:\"OLYCc3uX9UBIaItSwf6J8\"};","var _a = Object.prototype, toString = _a.toString, hasOwnProperty = _a.hasOwnProperty;\r\nvar fnToStr = Function.prototype.toString;\r\nvar previousComparisons = new Map();\r\n/**\r\n * Performs a deep equality check on two JavaScript values, tolerating cycles.\r\n */\r\nfunction equal(a, b) {\r\n try {\r\n return check(a, b);\r\n }\r\n finally {\r\n previousComparisons.clear();\r\n }\r\n}\r\nfunction check(a, b) {\r\n // If the two values are strictly equal, our job is easy.\r\n if (a === b) {\r\n return true;\r\n }\r\n // Object.prototype.toString returns a representation of the runtime type of\r\n // the given value that is considerably more precise than typeof.\r\n var aTag = toString.call(a);\r\n var bTag = toString.call(b);\r\n // If the runtime types of a and b are different, they could maybe be equal\r\n // under some interpretation of equality, but for simplicity and performance\r\n // we just return false instead.\r\n if (aTag !== bTag) {\r\n return false;\r\n }\r\n switch (aTag) {\r\n case '[object Array]':\r\n // Arrays are a lot like other objects, but we can cheaply compare their\r\n // lengths as a short-cut before comparing their elements.\r\n if (a.length !== b.length)\r\n return false;\r\n // Fall through to object case...\r\n case '[object Object]': {\r\n if (previouslyCompared(a, b))\r\n return true;\r\n var aKeys = definedKeys(a);\r\n var bKeys = definedKeys(b);\r\n // If `a` and `b` have a different number of enumerable keys, they\r\n // must be different.\r\n var keyCount = aKeys.length;\r\n if (keyCount !== bKeys.length)\r\n return false;\r\n // Now make sure they have the same keys.\r\n for (var k = 0; k < keyCount; ++k) {\r\n if (!hasOwnProperty.call(b, aKeys[k])) {\r\n return false;\r\n }\r\n }\r\n // Finally, check deep equality of all child properties.\r\n for (var k = 0; k < keyCount; ++k) {\r\n var key = aKeys[k];\r\n if (!check(a[key], b[key])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n case '[object Error]':\r\n return a.name === b.name && a.message === b.message;\r\n case '[object Number]':\r\n // Handle NaN, which is !== itself.\r\n if (a !== a)\r\n return b !== b;\r\n // Fall through to shared +a === +b case...\r\n case '[object Boolean]':\r\n case '[object Date]':\r\n return +a === +b;\r\n case '[object RegExp]':\r\n case '[object String]':\r\n return a == \"\" + b;\r\n case '[object Map]':\r\n case '[object Set]': {\r\n if (a.size !== b.size)\r\n return false;\r\n if (previouslyCompared(a, b))\r\n return true;\r\n var aIterator = a.entries();\r\n var isMap = aTag === '[object Map]';\r\n while (true) {\r\n var info = aIterator.next();\r\n if (info.done)\r\n break;\r\n // If a instanceof Set, aValue === aKey.\r\n var _a = info.value, aKey = _a[0], aValue = _a[1];\r\n // So this works the same way for both Set and Map.\r\n if (!b.has(aKey)) {\r\n return false;\r\n }\r\n // However, we care about deep equality of values only when dealing\r\n // with Map structures.\r\n if (isMap && !check(aValue, b.get(aKey))) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n case '[object Uint16Array]':\r\n case '[object Uint8Array]': // Buffer, in Node.js.\r\n case '[object Uint32Array]':\r\n case '[object Int32Array]':\r\n case '[object Int8Array]':\r\n case '[object Int16Array]':\r\n case '[object ArrayBuffer]':\r\n // DataView doesn't need these conversions, but the equality check is\r\n // otherwise the same.\r\n a = new Uint8Array(a);\r\n b = new Uint8Array(b);\r\n // Fall through...\r\n case '[object DataView]': {\r\n var len = a.byteLength;\r\n if (len === b.byteLength) {\r\n while (len-- && a[len] === b[len]) {\r\n // Keep looping as long as the bytes are equal.\r\n }\r\n }\r\n return len === -1;\r\n }\r\n case '[object AsyncFunction]':\r\n case '[object GeneratorFunction]':\r\n case '[object AsyncGeneratorFunction]':\r\n case '[object Function]': {\r\n var aCode = fnToStr.call(a);\r\n if (aCode !== fnToStr.call(b)) {\r\n return false;\r\n }\r\n // We consider non-native functions equal if they have the same code\r\n // (native functions require === because their code is censored).\r\n // Note that this behavior is not entirely sound, since !== function\r\n // objects with the same code can behave differently depending on\r\n // their closure scope. However, any function can behave differently\r\n // depending on the values of its input arguments (including this)\r\n // and its calling context (including its closure scope), even\r\n // though the function object is === to itself; and it is entirely\r\n // possible for functions that are not === to behave exactly the\r\n // same under all conceivable circumstances. Because none of these\r\n // factors are statically decidable in JavaScript, JS function\r\n // equality is not well-defined. This ambiguity allows us to\r\n // consider the best possible heuristic among various imperfect\r\n // options, and equating non-native functions that have the same\r\n // code has enormous practical benefits, such as when comparing\r\n // functions that are repeatedly passed as fresh function\r\n // expressions within objects that are otherwise deeply equal. Since\r\n // any function created from the same syntactic expression (in the\r\n // same code location) will always stringify to the same code\r\n // according to fnToStr.call, we can reasonably expect these\r\n // repeatedly passed function expressions to have the same code, and\r\n // thus behave \"the same\" (with all the caveats mentioned above),\r\n // even though the runtime function objects are !== to one another.\r\n return !endsWith(aCode, nativeCodeSuffix);\r\n }\r\n }\r\n // Otherwise the values are not equal.\r\n return false;\r\n}\r\nfunction definedKeys(obj) {\r\n // Remember that the second argument to Array.prototype.filter will be\r\n // used as `this` within the callback function.\r\n return Object.keys(obj).filter(isDefinedKey, obj);\r\n}\r\nfunction isDefinedKey(key) {\r\n return this[key] !== void 0;\r\n}\r\nvar nativeCodeSuffix = \"{ [native code] }\";\r\nfunction endsWith(full, suffix) {\r\n var fromIndex = full.length - suffix.length;\r\n return fromIndex >= 0 &&\r\n full.indexOf(suffix, fromIndex) === fromIndex;\r\n}\r\nfunction previouslyCompared(a, b) {\r\n // Though cyclic references can make an object graph appear infinite from the\r\n // perspective of a depth-first traversal, the graph still contains a finite\r\n // number of distinct object references. We use the previousComparisons cache\r\n // to avoid comparing the same pair of object references more than once, which\r\n // guarantees termination (even if we end up comparing every object in one\r\n // graph to every object in the other graph, which is extremely unlikely),\r\n // while still allowing weird isomorphic structures (like rings with different\r\n // lengths) a chance to pass the equality test.\r\n var bSet = previousComparisons.get(a);\r\n if (bSet) {\r\n // Return true here because we can be sure false will be returned somewhere\r\n // else if the objects are not equivalent.\r\n if (bSet.has(b))\r\n return true;\r\n }\r\n else {\r\n previousComparisons.set(a, bSet = new Set);\r\n }\r\n bSet.add(b);\r\n return false;\r\n}\n\nexport { equal as default, equal };\n//# sourceMappingURL=equality.esm.js.map\n","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/get-prototype-of\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = 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 (0, _defineProperty2.default)(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}();","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (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 === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (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 === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","module.exports = function () { /* empty */ };\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","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\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","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\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","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = true;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\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","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\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","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\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","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\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","module.exports = require('./_hide');\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\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 defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\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","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","exports.f = require('./_wks');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\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","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","export function invariant(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(\n message != null ? message : 'Unexpected invariant triggered.',\n );\n }\n}\n","import { invariant } from '../jsutils/invariant.mjs';\nconst LineRegExp = /\\r\\n|[\\n\\r]/g;\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n let lastLineStart = 0;\n let line = 1;\n\n for (const match of source.body.matchAll(LineRegExp)) {\n typeof match.index === 'number' || invariant(false);\n\n if (match.index >= position) {\n break;\n }\n\n lastLineStart = match.index + match[0].length;\n line += 1;\n }\n\n return {\n line,\n column: position + 1 - lastLineStart,\n };\n}\n","import { getLocation } from './location.mjs';\n\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\nexport function printLocation(location) {\n return printSourceLocation(\n location.source,\n getLocation(location.source, location.start),\n );\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printSourceLocation(source, sourceLocation) {\n const firstLineColumnOffset = source.locationOffset.column - 1;\n const body = ''.padStart(firstLineColumnOffset) + source.body;\n const lineIndex = sourceLocation.line - 1;\n const lineOffset = source.locationOffset.line - 1;\n const lineNum = sourceLocation.line + lineOffset;\n const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n const columnNum = sourceLocation.column + columnOffset;\n const locationStr = `${source.name}:${lineNum}:${columnNum}\\n`;\n const lines = body.split(/\\r\\n|[\\n\\r]/g);\n const locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n const subLineIndex = Math.floor(columnNum / 80);\n const subLineColumnNum = columnNum % 80;\n const subLines = [];\n\n for (let i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return (\n locationStr +\n printPrefixedLines([\n [`${lineNum} |`, subLines[0]],\n ...subLines.slice(1, subLineIndex + 1).map((subLine) => ['|', subLine]),\n ['|', '^'.padStart(subLineColumnNum)],\n ['|', subLines[subLineIndex + 1]],\n ])\n );\n }\n\n return (\n locationStr +\n printPrefixedLines([\n // Lines specified like this: [\"prefix\", \"string\"],\n [`${lineNum - 1} |`, lines[lineIndex - 1]],\n [`${lineNum} |`, locationLine],\n ['|', '^'.padStart(columnNum)],\n [`${lineNum + 1} |`, lines[lineIndex + 1]],\n ])\n );\n}\n\nfunction printPrefixedLines(lines) {\n const existingLines = lines.filter(([_, line]) => line !== undefined);\n const padLen = Math.max(...existingLines.map(([prefix]) => prefix.length));\n return existingLines\n .map(([prefix, line]) => prefix.padStart(padLen) + (line ? ' ' + line : ''))\n .join('\\n');\n}\n","import { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { getLocation } from '../language/location.mjs';\nimport {\n printLocation,\n printSourceLocation,\n} from '../language/printLocation.mjs';\n\nfunction toNormalizedOptions(args) {\n const firstArg = args[0];\n\n if (firstArg == null || 'kind' in firstArg || 'length' in firstArg) {\n return {\n nodes: firstArg,\n source: args[1],\n positions: args[2],\n path: args[3],\n originalError: args[4],\n extensions: args[5],\n };\n }\n\n return firstArg;\n}\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nexport class GraphQLError extends Error {\n /**\n * An array of `{ line, column }` locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n\n /**\n * @deprecated Please use the `GraphQLErrorOptions` constructor overload instead.\n */\n constructor(message, ...rawArgs) {\n var _this$nodes, _nodeLocations$, _ref;\n\n const { nodes, source, positions, path, originalError, extensions } =\n toNormalizedOptions(rawArgs);\n super(message);\n this.name = 'GraphQLError';\n this.path = path !== null && path !== void 0 ? path : undefined;\n this.originalError =\n originalError !== null && originalError !== void 0\n ? originalError\n : undefined; // Compute list of blame nodes.\n\n this.nodes = undefinedIfEmpty(\n Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined,\n );\n const nodeLocations = undefinedIfEmpty(\n (_this$nodes = this.nodes) === null || _this$nodes === void 0\n ? void 0\n : _this$nodes.map((node) => node.loc).filter((loc) => loc != null),\n ); // Compute locations in the source for the given nodes/positions.\n\n this.source =\n source !== null && source !== void 0\n ? source\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : (_nodeLocations$ = nodeLocations[0]) === null ||\n _nodeLocations$ === void 0\n ? void 0\n : _nodeLocations$.source;\n this.positions =\n positions !== null && positions !== void 0\n ? positions\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : nodeLocations.map((loc) => loc.start);\n this.locations =\n positions && source\n ? positions.map((pos) => getLocation(source, pos))\n : nodeLocations === null || nodeLocations === void 0\n ? void 0\n : nodeLocations.map((loc) => getLocation(loc.source, loc.start));\n const originalExtensions = isObjectLike(\n originalError === null || originalError === void 0\n ? void 0\n : originalError.extensions,\n )\n ? originalError === null || originalError === void 0\n ? void 0\n : originalError.extensions\n : undefined;\n this.extensions =\n (_ref =\n extensions !== null && extensions !== void 0\n ? extensions\n : originalExtensions) !== null && _ref !== void 0\n ? _ref\n : Object.create(null); // Only properties prescribed by the spec should be enumerable.\n // Keep the rest as non-enumerable.\n\n Object.defineProperties(this, {\n message: {\n writable: true,\n enumerable: true,\n },\n name: {\n enumerable: false,\n },\n nodes: {\n enumerable: false,\n },\n source: {\n enumerable: false,\n },\n positions: {\n enumerable: false,\n },\n originalError: {\n enumerable: false,\n },\n }); // Include (non-enumerable) stack trace.\n\n /* c8 ignore start */\n // FIXME: https://github.com/graphql/graphql-js/issues/2317\n\n if (\n originalError !== null &&\n originalError !== void 0 &&\n originalError.stack\n ) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true,\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true,\n });\n }\n /* c8 ignore stop */\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLError';\n }\n\n toString() {\n let output = this.message;\n\n if (this.nodes) {\n for (const node of this.nodes) {\n if (node.loc) {\n output += '\\n\\n' + printLocation(node.loc);\n }\n }\n } else if (this.source && this.locations) {\n for (const location of this.locations) {\n output += '\\n\\n' + printSourceLocation(this.source, location);\n }\n }\n\n return output;\n }\n\n toJSON() {\n const formattedError = {\n message: this.message,\n };\n\n if (this.locations != null) {\n formattedError.locations = this.locations;\n }\n\n if (this.path != null) {\n formattedError.path = this.path;\n }\n\n if (this.extensions != null && Object.keys(this.extensions).length > 0) {\n formattedError.extensions = this.extensions;\n }\n\n return formattedError;\n }\n}\n\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * See: https://spec.graphql.org/draft/#sec-Errors\n */\n\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n *\n * @deprecated Please use `error.toString` instead. Will be removed in v17\n */\nexport function printError(error) {\n return error.toString();\n}\n/**\n * Given a GraphQLError, format it according to the rules described by the\n * Response Format, Errors section of the GraphQL Specification.\n *\n * @deprecated Please use `error.toJSON` instead. Will be removed in v17\n */\n\nexport function formatError(error) {\n return error.toJSON();\n}\n","/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nexport function isObjectLike(value) {\n return typeof value == 'object' && value !== null;\n}\n","import { GraphQLError } from './GraphQLError.mjs';\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(`Syntax Error: ${description}`, {\n source,\n positions: [position],\n });\n}\n","/**\n * The set of allowed directive location values.\n */\nexport let DirectiveLocation;\n/**\n * The enum type representing the directive location values.\n *\n * @deprecated Please use `DirectiveLocation`. Will be remove in v17.\n */\n\n(function (DirectiveLocation) {\n DirectiveLocation['QUERY'] = 'QUERY';\n DirectiveLocation['MUTATION'] = 'MUTATION';\n DirectiveLocation['SUBSCRIPTION'] = 'SUBSCRIPTION';\n DirectiveLocation['FIELD'] = 'FIELD';\n DirectiveLocation['FRAGMENT_DEFINITION'] = 'FRAGMENT_DEFINITION';\n DirectiveLocation['FRAGMENT_SPREAD'] = 'FRAGMENT_SPREAD';\n DirectiveLocation['INLINE_FRAGMENT'] = 'INLINE_FRAGMENT';\n DirectiveLocation['VARIABLE_DEFINITION'] = 'VARIABLE_DEFINITION';\n DirectiveLocation['SCHEMA'] = 'SCHEMA';\n DirectiveLocation['SCALAR'] = 'SCALAR';\n DirectiveLocation['OBJECT'] = 'OBJECT';\n DirectiveLocation['FIELD_DEFINITION'] = 'FIELD_DEFINITION';\n DirectiveLocation['ARGUMENT_DEFINITION'] = 'ARGUMENT_DEFINITION';\n DirectiveLocation['INTERFACE'] = 'INTERFACE';\n DirectiveLocation['UNION'] = 'UNION';\n DirectiveLocation['ENUM'] = 'ENUM';\n DirectiveLocation['ENUM_VALUE'] = 'ENUM_VALUE';\n DirectiveLocation['INPUT_OBJECT'] = 'INPUT_OBJECT';\n DirectiveLocation['INPUT_FIELD_DEFINITION'] = 'INPUT_FIELD_DEFINITION';\n})(DirectiveLocation || (DirectiveLocation = {}));\n","/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nexport let TokenKind;\n/**\n * The enum type representing the token kinds values.\n *\n * @deprecated Please use `TokenKind`. Will be remove in v17.\n */\n\n(function (TokenKind) {\n TokenKind['SOF'] = '';\n TokenKind['EOF'] = '';\n TokenKind['BANG'] = '!';\n TokenKind['DOLLAR'] = '$';\n TokenKind['AMP'] = '&';\n TokenKind['PAREN_L'] = '(';\n TokenKind['PAREN_R'] = ')';\n TokenKind['SPREAD'] = '...';\n TokenKind['COLON'] = ':';\n TokenKind['EQUALS'] = '=';\n TokenKind['AT'] = '@';\n TokenKind['BRACKET_L'] = '[';\n TokenKind['BRACKET_R'] = ']';\n TokenKind['BRACE_L'] = '{';\n TokenKind['PIPE'] = '|';\n TokenKind['BRACE_R'] = '}';\n TokenKind['NAME'] = 'Name';\n TokenKind['INT'] = 'Int';\n TokenKind['FLOAT'] = 'Float';\n TokenKind['STRING'] = 'String';\n TokenKind['BLOCK_STRING'] = 'BlockString';\n TokenKind['COMMENT'] = 'Comment';\n})(TokenKind || (TokenKind = {}));\n","import { syntaxError } from '../error/syntaxError.mjs';\nimport { Token } from './ast.mjs';\nimport { dedentBlockStringLines } from './blockString.mjs';\nimport { isDigit, isNameContinue, isNameStart } from './characterClasses.mjs';\nimport { TokenKind } from './tokenKind.mjs';\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport class Lexer {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n constructor(source) {\n const startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0);\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n\n get [Symbol.toStringTag]() {\n return 'Lexer';\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n advance() {\n this.lastToken = this.token;\n const token = (this.token = this.lookahead());\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */\n\n lookahead() {\n let token = this.token;\n\n if (token.kind !== TokenKind.EOF) {\n do {\n if (token.next) {\n token = token.next;\n } else {\n // Read the next token and form a link in the token linked-list.\n const nextToken = readNextToken(this, token.end); // @ts-expect-error next is only mutable during parsing.\n\n token.next = nextToken; // @ts-expect-error prev is only mutable during parsing.\n\n nextToken.prev = token;\n token = nextToken;\n }\n } while (token.kind === TokenKind.COMMENT);\n }\n\n return token;\n }\n}\n/**\n * @internal\n */\n\nexport function isPunctuatorTokenKind(kind) {\n return (\n kind === TokenKind.BANG ||\n kind === TokenKind.DOLLAR ||\n kind === TokenKind.AMP ||\n kind === TokenKind.PAREN_L ||\n kind === TokenKind.PAREN_R ||\n kind === TokenKind.SPREAD ||\n kind === TokenKind.COLON ||\n kind === TokenKind.EQUALS ||\n kind === TokenKind.AT ||\n kind === TokenKind.BRACKET_L ||\n kind === TokenKind.BRACKET_R ||\n kind === TokenKind.BRACE_L ||\n kind === TokenKind.PIPE ||\n kind === TokenKind.BRACE_R\n );\n}\n/**\n * A Unicode scalar value is any Unicode code point except surrogate code\n * points. In other words, the inclusive ranges of values 0x0000 to 0xD7FF and\n * 0xE000 to 0x10FFFF.\n *\n * SourceCharacter ::\n * - \"Any Unicode scalar value\"\n */\n\nfunction isUnicodeScalarValue(code) {\n return (\n (code >= 0x0000 && code <= 0xd7ff) || (code >= 0xe000 && code <= 0x10ffff)\n );\n}\n/**\n * The GraphQL specification defines source text as a sequence of unicode scalar\n * values (which Unicode defines to exclude surrogate code points). However\n * JavaScript defines strings as a sequence of UTF-16 code units which may\n * include surrogates. A surrogate pair is a valid source character as it\n * encodes a supplementary code point (above U+FFFF), but unpaired surrogate\n * code points are not valid source characters.\n */\n\nfunction isSupplementaryCodePoint(body, location) {\n return (\n isLeadingSurrogate(body.charCodeAt(location)) &&\n isTrailingSurrogate(body.charCodeAt(location + 1))\n );\n}\n\nfunction isLeadingSurrogate(code) {\n return code >= 0xd800 && code <= 0xdbff;\n}\n\nfunction isTrailingSurrogate(code) {\n return code >= 0xdc00 && code <= 0xdfff;\n}\n/**\n * Prints the code point (or end of file reference) at a given location in a\n * source for use in error messages.\n *\n * Printable ASCII is printed quoted, while other points are printed in Unicode\n * code point form (ie. U+1234).\n */\n\nfunction printCodePointAt(lexer, location) {\n const code = lexer.source.body.codePointAt(location);\n\n if (code === undefined) {\n return TokenKind.EOF;\n } else if (code >= 0x0020 && code <= 0x007e) {\n // Printable ASCII\n const char = String.fromCodePoint(code);\n return char === '\"' ? \"'\\\"'\" : `\"${char}\"`;\n } // Unicode code point\n\n return 'U+' + code.toString(16).toUpperCase().padStart(4, '0');\n}\n/**\n * Create a token with line and column location information.\n */\n\nfunction createToken(lexer, kind, start, end, value) {\n const line = lexer.line;\n const col = 1 + start - lexer.lineStart;\n return new Token(kind, start, end, line, col, value);\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\nfunction readNextToken(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // SourceCharacter\n\n switch (code) {\n // Ignored ::\n // - UnicodeBOM\n // - WhiteSpace\n // - LineTerminator\n // - Comment\n // - Comma\n //\n // UnicodeBOM :: \"Byte Order Mark (U+FEFF)\"\n //\n // WhiteSpace ::\n // - \"Horizontal Tab (U+0009)\"\n // - \"Space (U+0020)\"\n //\n // Comma :: ,\n case 0xfeff: // \n\n case 0x0009: // \\t\n\n case 0x0020: // \n\n case 0x002c:\n // ,\n ++position;\n continue;\n // LineTerminator ::\n // - \"New Line (U+000A)\"\n // - \"Carriage Return (U+000D)\" [lookahead != \"New Line (U+000A)\"]\n // - \"Carriage Return (U+000D)\" \"New Line (U+000A)\"\n\n case 0x000a:\n // \\n\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n continue;\n\n case 0x000d:\n // \\r\n if (body.charCodeAt(position + 1) === 0x000a) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n continue;\n // Comment\n\n case 0x0023:\n // #\n return readComment(lexer, position);\n // Token ::\n // - Punctuator\n // - Name\n // - IntValue\n // - FloatValue\n // - StringValue\n //\n // Punctuator :: one of ! $ & ( ) ... : = @ [ ] { | }\n\n case 0x0021:\n // !\n return createToken(lexer, TokenKind.BANG, position, position + 1);\n\n case 0x0024:\n // $\n return createToken(lexer, TokenKind.DOLLAR, position, position + 1);\n\n case 0x0026:\n // &\n return createToken(lexer, TokenKind.AMP, position, position + 1);\n\n case 0x0028:\n // (\n return createToken(lexer, TokenKind.PAREN_L, position, position + 1);\n\n case 0x0029:\n // )\n return createToken(lexer, TokenKind.PAREN_R, position, position + 1);\n\n case 0x002e:\n // .\n if (\n body.charCodeAt(position + 1) === 0x002e &&\n body.charCodeAt(position + 2) === 0x002e\n ) {\n return createToken(lexer, TokenKind.SPREAD, position, position + 3);\n }\n\n break;\n\n case 0x003a:\n // :\n return createToken(lexer, TokenKind.COLON, position, position + 1);\n\n case 0x003d:\n // =\n return createToken(lexer, TokenKind.EQUALS, position, position + 1);\n\n case 0x0040:\n // @\n return createToken(lexer, TokenKind.AT, position, position + 1);\n\n case 0x005b:\n // [\n return createToken(lexer, TokenKind.BRACKET_L, position, position + 1);\n\n case 0x005d:\n // ]\n return createToken(lexer, TokenKind.BRACKET_R, position, position + 1);\n\n case 0x007b:\n // {\n return createToken(lexer, TokenKind.BRACE_L, position, position + 1);\n\n case 0x007c:\n // |\n return createToken(lexer, TokenKind.PIPE, position, position + 1);\n\n case 0x007d:\n // }\n return createToken(lexer, TokenKind.BRACE_R, position, position + 1);\n // StringValue\n\n case 0x0022:\n // \"\n if (\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022\n ) {\n return readBlockString(lexer, position);\n }\n\n return readString(lexer, position);\n } // IntValue | FloatValue (Digit | -)\n\n if (isDigit(code) || code === 0x002d) {\n return readNumber(lexer, position, code);\n } // Name\n\n if (isNameStart(code)) {\n return readName(lexer, position);\n }\n\n throw syntaxError(\n lexer.source,\n position,\n code === 0x0027\n ? 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?'\n : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position)\n ? `Unexpected character: ${printCodePointAt(lexer, position)}.`\n : `Invalid character: ${printCodePointAt(lexer, position)}.`,\n );\n }\n\n return createToken(lexer, TokenKind.EOF, bodyLength, bodyLength);\n}\n/**\n * Reads a comment token from the source file.\n *\n * ```\n * Comment :: # CommentChar* [lookahead != CommentChar]\n *\n * CommentChar :: SourceCharacter but not LineTerminator\n * ```\n */\n\nfunction readComment(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // LineTerminator (\\n | \\r)\n\n if (code === 0x000a || code === 0x000d) {\n break;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n break;\n }\n }\n\n return createToken(\n lexer,\n TokenKind.COMMENT,\n start,\n position,\n body.slice(start + 1, position),\n );\n}\n/**\n * Reads a number token from the source file, either a FloatValue or an IntValue\n * depending on whether a FractionalPart or ExponentPart is encountered.\n *\n * ```\n * IntValue :: IntegerPart [lookahead != {Digit, `.`, NameStart}]\n *\n * IntegerPart ::\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit Digit*\n *\n * NegativeSign :: -\n *\n * NonZeroDigit :: Digit but not `0`\n *\n * FloatValue ::\n * - IntegerPart FractionalPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n * - IntegerPart FractionalPart [lookahead != {Digit, `.`, NameStart}]\n * - IntegerPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n *\n * FractionalPart :: . Digit+\n *\n * ExponentPart :: ExponentIndicator Sign? Digit+\n *\n * ExponentIndicator :: one of `e` `E`\n *\n * Sign :: one of + -\n * ```\n */\n\nfunction readNumber(lexer, start, firstCode) {\n const body = lexer.source.body;\n let position = start;\n let code = firstCode;\n let isFloat = false; // NegativeSign (-)\n\n if (code === 0x002d) {\n code = body.charCodeAt(++position);\n } // Zero (0)\n\n if (code === 0x0030) {\n code = body.charCodeAt(++position);\n\n if (isDigit(code)) {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid number, unexpected digit after 0: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n } else {\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // Full stop (.)\n\n if (code === 0x002e) {\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // E e\n\n if (code === 0x0045 || code === 0x0065) {\n isFloat = true;\n code = body.charCodeAt(++position); // + -\n\n if (code === 0x002b || code === 0x002d) {\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(lexer, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n if (code === 0x002e || isNameStart(code)) {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid number, expected digit but got: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n\n return createToken(\n lexer,\n isFloat ? TokenKind.FLOAT : TokenKind.INT,\n start,\n position,\n body.slice(start, position),\n );\n}\n/**\n * Returns the new position in the source after reading one or more digits.\n */\n\nfunction readDigits(lexer, start, firstCode) {\n if (!isDigit(firstCode)) {\n throw syntaxError(\n lexer.source,\n start,\n `Invalid number, expected digit but got: ${printCodePointAt(\n lexer,\n start,\n )}.`,\n );\n }\n\n const body = lexer.source.body;\n let position = start + 1; // +1 to skip first firstCode\n\n while (isDigit(body.charCodeAt(position))) {\n ++position;\n }\n\n return position;\n}\n/**\n * Reads a single-quote string token from the source file.\n *\n * ```\n * StringValue ::\n * - `\"\"` [lookahead != `\"`]\n * - `\"` StringCharacter+ `\"`\n *\n * StringCharacter ::\n * - SourceCharacter but not `\"` or `\\` or LineTerminator\n * - `\\u` EscapedUnicode\n * - `\\` EscapedCharacter\n *\n * EscapedUnicode ::\n * - `{` HexDigit+ `}`\n * - HexDigit HexDigit HexDigit HexDigit\n *\n * EscapedCharacter :: one of `\"` `\\` `/` `b` `f` `n` `r` `t`\n * ```\n */\n\nfunction readString(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n let chunkStart = position;\n let value = '';\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // Closing Quote (\")\n\n if (code === 0x0022) {\n value += body.slice(chunkStart, position);\n return createToken(lexer, TokenKind.STRING, start, position + 1, value);\n } // Escape Sequence (\\)\n\n if (code === 0x005c) {\n value += body.slice(chunkStart, position);\n const escape =\n body.charCodeAt(position + 1) === 0x0075 // u\n ? body.charCodeAt(position + 2) === 0x007b // {\n ? readEscapedUnicodeVariableWidth(lexer, position)\n : readEscapedUnicodeFixedWidth(lexer, position)\n : readEscapedCharacter(lexer, position);\n value += escape.value;\n position += escape.size;\n chunkStart = position;\n continue;\n } // LineTerminator (\\n | \\r)\n\n if (code === 0x000a || code === 0x000d) {\n break;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character within String: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n }\n\n throw syntaxError(lexer.source, position, 'Unterminated string.');\n} // The string value and lexed size of an escape sequence.\n\nfunction readEscapedUnicodeVariableWidth(lexer, position) {\n const body = lexer.source.body;\n let point = 0;\n let size = 3; // Cannot be larger than 12 chars (\\u{00000000}).\n\n while (size < 12) {\n const code = body.charCodeAt(position + size++); // Closing Brace (})\n\n if (code === 0x007d) {\n // Must be at least 5 chars (\\u{0}) and encode a Unicode scalar value.\n if (size < 5 || !isUnicodeScalarValue(point)) {\n break;\n }\n\n return {\n value: String.fromCodePoint(point),\n size,\n };\n } // Append this hex digit to the code point.\n\n point = (point << 4) | readHexDigit(code);\n\n if (point < 0) {\n break;\n }\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid Unicode escape sequence: \"${body.slice(\n position,\n position + size,\n )}\".`,\n );\n}\n\nfunction readEscapedUnicodeFixedWidth(lexer, position) {\n const body = lexer.source.body;\n const code = read16BitHexCode(body, position + 2);\n\n if (isUnicodeScalarValue(code)) {\n return {\n value: String.fromCodePoint(code),\n size: 6,\n };\n } // GraphQL allows JSON-style surrogate pair escape sequences, but only when\n // a valid pair is formed.\n\n if (isLeadingSurrogate(code)) {\n // \\u\n if (\n body.charCodeAt(position + 6) === 0x005c &&\n body.charCodeAt(position + 7) === 0x0075\n ) {\n const trailingCode = read16BitHexCode(body, position + 8);\n\n if (isTrailingSurrogate(trailingCode)) {\n // JavaScript defines strings as a sequence of UTF-16 code units and\n // encodes Unicode code points above U+FFFF using a surrogate pair of\n // code units. Since this is a surrogate pair escape sequence, just\n // include both codes into the JavaScript string value. Had JavaScript\n // not been internally based on UTF-16, then this surrogate pair would\n // be decoded to retrieve the supplementary code point.\n return {\n value: String.fromCodePoint(code, trailingCode),\n size: 12,\n };\n }\n }\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid Unicode escape sequence: \"${body.slice(position, position + 6)}\".`,\n );\n}\n/**\n * Reads four hexadecimal characters and returns the positive integer that 16bit\n * hexadecimal string represents. For example, \"000f\" will return 15, and \"dead\"\n * will return 57005.\n *\n * Returns a negative number if any char was not a valid hexadecimal digit.\n */\n\nfunction read16BitHexCode(body, position) {\n // readHexDigit() returns -1 on error. ORing a negative value with any other\n // value always produces a negative value.\n return (\n (readHexDigit(body.charCodeAt(position)) << 12) |\n (readHexDigit(body.charCodeAt(position + 1)) << 8) |\n (readHexDigit(body.charCodeAt(position + 2)) << 4) |\n readHexDigit(body.charCodeAt(position + 3))\n );\n}\n/**\n * Reads a hexadecimal character and returns its positive integer value (0-15).\n *\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 if the provided character code was not a valid hexadecimal digit.\n *\n * HexDigit :: one of\n * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * - `A` `B` `C` `D` `E` `F`\n * - `a` `b` `c` `d` `e` `f`\n */\n\nfunction readHexDigit(code) {\n return code >= 0x0030 && code <= 0x0039 // 0-9\n ? code - 0x0030\n : code >= 0x0041 && code <= 0x0046 // A-F\n ? code - 0x0037\n : code >= 0x0061 && code <= 0x0066 // a-f\n ? code - 0x0057\n : -1;\n}\n/**\n * | Escaped Character | Code Point | Character Name |\n * | ----------------- | ---------- | ---------------------------- |\n * | `\"` | U+0022 | double quote |\n * | `\\` | U+005C | reverse solidus (back slash) |\n * | `/` | U+002F | solidus (forward slash) |\n * | `b` | U+0008 | backspace |\n * | `f` | U+000C | form feed |\n * | `n` | U+000A | line feed (new line) |\n * | `r` | U+000D | carriage return |\n * | `t` | U+0009 | horizontal tab |\n */\n\nfunction readEscapedCharacter(lexer, position) {\n const body = lexer.source.body;\n const code = body.charCodeAt(position + 1);\n\n switch (code) {\n case 0x0022:\n // \"\n return {\n value: '\\u0022',\n size: 2,\n };\n\n case 0x005c:\n // \\\n return {\n value: '\\u005c',\n size: 2,\n };\n\n case 0x002f:\n // /\n return {\n value: '\\u002f',\n size: 2,\n };\n\n case 0x0062:\n // b\n return {\n value: '\\u0008',\n size: 2,\n };\n\n case 0x0066:\n // f\n return {\n value: '\\u000c',\n size: 2,\n };\n\n case 0x006e:\n // n\n return {\n value: '\\u000a',\n size: 2,\n };\n\n case 0x0072:\n // r\n return {\n value: '\\u000d',\n size: 2,\n };\n\n case 0x0074:\n // t\n return {\n value: '\\u0009',\n size: 2,\n };\n }\n\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character escape sequence: \"${body.slice(\n position,\n position + 2,\n )}\".`,\n );\n}\n/**\n * Reads a block string token from the source file.\n *\n * ```\n * StringValue ::\n * - `\"\"\"` BlockStringCharacter* `\"\"\"`\n *\n * BlockStringCharacter ::\n * - SourceCharacter but not `\"\"\"` or `\\\"\"\"`\n * - `\\\"\"\"`\n * ```\n */\n\nfunction readBlockString(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let lineStart = lexer.lineStart;\n let position = start + 3;\n let chunkStart = position;\n let currentLine = '';\n const blockLines = [];\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position); // Closing Triple-Quote (\"\"\")\n\n if (\n code === 0x0022 &&\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022\n ) {\n currentLine += body.slice(chunkStart, position);\n blockLines.push(currentLine);\n const token = createToken(\n lexer,\n TokenKind.BLOCK_STRING,\n start,\n position + 3, // Return a string of the lines joined with U+000A.\n dedentBlockStringLines(blockLines).join('\\n'),\n );\n lexer.line += blockLines.length - 1;\n lexer.lineStart = lineStart;\n return token;\n } // Escaped Triple-Quote (\\\"\"\")\n\n if (\n code === 0x005c &&\n body.charCodeAt(position + 1) === 0x0022 &&\n body.charCodeAt(position + 2) === 0x0022 &&\n body.charCodeAt(position + 3) === 0x0022\n ) {\n currentLine += body.slice(chunkStart, position);\n chunkStart = position + 1; // skip only slash\n\n position += 4;\n continue;\n } // LineTerminator\n\n if (code === 0x000a || code === 0x000d) {\n currentLine += body.slice(chunkStart, position);\n blockLines.push(currentLine);\n\n if (code === 0x000d && body.charCodeAt(position + 1) === 0x000a) {\n position += 2;\n } else {\n ++position;\n }\n\n currentLine = '';\n chunkStart = position;\n lineStart = position;\n continue;\n } // SourceCharacter\n\n if (isUnicodeScalarValue(code)) {\n ++position;\n } else if (isSupplementaryCodePoint(body, position)) {\n position += 2;\n } else {\n throw syntaxError(\n lexer.source,\n position,\n `Invalid character within String: ${printCodePointAt(\n lexer,\n position,\n )}.`,\n );\n }\n }\n\n throw syntaxError(lexer.source, position, 'Unterminated string.');\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * ```\n * Name ::\n * - NameStart NameContinue* [lookahead != NameContinue]\n * ```\n */\n\nfunction readName(lexer, start) {\n const body = lexer.source.body;\n const bodyLength = body.length;\n let position = start + 1;\n\n while (position < bodyLength) {\n const code = body.charCodeAt(position);\n\n if (isNameContinue(code)) {\n ++position;\n } else {\n break;\n }\n }\n\n return createToken(\n lexer,\n TokenKind.NAME,\n start,\n position,\n body.slice(start, position),\n );\n}\n","import { syntaxError } from '../error/syntaxError.mjs';\nimport { Location, OperationTypeNode } from './ast.mjs';\nimport { DirectiveLocation } from './directiveLocation.mjs';\nimport { Kind } from './kinds.mjs';\nimport { isPunctuatorTokenKind, Lexer } from './lexer.mjs';\nimport { isSource, Source } from './source.mjs';\nimport { TokenKind } from './tokenKind.mjs';\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n const parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseValueLiteral(false);\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Similar to parseValue(), but raises a parse error if it encounters a\n * variable. The return type will be a constant value.\n */\n\nexport function parseConstValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseConstValueLiteral();\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nexport class Parser {\n constructor(source, options) {\n const sourceObj = isSource(source) ? source : new Source(source);\n this._lexer = new Lexer(sourceObj);\n this._options = options;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n parseName() {\n const token = this.expectToken(TokenKind.NAME);\n return this.node(token, {\n kind: Kind.NAME,\n value: token.value,\n });\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n\n parseDocument() {\n return this.node(this._lexer.token, {\n kind: Kind.DOCUMENT,\n definitions: this.many(\n TokenKind.SOF,\n this.parseDefinition,\n TokenKind.EOF,\n ),\n });\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n *\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n\n parseDefinition() {\n if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } // Many definitions begin with a description and require a lookahead.\n\n const hasDescription = this.peekDescription();\n const keywordToken = hasDescription\n ? this._lexer.lookahead()\n : this._lexer.token;\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n\n if (hasDescription) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n 'Unexpected description, descriptions are supported only on type definitions.',\n );\n }\n\n switch (keywordToken.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n\n parseOperationDefinition() {\n const start = this._lexer.token;\n\n if (this.peek(TokenKind.BRACE_L)) {\n return this.node(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation: OperationTypeNode.QUERY,\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n const operation = this.parseOperationType();\n let name;\n\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return this.node(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation,\n name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * OperationType : one of query mutation subscription\n */\n\n parseOperationType() {\n const operationToken = this.expectToken(TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return OperationTypeNode.QUERY;\n\n case 'mutation':\n return OperationTypeNode.MUTATION;\n\n case 'subscription':\n return OperationTypeNode.SUBSCRIPTION;\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n\n parseVariableDefinitions() {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseVariableDefinition,\n TokenKind.PAREN_R,\n );\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n\n parseVariableDefinition() {\n return this.node(this._lexer.token, {\n kind: Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS)\n ? this.parseConstValueLiteral()\n : undefined,\n directives: this.parseConstDirectives(),\n });\n }\n /**\n * Variable : $ Name\n */\n\n parseVariable() {\n const start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return this.node(start, {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n });\n }\n /**\n * ```\n * SelectionSet : { Selection+ }\n * ```\n */\n\n parseSelectionSet() {\n return this.node(this._lexer.token, {\n kind: Kind.SELECTION_SET,\n selections: this.many(\n TokenKind.BRACE_L,\n this.parseSelection,\n TokenKind.BRACE_R,\n ),\n });\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n\n parseSelection() {\n return this.peek(TokenKind.SPREAD)\n ? this.parseFragment()\n : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n\n parseField() {\n const start = this._lexer.token;\n const nameOrAlias = this.parseName();\n let alias;\n let name;\n\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return this.node(start, {\n kind: Kind.FIELD,\n alias,\n name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L)\n ? this.parseSelectionSet()\n : undefined,\n });\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n\n parseArguments(isConst) {\n const item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n\n parseArgument(isConst = false) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return this.node(start, {\n kind: Kind.ARGUMENT,\n name,\n value: this.parseValueLiteral(isConst),\n });\n }\n\n parseConstArgument() {\n return this.parseArgument(true);\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n\n parseFragment() {\n const start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n const hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n return this.node(start, {\n kind: Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n });\n }\n\n return this.node(start, {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n\n parseFragmentDefinition() {\n var _this$_options;\n\n const start = this._lexer.token;\n this.expectKeyword('fragment'); // Legacy support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (\n ((_this$_options = this._options) === null || _this$_options === void 0\n ? void 0\n : _this$_options.allowLegacyFragmentVariables) === true\n ) {\n return this.node(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n return this.node(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentName : Name but not `on`\n */\n\n parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseValueLiteral(isConst) {\n const token = this._lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case TokenKind.INT:\n this._lexer.advance();\n\n return this.node(token, {\n kind: Kind.INT,\n value: token.value,\n });\n\n case TokenKind.FLOAT:\n this._lexer.advance();\n\n return this.node(token, {\n kind: Kind.FLOAT,\n value: token.value,\n });\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case TokenKind.NAME:\n this._lexer.advance();\n\n switch (token.value) {\n case 'true':\n return this.node(token, {\n kind: Kind.BOOLEAN,\n value: true,\n });\n\n case 'false':\n return this.node(token, {\n kind: Kind.BOOLEAN,\n value: false,\n });\n\n case 'null':\n return this.node(token, {\n kind: Kind.NULL,\n });\n\n default:\n return this.node(token, {\n kind: Kind.ENUM,\n value: token.value,\n });\n }\n\n case TokenKind.DOLLAR:\n if (isConst) {\n this.expectToken(TokenKind.DOLLAR);\n\n if (this._lexer.token.kind === TokenKind.NAME) {\n const varName = this._lexer.token.value;\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected variable \"$${varName}\" in constant value.`,\n );\n } else {\n throw this.unexpected(token);\n }\n }\n\n return this.parseVariable();\n\n default:\n throw this.unexpected();\n }\n }\n\n parseConstValueLiteral() {\n return this.parseValueLiteral(true);\n }\n\n parseStringLiteral() {\n const token = this._lexer.token;\n\n this._lexer.advance();\n\n return this.node(token, {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n });\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n\n parseList(isConst) {\n const item = () => this.parseValueLiteral(isConst);\n\n return this.node(this._lexer.token, {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n });\n }\n /**\n * ```\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n * ```\n */\n\n parseObject(isConst) {\n const item = () => this.parseObjectField(isConst);\n\n return this.node(this._lexer.token, {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n });\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n\n parseObjectField(isConst) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return this.node(start, {\n kind: Kind.OBJECT_FIELD,\n name,\n value: this.parseValueLiteral(isConst),\n });\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n\n parseDirectives(isConst) {\n const directives = [];\n\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n\n parseConstDirectives() {\n return this.parseDirectives(true);\n }\n /**\n * ```\n * Directive[Const] : @ Name Arguments[?Const]?\n * ```\n */\n\n parseDirective(isConst) {\n const start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return this.node(start, {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n });\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n\n parseTypeReference() {\n const start = this._lexer.token;\n let type;\n\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n const innerType = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = this.node(start, {\n kind: Kind.LIST_TYPE,\n type: innerType,\n });\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return this.node(start, {\n kind: Kind.NON_NULL_TYPE,\n type,\n });\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n\n parseNamedType() {\n return this.node(this._lexer.token, {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n });\n } // Implements the parsing rules in the Type Definition section.\n\n peekDescription() {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n\n parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * ```\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n * ```\n */\n\n parseSchemaDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.many(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n return this.node(start, {\n kind: Kind.SCHEMA_DEFINITION,\n description,\n directives,\n operationTypes,\n });\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n\n parseOperationTypeDefinition() {\n const start = this._lexer.token;\n const operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n const type = this.parseNamedType();\n return this.node(start, {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation,\n type,\n });\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n\n parseScalarTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n\n parseObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n\n parseImplementsInterfaces() {\n return this.expectOptionalKeyword('implements')\n ? this.delimitedMany(TokenKind.AMP, this.parseNamedType)\n : [];\n }\n /**\n * ```\n * FieldsDefinition : { FieldDefinition+ }\n * ```\n */\n\n parseFieldsDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseFieldDefinition,\n TokenKind.BRACE_R,\n );\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n\n parseFieldDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.FIELD_DEFINITION,\n description,\n name,\n arguments: args,\n type,\n directives,\n });\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n\n parseArgumentDefs() {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseInputValueDef,\n TokenKind.PAREN_R,\n );\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n\n parseInputValueDef() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n let defaultValue;\n\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseConstValueLiteral();\n }\n\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description,\n name,\n type,\n defaultValue,\n directives,\n });\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n\n parseInterfaceTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n\n parseUnionTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n return this.node(start, {\n kind: Kind.UNION_TYPE_DEFINITION,\n description,\n name,\n directives,\n types,\n });\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n\n parseUnionMemberTypes() {\n return this.expectOptionalToken(TokenKind.EQUALS)\n ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType)\n : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n\n parseEnumTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n return this.node(start, {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description,\n name,\n directives,\n values,\n });\n }\n /**\n * ```\n * EnumValuesDefinition : { EnumValueDefinition+ }\n * ```\n */\n\n parseEnumValuesDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseEnumValueDefinition,\n TokenKind.BRACE_R,\n );\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n */\n\n parseEnumValueDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseEnumValueName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseEnumValueName() {\n if (\n this._lexer.token.value === 'true' ||\n this._lexer.token.value === 'false' ||\n this._lexer.token.value === 'null'\n ) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n `${getTokenDesc(\n this._lexer.token,\n )} is reserved and cannot be used for an enum value.`,\n );\n }\n\n return this.parseName();\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n\n parseInputObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n return this.node(start, {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * InputFieldsDefinition : { InputValueDefinition+ }\n * ```\n */\n\n parseInputFieldsDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseInputValueDef,\n TokenKind.BRACE_R,\n );\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n\n parseTypeSystemExtension() {\n const keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * ```\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n * ```\n */\n\n parseSchemaExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.optionalMany(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.SCHEMA_EXTENSION,\n directives,\n operationTypes,\n });\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n\n parseScalarTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n\n parseObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n\n parseInterfaceTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n\n parseUnionTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.UNION_TYPE_EXTENSION,\n name,\n directives,\n types,\n });\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n\n parseEnumTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name,\n directives,\n values,\n });\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n\n parseInputObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n * ```\n */\n\n parseDirectiveDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n const repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n const locations = this.parseDirectiveLocations();\n return this.node(start, {\n kind: Kind.DIRECTIVE_DEFINITION,\n description,\n name,\n arguments: args,\n repeatable,\n locations,\n });\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n\n parseDirectiveLocations() {\n return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n\n parseDirectiveLocation() {\n const start = this._lexer.token;\n const name = this.parseName();\n\n if (Object.prototype.hasOwnProperty.call(DirectiveLocation, name.value)) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a node that, if configured to do so, sets a \"loc\" field as a\n * location object, used to identify the place in the source that created a\n * given parsed object.\n */\n\n node(startToken, node) {\n var _this$_options2;\n\n if (\n ((_this$_options2 = this._options) === null || _this$_options2 === void 0\n ? void 0\n : _this$_options2.noLocation) !== true\n ) {\n node.loc = new Location(\n startToken,\n this._lexer.lastToken,\n this._lexer.source,\n );\n }\n\n return node;\n }\n /**\n * Determines if the next token is of a given kind\n */\n\n peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`,\n );\n }\n /**\n * If the next token is of the given kind, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n } else {\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected \"${value}\", found ${getTokenDesc(token)}.`,\n );\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n\n unexpected(atToken) {\n const token =\n atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected ${getTokenDesc(token)}.`,\n );\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n\n delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n\n return nodes;\n }\n}\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n const value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? ` \"${value}\"` : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\nfunction getTokenKindDesc(kind) {\n return isPunctuatorTokenKind(kind) ? `\"${kind}\"` : kind;\n}\n","import { __assign } from \"tslib\";\nimport { parse } from 'graphql';\nvar docCache = new Map();\nvar fragmentSourceMap = new Map();\nvar printFragmentWarnings = true;\nvar experimentalFragmentVariables = false;\nfunction normalize(string) {\n return string.replace(/[\\s,]+/g, ' ').trim();\n}\nfunction cacheKeyFromLoc(loc) {\n return normalize(loc.source.body.substring(loc.start, loc.end));\n}\nfunction processFragments(ast) {\n var seenKeys = new Set();\n var definitions = [];\n ast.definitions.forEach(function (fragmentDefinition) {\n if (fragmentDefinition.kind === 'FragmentDefinition') {\n var fragmentName = fragmentDefinition.name.value;\n var sourceKey = cacheKeyFromLoc(fragmentDefinition.loc);\n var sourceKeySet = fragmentSourceMap.get(fragmentName);\n if (sourceKeySet && !sourceKeySet.has(sourceKey)) {\n if (printFragmentWarnings) {\n console.warn(\"Warning: fragment with name \" + fragmentName + \" already exists.\\n\"\n + \"graphql-tag enforces all fragment names across your application to be unique; read more about\\n\"\n + \"this in the docs: http://dev.apollodata.com/core/fragments.html#unique-names\");\n }\n }\n else if (!sourceKeySet) {\n fragmentSourceMap.set(fragmentName, sourceKeySet = new Set);\n }\n sourceKeySet.add(sourceKey);\n if (!seenKeys.has(sourceKey)) {\n seenKeys.add(sourceKey);\n definitions.push(fragmentDefinition);\n }\n }\n else {\n definitions.push(fragmentDefinition);\n }\n });\n return __assign(__assign({}, ast), { definitions: definitions });\n}\nfunction stripLoc(doc) {\n var workSet = new Set(doc.definitions);\n workSet.forEach(function (node) {\n if (node.loc)\n delete node.loc;\n Object.keys(node).forEach(function (key) {\n var value = node[key];\n if (value && typeof value === 'object') {\n workSet.add(value);\n }\n });\n });\n var loc = doc.loc;\n if (loc) {\n delete loc.startToken;\n delete loc.endToken;\n }\n return doc;\n}\nfunction parseDocument(source) {\n var cacheKey = normalize(source);\n if (!docCache.has(cacheKey)) {\n var parsed = parse(source, {\n experimentalFragmentVariables: experimentalFragmentVariables,\n allowLegacyFragmentVariables: experimentalFragmentVariables\n });\n if (!parsed || parsed.kind !== 'Document') {\n throw new Error('Not a valid GraphQL document.');\n }\n docCache.set(cacheKey, stripLoc(processFragments(parsed)));\n }\n return docCache.get(cacheKey);\n}\nexport function gql(literals) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (typeof literals === 'string') {\n literals = [literals];\n }\n var result = literals[0];\n args.forEach(function (arg, i) {\n if (arg && arg.kind === 'Document') {\n result += arg.loc.source.body;\n }\n else {\n result += arg;\n }\n result += literals[i + 1];\n });\n return parseDocument(result);\n}\nexport function resetCaches() {\n docCache.clear();\n fragmentSourceMap.clear();\n}\nexport function disableFragmentWarnings() {\n printFragmentWarnings = false;\n}\nexport function enableExperimentalFragmentVariables() {\n experimentalFragmentVariables = true;\n}\nexport function disableExperimentalFragmentVariables() {\n experimentalFragmentVariables = false;\n}\nvar extras = {\n gql: gql,\n resetCaches: resetCaches,\n disableFragmentWarnings: disableFragmentWarnings,\n enableExperimentalFragmentVariables: enableExperimentalFragmentVariables,\n disableExperimentalFragmentVariables: disableExperimentalFragmentVariables\n};\n(function (gql_1) {\n gql_1.gql = extras.gql, gql_1.resetCaches = extras.resetCaches, gql_1.disableFragmentWarnings = extras.disableFragmentWarnings, gql_1.enableExperimentalFragmentVariables = extras.enableExperimentalFragmentVariables, gql_1.disableExperimentalFragmentVariables = extras.disableExperimentalFragmentVariables;\n})(gql || (gql = {}));\ngql[\"default\"] = gql;\nexport default gql;\n//# sourceMappingURL=index.js.map","(typeof navigator !== \"undefined\") && (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n var svgNS = 'http://www.w3.org/2000/svg';\n var locationHref = '';\n var _useWebWorker = false;\n var initialDefaultFrame = -999999;\n\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\n\n var getLocationHref = function getLocationHref() {\n return locationHref;\n };\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type);\n }\n\n function extendPrototype(sources, destination) {\n var i;\n var len = sources.length;\n var sourcePrototype;\n\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n\n AudioController.prototype = {\n addAudio: function addAudio(audio) {\n this.audios.push(audio);\n },\n pause: function pause() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause();\n }\n },\n resume: function resume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume();\n }\n },\n setRate: function setRate(rateValue) {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue);\n }\n },\n createAudio: function createAudio(assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath);\n }\n\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\n }\n\n return {\n isPlaying: false,\n play: function play() {\n this.isPlaying = true;\n },\n seek: function seek() {\n this.isPlaying = false;\n },\n playing: function playing() {},\n rate: function rate() {},\n setVolume: function setVolume() {}\n };\n },\n setAudioFactory: function setAudioFactory(audioFactory) {\n this.audioFactory = audioFactory;\n },\n setVolume: function setVolume(value) {\n this._volume = value;\n\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n\n this._updateVolume();\n },\n getVolume: function getVolume() {\n return this._volume;\n },\n _updateVolume: function _updateVolume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n }\n }\n };\n return function () {\n return new AudioController();\n };\n }();\n\n var createTypedArray = function () {\n function createRegularArray(type, len) {\n var i = 0;\n var arr = [];\n var value;\n\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n\n default:\n value = 1.1;\n break;\n }\n\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n\n return arr;\n }\n\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n\n if (type === 'int16') {\n return new Int16Array(len);\n }\n\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n\n return createRegularArray(type, len);\n }\n\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n\n return createRegularArray;\n }();\n\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n var subframeEnabled = true;\n var expressionsPlugin = null;\n var expressionsInterfaces = null;\n var idPrefix$1 = '';\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n var _shouldRoundValues = false;\n var bmPow = Math.pow;\n var bmSqrt = Math.sqrt;\n var bmFloor = Math.floor;\n var bmMax = Math.max;\n var bmMin = Math.min;\n var BMMath = {};\n\n (function () {\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n var i;\n var len = propertyNames.length;\n\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n\n function ProjectInterface$1() {\n return {};\n }\n\n BMMath.random = Math.random;\n\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n\n return absArr;\n }\n\n return Math.abs(val);\n };\n\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n\n return value;\n }\n\n function styleDiv(element) {\n element.style.position = 'absolute';\n element.style.top = 0;\n element.style.left = 0;\n element.style.display = 'block';\n element.style.transformOrigin = '0 0';\n element.style.webkitTransformOrigin = '0 0';\n element.style.backfaceVisibility = 'visible';\n element.style.webkitBackfaceVisibility = 'visible';\n element.style.transformStyle = 'preserve-3d';\n element.style.webkitTransformStyle = 'preserve-3d';\n element.style.mozTransformStyle = 'preserve-3d';\n }\n\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type;\n this.currentTime = currentTime;\n this.totalTime = totalTime;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type;\n this.currentLoop = currentLoop;\n this.totalLoops = totalLoops;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\n\n var createElementID = function () {\n var _count = 0;\n return function createID() {\n _count += 1;\n return idPrefix$1 + '__lottie_element_' + _count;\n };\n }();\n\n function HSVtoRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n\n default:\n break;\n }\n\n return [r, g, b];\n }\n\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var d = max - min;\n var h;\n var s = max === 0 ? 0 : d / max;\n var v = max / 255;\n\n switch (max) {\n case min:\n h = 0;\n break;\n\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n\n default:\n break;\n }\n\n return [h, s, v];\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[0] += offset / 360;\n\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n\n if (g < 0) {\n g = 0;\n }\n\n if (b < 0) {\n b = 0;\n }\n\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\n\n var getIdPrefix = function getIdPrefix() {\n return idPrefix$1;\n };\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type);\n }\n\n function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n var dataManager = function () {\n var _counterId = 1;\n var processes = [];\n var workerFn;\n var workerInstance;\n var workerProxy = {\n onmessage: function onmessage() {},\n postMessage: function postMessage(path) {\n workerFn({\n data: path\n });\n }\n };\n var _workerSelf = {\n postMessage: function postMessage(data) {\n workerProxy.onmessage({\n data: data\n });\n }\n };\n\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n type: 'text/javascript'\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n\n workerFn = fn;\n return workerProxy;\n }\n\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n }\n\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\n }\n }\n }\n }\n\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps);\n completeLayers(layerData.layers, comps);\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes);\n } else if (layerData.ty === 5) {\n completeText(layerData);\n }\n }\n }\n }\n\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n\n return JSON.parse(JSON.stringify(comp.layers));\n }\n\n return null;\n }\n\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k);\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n }\n\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it);\n }\n }\n }\n\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0];\n path.i[i][1] += path.v[i][1];\n path.o[i][0] += path.v[i][0];\n path.o[i][1] += path.v[i][1];\n }\n }\n\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n\n return null;\n }\n\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d;\n textLayer.t.d = {\n k: [{\n s: documentData,\n t: 0\n }]\n };\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkChars = function () {\n var minimumVersion = [4, 7, 99];\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i;\n var len = animationData.chars.length;\n\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes);\n charData.data.ip = 0;\n charData.data.op = 99999;\n charData.data.st = 0;\n charData.data.sr = 1;\n charData.data.ks = {\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n }\n };\n\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no'\n });\n charData.data.shapes[0].it.push({\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n },\n sk: {\n k: 0,\n a: 0\n },\n sa: {\n k: 0,\n a: 0\n },\n ty: 'tr'\n });\n }\n }\n }\n }\n };\n }();\n\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it);\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255;\n shapes[i].c.k[j].s[1] /= 255;\n shapes[i].c.k[j].s[2] /= 255;\n shapes[i].c.k[j].s[3] /= 255;\n }\n\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255;\n shapes[i].c.k[j].e[1] /= 255;\n shapes[i].c.k[j].e[2] /= 255;\n shapes[i].c.k[j].e[3] /= 255;\n }\n }\n } else {\n shapes[i].c.k[0] /= 255;\n shapes[i].c.k[1] /= 255;\n shapes[i].c.k[2] /= 255;\n shapes[i].c.k[3] /= 255;\n }\n }\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed;\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed;\n }\n\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed;\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it);\n }\n }\n }\n\n function iterateLayers(layers) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl;\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n }\n\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n }\n }\n }\n }\n }\n\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\n\n checkColors(animationData);\n checkText(animationData);\n checkChars(animationData);\n checkPathProperties(animationData);\n checkShapes(animationData);\n completeLayers(animationData.layers, animationData.assets);\n completeChars(animationData.chars, animationData.assets);\n animationData.__complete = true;\n }\n\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n }\n }\n\n var moduleOb = {};\n moduleOb.completeData = completeData;\n moduleOb.checkColors = checkColors;\n moduleOb.checkChars = checkChars;\n moduleOb.checkPathProperties = checkPathProperties;\n moduleOb.checkShapes = checkShapes;\n moduleOb.completeLayers = completeLayers;\n return moduleOb;\n }\n\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\n\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n\n return null;\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr);\n callback(response);\n } else {\n try {\n response = formatResponse(xhr);\n callback(response);\n } catch (err) {\n if (errorCallback) {\n errorCallback(err);\n }\n }\n }\n }\n };\n\n try {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), path, true);\n } catch (error) {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n }\n\n xhr.send();\n }\n\n return {\n load: loadAsset\n };\n }();\n }\n\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.dataManager.completeData(data);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation;\n\n _workerSelf.dataManager.completeData(animation);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success'\n });\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n }\n });\n\n workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\n };\n }\n }\n\n function createProcess(onComplete, onError) {\n _counterId += 1;\n var id = 'processId_' + _counterId;\n processes[id] = {\n onComplete: onComplete,\n onError: onError\n };\n return id;\n }\n\n function loadAnimation(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function loadData(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function completeAnimation(anim, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId\n });\n }\n\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation\n };\n }();\n\n var ImagePreloader = function () {\n var proxyImage = function () {\n var canvas = createTag('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return canvas;\n }();\n\n function imageLoaded() {\n this.loadedAssets += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n }\n\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n\n if (box.width || _count > 500) {\n this._imageLoaded();\n\n clearInterval(intervalId);\n }\n\n _count += 1;\n }.bind(this), 50);\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createTag('img');\n img.crossOrigin = 'anonymous';\n img.addEventListener('load', this._imageLoaded, false);\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.src = path;\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createFootageData(data) {\n var ob = {\n assetData: data\n };\n var path = getAssetsPath(data, this.assetsPath, this.path);\n dataManager.loadData(path, function (footageData) {\n ob.img = footageData;\n\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1;\n this.images.push(this._createImageData(assets[i]));\n } else if (assets[i].t === 3) {\n this.totalFootages += 1;\n this.images.push(this.createFootageData(assets[i]));\n }\n }\n }\n }\n\n function setPath(path) {\n this.path = path || '';\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\n\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper;\n this._createImageData = this.createImageData.bind(this);\n } else {\n this._createImageData = this.createImgData.bind(this);\n }\n }\n\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this);\n this._footageLoaded = footageLoaded.bind(this);\n this.testImageLoaded = testImageLoaded.bind(this);\n this.createFootageData = createFootageData.bind(this);\n this.assetsPath = '';\n this.path = '';\n this.totalImages = 0;\n this.totalFootages = 0;\n this.loadedAssets = 0;\n this.loadedFootagesCount = 0;\n this.imagesLoadedCb = null;\n this.images = [];\n }\n\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType\n };\n return ImagePreloaderFactory;\n }();\n\n function BaseEvent() {}\n\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args);\n }\n }\n },\n addEventListener: function addEventListener(eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = [];\n }\n\n this._cbs[eventName].push(callback);\n\n return function () {\n this.removeEventListener(eventName, callback);\n }.bind(this);\n },\n removeEventListener: function removeEventListener(eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null;\n } else if (this._cbs[eventName]) {\n var i = 0;\n var len = this._cbs[eventName].length;\n\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n\n i -= 1;\n len -= 1;\n }\n\n i += 1;\n }\n\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null;\n }\n }\n }\n };\n\n var markerParser = function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n');\n var keys = {};\n var line;\n var keysCount = 0;\n\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n\n if (keysCount === 0) {\n throw new Error();\n }\n\n return keys;\n }\n\n return function (_markers) {\n var markers = [];\n\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i];\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr\n };\n\n try {\n markerData.payload = JSON.parse(_markers[i].cm);\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm);\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm\n };\n }\n }\n\n markers.push(markerData);\n }\n\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame);\n }\n\n return this.compositions[i].compInterface;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n\n function getRenderer(key) {\n return renderers[key];\n }\n\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n } // Returns any renderer that is registered\n\n\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n\n return '';\n }\n\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n var AnimationItem = function AnimationItem() {\n this._cbs = [];\n this.name = '';\n this.path = '';\n this.isLoaded = false;\n this.currentFrame = 0;\n this.currentRawFrame = 0;\n this.firstFrame = 0;\n this.totalFrames = 0;\n this.frameRate = 0;\n this.frameMult = 0;\n this.playSpeed = 1;\n this.playDirection = 1;\n this.playCount = 0;\n this.animationData = {};\n this.assets = [];\n this.isPaused = true;\n this.autoplay = false;\n this.loop = true;\n this.renderer = null;\n this.animationID = createElementID();\n this.assetsPath = '';\n this.timeCompleted = 0;\n this.segmentPos = 0;\n this.isSubframeEnabled = getSubframeEnabled();\n this.segments = [];\n this._idle = true;\n this._completedLoop = false;\n this.projectInterface = ProjectInterface();\n this.imagePreloader = new ImagePreloader();\n this.audioController = audioControllerFactory();\n this.markers = [];\n this.configAnimation = this.configAnimation.bind(this);\n this.onSetupError = this.onSetupError.bind(this);\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n this.expressionsPlugin = getExpressionsPlugin();\n };\n\n extendPrototype([BaseEvent], AnimationItem);\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n\n var animType = 'svg';\n\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\n\n var RendererClass = getRenderer(animType);\n this.renderer = new RendererClass(this, params.rendererSettings);\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n this.renderer.setProjectInterface(this.projectInterface);\n this.animType = animType;\n\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true;\n } else if (params.loop === false) {\n this.loop = false;\n } else {\n this.loop = parseInt(params.loop, 10);\n }\n\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\n this.name = params.name ? params.name : '';\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n this.assetsPath = params.assetsPath;\n this.initialSegment = params.initialSegment;\n\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\n\n if (params.animationData) {\n this.setupAnimation(params.animationData);\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n }\n\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n }\n };\n\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\n\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (_typeof$4(animationData) !== 'object') {\n animationData = JSON.parse(animationData);\n }\n }\n\n var params = {\n wrapper: wrapper,\n animationData: animationData\n };\n var wrapperAttributes = wrapper.attributes;\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n if (loop === 'false') {\n params.loop = false;\n } else if (loop === 'true') {\n params.loop = true;\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10);\n }\n\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n params.autoplay = autoplay !== 'false';\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n if (prerender === 'false') {\n params.prerender = false;\n }\n\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\n };\n\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n\n var layers = this.animationData.layers;\n var i;\n var len = layers.length;\n var newLayers = data.layers;\n var j;\n var jLen = newLayers.length;\n\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n\n i += 1;\n }\n }\n\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars);\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n }\n\n if (data.assets) {\n len = data.assets.length;\n\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\n\n var segment = segments.shift();\n this.timeCompleted = segment.time * this.frameRate;\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n this.segmentPos += 1;\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n this.trigger('data_failed');\n }.bind(this));\n };\n\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\n\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath);\n this.imagePreloader.setPath(this.path);\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n };\n\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n\n try {\n this.animationData = animData;\n\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n this.firstFrame = Math.round(this.initialSegment[0]);\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n this.firstFrame = Math.round(this.animationData.ip);\n }\n\n this.renderer.configAnimation(animData);\n\n if (!animData.assets) {\n animData.assets = [];\n }\n\n this.assets = this.animationData.assets;\n this.frameRate = this.animationData.fr;\n this.frameMult = this.animationData.fr / 1000;\n this.renderer.searchExtraCompositions(animData.assets);\n this.markers = markerParser(animData.markers || []);\n this.trigger('config_ready');\n this.preloadImages();\n this.loadSegments();\n this.updaFrameModifier();\n this.waitForFontsLoaded();\n\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\n };\n\n AnimationItem.prototype.checkLoaded = function () {\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n this.isLoaded = true;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n\n if (this.autoplay) {\n this.play();\n }\n }\n };\n\n AnimationItem.prototype.resize = function (width, height) {\n // Adding this validation for backwards compatibility in case an event object was being passed down\n var _width = typeof width === 'number' ? width : undefined;\n\n var _height = typeof height === 'number' ? height : undefined;\n\n this.renderer.updateContainerSize(_width, _height);\n };\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\n\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted;\n }\n\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === false) {\n this.isPaused = true;\n this.trigger('_pause');\n this._idle = true;\n this.trigger('_idle');\n this.audioController.pause();\n }\n };\n\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n\n return null;\n };\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n this.goToAndStop(marker.time, true);\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value);\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n\n this.pause();\n };\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true);\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true);\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name);\n }\n\n this.play();\n };\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true;\n nextValue = this.totalFrames - 1;\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1;\n\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n this._completedLoop = true;\n this.trigger('loopComplete');\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n if (!this._completedLoop) {\n this._completedLoop = true;\n } else {\n this.trigger('loopComplete');\n }\n } else {\n _isComplete = true;\n nextValue = 0;\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(-1);\n }\n }\n\n this.totalFrames = arr[0] - arr[1];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[1];\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(1);\n }\n }\n\n this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n\n this.trigger('segmentStart');\n };\n\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init;\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init;\n }\n }\n\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n\n if (this.isPaused) {\n this.play();\n }\n };\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n\n if (forceFlag) {\n this.checkSegments(0);\n }\n };\n\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n\n return false;\n };\n\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\n\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = null;\n this.onLoopComplete = null;\n this.onComplete = null;\n this.onSegmentStart = null;\n this.onDestroy = null;\n this.renderer = null;\n this.expressionsPlugin = null;\n this.imagePreloader = null;\n this.projectInterface = null;\n };\n\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.setVolume(val);\n };\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.mute();\n };\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.unmute();\n };\n\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n this.audioController.setRate(this.playSpeed * this.playDirection);\n };\n\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n };\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\n\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path);\n element.updateDocumentData(documentData, index);\n } catch (error) {// TODO: decide how to handle catch case\n }\n };\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame;\n this.drawnFrameEvent.totalTime = this.totalFrames;\n this.drawnFrameEvent.direction = this.frameModifier;\n this.triggerEvent(name, this.drawnFrameEvent);\n break;\n\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n\n default:\n this.triggerEvent(name);\n }\n }\n\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n var animationManager = function () {\n var moduleOb = {};\n var registeredAnimations = [];\n var initTime = 0;\n var len = 0;\n var playingAnimationsNum = 0;\n var _stopped = true;\n var _isFrozen = false;\n\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n\n i += 1;\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n\n var i = 0;\n\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n\n i += 1;\n }\n\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n\n return animations;\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\n\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement);\n animItem.addEventListener('_active', addPlayingCount);\n animItem.addEventListener('_idle', subtractPlayingCount);\n registeredAnimations.push({\n elem: element,\n animation: animItem\n });\n len += 1;\n }\n\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n\n function setSpeed(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n\n function setDirection(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n\n function play(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n\n initTime = nowTime;\n\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n\n function pause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n\n function stop(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n\n function togglePause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n\n function destroy(animation) {\n var i;\n\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\n }\n\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n var i;\n var lenAnims = animElements.length;\n\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n\n registerAnimation(animElements[i], animationData);\n }\n\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\n\n var body = document.getElementsByTagName('body')[0];\n body.innerText = '';\n var div = createTag('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.setAttribute('data-bm-type', renderer);\n body.appendChild(div);\n registerAnimation(div, animationData);\n }\n }\n\n function resize() {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n\n function freeze() {\n _isFrozen = true;\n }\n\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n\n function setVolume(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n\n function mute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n\n function unmute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\n }\n\n moduleOb.registerAnimation = registerAnimation;\n moduleOb.loadAnimation = loadAnimation;\n moduleOb.setSpeed = setSpeed;\n moduleOb.setDirection = setDirection;\n moduleOb.play = play;\n moduleOb.pause = pause;\n moduleOb.stop = stop;\n moduleOb.togglePause = togglePause;\n moduleOb.searchAnimations = searchAnimations;\n moduleOb.resize = resize; // moduleOb.start = start;\n\n moduleOb.goToAndStop = goToAndStop;\n moduleOb.destroy = destroy;\n moduleOb.freeze = freeze;\n moduleOb.unfreeze = unfreeze;\n moduleOb.setVolume = setVolume;\n moduleOb.mute = mute;\n moduleOb.unmute = unmute;\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n return moduleOb;\n }();\n\n /* eslint-disable */\n var BezierFactory = function () {\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n if (beziers[str]) {\n return beziers[str];\n }\n\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\n\n\n function BezierEasing(points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n this.get = this.get.bind(this);\n }\n\n BezierEasing.prototype = {\n get: function get(x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n if (!this._precomputed) this._precompute();\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n _precompute: function _precompute() {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n this._precomputed = true;\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues();\n }\n },\n _calcSampleValues: function _calcSampleValues() {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\n _getTForX: function _getTForX(aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n\n if (initialSlope === 0.0) {\n return guessForT;\n }\n\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return ob;\n }();\n\n var pooling = function () {\n function _double(arr) {\n return arr.concat(createSizedArray(arr.length));\n }\n\n return {\n \"double\": _double\n };\n }();\n\n var poolFactory = function () {\n return function (initialLength, _create, _release) {\n var _length = 0;\n var _maxLength = initialLength;\n var pool = createSizedArray(_maxLength);\n var ob = {\n newElement: newElement,\n release: release\n };\n\n function newElement() {\n var element;\n\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n\n return element;\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n if (_release) {\n _release(element);\n }\n\n pool[_length] = element;\n _length += 1;\n }\n\n return ob;\n };\n }();\n\n var bezierLengthPool = function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments())\n };\n }\n\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n\n function release(element) {\n var i;\n var len = element.lengths.length;\n\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n\n element.lengths.length = 0;\n }\n\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n return det1 > -0.001 && det1 < 0.001;\n }\n\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n }\n\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n var diffDist;\n\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3;\n } else {\n diffDist = dist3 - dist2 - dist1;\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1;\n } else {\n diffDist = dist2 - dist1 - dist3;\n }\n\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\n\n var getBezierLength = function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point = [];\n var lastPoint = [];\n var lengthData = bezierLengthPool.newElement();\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n\n lastPoint[i] = point[i];\n }\n\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n\n lengthData.addedLength = addedLength;\n return lengthData;\n };\n }();\n\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement();\n var closed = shapeData.c;\n var pathV = shapeData.v;\n var pathO = shapeData.o;\n var pathI = shapeData.i;\n var i;\n var len = shapeData._length;\n var lengths = segmentsLength.lengths;\n var totalLength = 0;\n\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n totalLength += lengths[i].addedLength;\n }\n\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\n\n var buildBezierData = function () {\n var storedData = {};\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point;\n var lastPoint = null;\n\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n curveSegments = 2;\n }\n\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n\n return storedData[bezierName];\n };\n }();\n\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents;\n var lengths = bezierData.lengths;\n var len = percents.length;\n var initPos = bmFloor((len - 1) * perc);\n var lengthPos = perc * bezierData.addedLength;\n var lPerc = 0;\n\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n flag = false;\n } else {\n initPos += dir;\n }\n\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos];\n }\n\n flag = false;\n }\n }\n\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData);\n var u1 = 1 - t1;\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n return [ptX, ptY];\n }\n\n var bezierSegmentPoints = createTypedArray('float32', 8);\n\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0;\n } else if (startPerc > 1) {\n startPerc = 1;\n }\n\n var t0 = getDistancePerc(startPerc, bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc, bezierData);\n var i;\n var len = pt1.length;\n var u0 = 1 - t0;\n var u1 = 1 - t1;\n var u0u0u0 = u0 * u0 * u0;\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0t0 = t0 * t0 * t0; //\n\n var u0u0u1 = u0 * u0 * u1;\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0t1 = t0 * t0 * t1; //\n\n var u0u1u1 = u0 * u1 * u1;\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1t1 = t0 * t1 * t1; //\n\n var u1u1u1 = u1 * u1 * u1;\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1t1 = t1 * t1 * t1;\n\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n }\n\n return bezierSegmentPoints;\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\n\n var iterationIndex = caching.lastIndex;\n var i = iterationIndex;\n var len = this.keyframes.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n\n iterationIndex = 0;\n break;\n }\n\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n var k;\n var kLen;\n var perc;\n var jLen;\n var j;\n var fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n\n var bezierData = keyframeMetadata.bezierData;\n\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n } // caching._lastKeyframeIndex = -1;\n\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength * perc;\n var segmentPerc;\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n flag = true;\n jLen = bezierData.points.length;\n\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\n\n break;\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n }\n\n break;\n }\n\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\n }\n\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX;\n var outY;\n var inX;\n var inY;\n var keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\n\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0];\n newValue[1] = endValue[1];\n newValue[2] = endValue[2];\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0];\n newValue[1] = keyData.s[1];\n newValue[2] = keyData.s[2];\n } else {\n var quatStart = createQuaternion(keyData.s);\n var quatEnd = createQuaternion(endValue);\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1;\n } else if (frameNum < keyTime) {\n perc = 0;\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = [];\n }\n\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyframeMetadata.__fnct[i] = fnc;\n } else {\n fnc = keyframeMetadata.__fnct[i];\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x;\n outY = keyData.o.y;\n inX = keyData.i.x;\n inY = keyData.i.y;\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.keyframeMetadata = fnc;\n } else {\n fnc = keyframeMetadata.__fnct;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\n }\n\n endValue = nextKeyData.s || keyData.e;\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n\n caching.lastIndex = iterationIndex;\n return newValue;\n } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n var bx = b[0];\n var by = b[1];\n var bz = b[2];\n var bw = b[3];\n var omega;\n var cosom;\n var sinom;\n var scale0;\n var scale1;\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n scale0 = 1.0 - t;\n scale1 = t;\n }\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n }\n\n function quaternionToEuler(out, quat) {\n var qx = quat[0];\n var qy = quat[1];\n var qz = quat[2];\n var qw = quat[3];\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n out[0] = heading / degToRads;\n out[1] = attitude / degToRads;\n out[2] = bank / degToRads;\n }\n\n function createQuaternion(values) {\n var heading = values[0] * degToRads;\n var attitude = values[1] * degToRads;\n var bank = values[2] * degToRads;\n var c1 = Math.cos(heading / 2);\n var c2 = Math.cos(attitude / 2);\n var c3 = Math.cos(bank / 2);\n var s1 = Math.sin(heading / 2);\n var s2 = Math.sin(attitude / 2);\n var s3 = Math.sin(bank / 2);\n var w = c1 * c2 * c3 - s1 * s2 * s3;\n var x = s1 * s2 * c3 + c1 * c2 * s3;\n var y = s1 * c2 * c3 + c1 * s2 * s3;\n var z = c1 * s2 * c3 - s1 * c2 * s3;\n return [x, y, z, w];\n }\n\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1;\n this._caching.lastIndex = 0;\n }\n\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0;\n var len = this.v.length;\n\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n\n i += 1;\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.mult = mult || 1;\n this.data = data;\n this.v = mult ? data.k * mult : data.k;\n this.pv = data.k;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.vel = 0;\n this.effectsSequence = [];\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n this.mult = mult || 1;\n this.data = data;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.frameId = -1;\n var i;\n var len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult;\n this.pv[i] = data.k[i];\n }\n\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1\n };\n this.k = true;\n this.kf = true;\n this.data = data;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.v = initFrame;\n this.pv = initFrame;\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.addEffect = addEffect;\n }\n\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n var i;\n var len = data.k.length;\n var s;\n var e;\n var to;\n var ti;\n\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s;\n e = data.k[i + 1].s;\n to = data.k[i].to;\n ti = data.k[i].ti;\n\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n }\n }\n }\n\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.data = data;\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.k = true;\n this.kf = true;\n this._isFirstFrame = true;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.frameId = -1;\n var arrLen = data.k[0].s.length;\n this.v = createTypedArray('float32', arrLen);\n this.pv = createTypedArray('float32', arrLen);\n\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\n\n var PropertyFactory = function () {\n function getProp(elem, data, type, mult, container) {\n if (data.sid) {\n data = elem.globalData.slotManager.getProp(data);\n }\n\n var p;\n\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container);\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container);\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container);\n break;\n\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n\n default:\n break;\n }\n }\n\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n this.container.addDynamicProperty(this);\n this._isAnimated = true;\n }\n },\n iterateDynamicProperties: function iterateDynamicProperties() {\n this._mdf = false;\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true;\n }\n }\n },\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n this.container = container;\n this.dynamicProperties = [];\n this._mdf = false;\n this._isAnimated = false;\n }\n };\n\n var pointPool = function () {\n function create() {\n return createTypedArray('float32', 2);\n }\n\n return poolFactory(8, create);\n }();\n\n function ShapePath() {\n this.c = false;\n this._length = 0;\n this._maxLength = 8;\n this.v = createSizedArray(this._maxLength);\n this.o = createSizedArray(this._maxLength);\n this.i = createSizedArray(this._maxLength);\n }\n\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n\n while (i < len) {\n this.v[i] = pointPool.newElement();\n this.o[i] = pointPool.newElement();\n this.i[i] = pointPool.newElement();\n i += 1;\n }\n };\n\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n\n this._length = len;\n };\n\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength));\n this.i = this.i.concat(createSizedArray(this._maxLength));\n this.o = this.o.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n };\n\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n\n case 'i':\n arr = this.i;\n break;\n\n case 'o':\n arr = this.o;\n break;\n\n default:\n arr = [];\n break;\n }\n\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\n\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace);\n this.setXYAt(oX, oY, 'o', pos, replace);\n this.setXYAt(iX, iY, 'i', pos, replace);\n };\n\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath();\n newPath.setPathData(this.c, this._length);\n var vertices = this.v;\n var outPoints = this.o;\n var inPoints = this.i;\n var init = 0;\n\n if (this.c) {\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n init = 1;\n }\n\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n cnt -= 1;\n }\n\n return newPath;\n };\n\n ShapePath.prototype.length = function () {\n return this._length;\n };\n\n var shapePool = function () {\n function create() {\n return new ShapePath();\n }\n\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i]);\n pointPool.release(shapePath.i[i]);\n pointPool.release(shapePath.o[i]);\n shapePath.v[i] = null;\n shapePath.i[i] = null;\n shapePath.o[i] = null;\n }\n\n shapePath._length = 0;\n shapePath.c = false;\n }\n\n function clone(shape) {\n var cloned = factory.newElement();\n var i;\n var len = shape._length === undefined ? shape.v.length : shape._length;\n cloned.setLength(len);\n cloned.c = shape.c;\n\n for (i = 0; i < len; i += 1) {\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n }\n\n return cloned;\n }\n\n var factory = poolFactory(4, create, release);\n factory.clone = clone;\n return factory;\n }();\n\n function ShapeCollection() {\n this._length = 0;\n this._maxLength = 4;\n this.shapes = createSizedArray(this._maxLength);\n }\n\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n }\n\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\n\n this._length = 0;\n };\n\n var shapeCollectionPool = function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release\n };\n var _length = 0;\n var _maxLength = 4;\n var pool = createSizedArray(_maxLength);\n\n function newShapeCollection() {\n var shapeCollection;\n\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n\n return shapeCollection;\n }\n\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n\n shapeCollection._length = 0;\n\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n pool[_length] = shapeCollection;\n _length += 1;\n }\n\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS;\n var keyPropE;\n var isHold;\n var j;\n var k;\n var jLen;\n var kLen;\n var perc;\n var vertexValue;\n var kf = this.keyframes;\n\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0];\n isHold = true;\n iterationIndex = 0;\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\n\n isHold = true;\n } else {\n var i = iterationIndex;\n var len = kf.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1;\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0;\n } else {\n var fnc;\n\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n\n keyPropS = keyData.s[0];\n }\n\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n previousValue.i[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n previousValue.o[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n previousValue.v[j][k] = vertexValue;\n }\n }\n }\n\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n var lastFrame = this._caching.lastFrame;\n\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n this.interpolateShape(frameNum, this.pv, this._caching); /// /\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n\n var i;\n var len = shape1._length;\n\n for (i = 0; i < len; i += 1) {\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n\n return true;\n }\n\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath);\n this.localShapeCollection.releaseShapes();\n this.localShapeCollection.addShape(this.v);\n this._mdf = true;\n this.paths = this.localShapeCollection;\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var finalValue;\n\n if (this.kf) {\n finalValue = this.pv;\n } else if (this.data.ks) {\n finalValue = this.data.ks.k;\n } else {\n finalValue = this.data.pt.k;\n }\n\n var i;\n var len = this.effectsSequence.length;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.container = elem;\n this.elem = elem;\n this.data = data;\n this.k = false;\n this.kf = false;\n this._mdf = false;\n var pathData = type === 3 ? data.pt.k : data.ks.k;\n this.v = shapePool.clone(pathData);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.reset = resetShape;\n this.effectsSequence = [];\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.elem = elem;\n this.container = elem;\n this.offsetTime = elem.data.st;\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n this.keyframesMetadata = [];\n this.k = true;\n this.kf = true;\n var len = this.keyframes[0].s[0].i.length;\n this.v = shapePool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0\n };\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n }\n\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.localShapeCollection.addShape(this.v);\n this.d = data.d;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertEllToPath();\n }\n },\n convertEllToPath: function convertEllToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var s0 = this.s.v[0] / 2;\n var s1 = this.s.v[1] / 2;\n\n var _cw = this.d !== 3;\n\n var _v = this.v;\n _v.v[0][0] = p0;\n _v.v[0][1] = p1 - s1;\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.v[1][1] = p1;\n _v.v[2][0] = p0;\n _v.v[2][1] = p1 + s1;\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.v[3][1] = p1;\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.i[0][1] = p1 - s1;\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.i[1][1] = p1 - s1 * cPoint;\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.i[2][1] = p1 + s1;\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.i[3][1] = p1 + s1 * cPoint;\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.o[0][1] = p1 - s1;\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.o[1][1] = p1 + s1 * cPoint;\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.o[2][1] = p1 + s1;\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.o[3][1] = p1 - s1 * cPoint;\n }\n };\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n return EllShapePropertyFactory;\n }();\n\n var StarShapeProperty = function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 0);\n this.elem = elem;\n this.comp = elem.comp;\n this.data = data;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n this.convertToPath = this.convertStarToPath;\n } else {\n this.convertToPath = this.convertPolygonToPath;\n }\n\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertToPath();\n }\n },\n convertStarToPath: function convertStarToPath() {\n var numPts = Math.floor(this.pt.v) * 2;\n var angle = Math.PI * 2 / numPts;\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\n\n var longFlag = true;\n var longRad = this.or.v;\n var shortRad = this.ir.v;\n var longRound = this.os.v;\n var shortRound = this.is.v;\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n var i;\n var rad;\n var roundness;\n var perimSegment;\n var currentAng = -Math.PI / 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad;\n roundness = longFlag ? longRound : shortRound;\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\n\n longFlag = !longFlag;\n currentAng += angle * dir;\n }\n },\n convertPolygonToPath: function convertPolygonToPath() {\n var numPts = Math.floor(this.pt.v);\n var angle = Math.PI * 2 / numPts;\n var rad = this.or.v;\n var roundness = this.os.v;\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n var i;\n var currentAng = -Math.PI * 0.5;\n var dir = this.data.d === 3 ? -1 : 1;\n currentAng += this.r.v;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n currentAng += angle * dir;\n }\n\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\n\n var RectShapeProperty = function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.c = true;\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\n }\n\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function convertRectToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var v0 = this.s.v[0] / 2;\n var v1 = this.s.v[1] / 2;\n var round = bmMin(v0, v1, this.r.v);\n var cPoint = round * (1 - roundCorner);\n this.v._length = 0;\n\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n }\n }\n },\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n\n function getShapeProp(elem, data, type) {\n var prop;\n\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type);\n } else {\n prop = new ShapeProperty(elem, data, type);\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data);\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data);\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n }\n\n function getConstructorFunction() {\n return ShapeProperty;\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\n\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\n\n var Matrix = function () {\n var _cos = Math.cos;\n var _sin = Math.sin;\n var _tan = Math.tan;\n var _rnd = Math.round;\n\n function reset() {\n this.props[0] = 1;\n this.props[1] = 0;\n this.props[2] = 0;\n this.props[3] = 0;\n this.props[4] = 0;\n this.props[5] = 1;\n this.props[6] = 0;\n this.props[7] = 0;\n this.props[8] = 0;\n this.props[9] = 0;\n this.props[10] = 1;\n this.props[11] = 0;\n this.props[12] = 0;\n this.props[13] = 0;\n this.props[14] = 0;\n this.props[15] = 1;\n return this;\n }\n\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n }\n\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\n\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a;\n this.props[1] = b;\n this.props[2] = c;\n this.props[3] = d;\n this.props[4] = e;\n this.props[5] = f;\n this.props[6] = g;\n this.props[7] = h;\n this.props[8] = i;\n this.props[9] = j;\n this.props[10] = k;\n this.props[11] = l;\n this.props[12] = m;\n this.props[13] = n;\n this.props[14] = o;\n this.props[15] = p;\n return this;\n }\n\n function translate(tx, ty, tz) {\n tz = tz || 0;\n\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n }\n\n return this;\n }\n\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props;\n\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2;\n _p[13] = _p[13] * f2 + _p[15] * n2;\n _p[14] = _p[14] * k2 + _p[15] * o2;\n _p[15] *= p2; // }\n\n this._identityCalculated = false;\n return this;\n }\n\n var a1 = _p[0];\n var b1 = _p[1];\n var c1 = _p[2];\n var d1 = _p[3];\n var e1 = _p[4];\n var f1 = _p[5];\n var g1 = _p[6];\n var h1 = _p[7];\n var i1 = _p[8];\n var j1 = _p[9];\n var k1 = _p[10];\n var l1 = _p[11];\n var m1 = _p[12];\n var n1 = _p[13];\n var o1 = _p[14];\n var p1 = _p[15];\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\n\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n this._identityCalculated = false;\n return this;\n }\n\n function multiply(matrix) {\n var matrixProps = matrix.props;\n return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n }\n\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n this._identityCalculated = true;\n }\n\n return this._identity;\n }\n\n function equals(matr) {\n var i = 0;\n\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n }\n\n function clone(matr) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n\n return matr;\n }\n\n function cloneFromProps(props) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\n }\n\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n };\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\n }\n\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n }\n\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n }\n\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n }\n\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n var a = this.props[5] / determinant;\n var b = -this.props[1] / determinant;\n var c = -this.props[4] / determinant;\n var d = this.props[0] / determinant;\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n var inverseMatrix = new Matrix();\n inverseMatrix.props[0] = a;\n inverseMatrix.props[1] = b;\n inverseMatrix.props[4] = c;\n inverseMatrix.props[5] = d;\n inverseMatrix.props[12] = e;\n inverseMatrix.props[13] = f;\n return inverseMatrix;\n }\n\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n\n return retPts;\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n\n if (this.isIdentity()) {\n arr[0] = pt1[0];\n arr[1] = pt1[1];\n arr[2] = pt2[0];\n arr[3] = pt2[1];\n arr[4] = pt3[0];\n arr[5] = pt3[1];\n } else {\n var p0 = this.props[0];\n var p1 = this.props[1];\n var p4 = this.props[4];\n var p5 = this.props[5];\n var p12 = this.props[12];\n var p13 = this.props[13];\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n }\n\n return arr;\n }\n\n function applyToPointArray(x, y, z) {\n var arr;\n\n if (this.isIdentity()) {\n arr = [x, y, z];\n } else {\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n }\n\n return arr;\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\n\n var _p = this.props;\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n }\n\n function toCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n\n return cssValue;\n }\n\n function roundMatrixProperty(val) {\n var v = 10000;\n\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n\n return val;\n }\n\n function to2dCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var props = this.props;\n\n var _a = roundMatrixProperty(props[0]);\n\n var _b = roundMatrixProperty(props[1]);\n\n var _c = roundMatrixProperty(props[4]);\n\n var _d = roundMatrixProperty(props[5]);\n\n var _e = roundMatrixProperty(props[12]);\n\n var _f = roundMatrixProperty(props[13]);\n\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\n\n return function () {\n this.reset = reset;\n this.rotate = rotate;\n this.rotateX = rotateX;\n this.rotateY = rotateY;\n this.rotateZ = rotateZ;\n this.skew = skew;\n this.skewFromAxis = skewFromAxis;\n this.shear = shear;\n this.scale = scale;\n this.setTransform = setTransform;\n this.translate = translate;\n this.transform = transform;\n this.multiply = multiply;\n this.applyToPoint = applyToPoint;\n this.applyToX = applyToX;\n this.applyToY = applyToY;\n this.applyToZ = applyToZ;\n this.applyToPointArray = applyToPointArray;\n this.applyToTriplePoints = applyToTriplePoints;\n this.applyToPointStringified = applyToPointStringified;\n this.toCSS = toCSS;\n this.to2dCSS = to2dCSS;\n this.clone = clone;\n this.cloneFromProps = cloneFromProps;\n this.equals = equals;\n this.inversePoints = inversePoints;\n this.inversePoint = inversePoint;\n this.getInverseMatrix = getInverseMatrix;\n this._t = this.transform;\n this.isIdentity = isIdentity;\n this._identity = true;\n this._identityCalculated = false;\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n }();\n\n function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n\n function setLocation(href) {\n setLocationHref(href);\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n\n return animationManager.loadAnimation(params);\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n\n case 'matrix':\n return Matrix;\n\n default:\n return null;\n }\n }\n\n lottie.play = animationManager.play;\n lottie.pause = animationManager.pause;\n lottie.setLocationHref = setLocation;\n lottie.togglePause = animationManager.togglePause;\n lottie.setSpeed = animationManager.setSpeed;\n lottie.setDirection = animationManager.setDirection;\n lottie.stop = animationManager.stop;\n lottie.searchAnimations = searchAnimations;\n lottie.registerAnimation = animationManager.registerAnimation;\n lottie.loadAnimation = loadAnimation;\n lottie.setSubframeRendering = setSubframeRendering;\n lottie.resize = animationManager.resize; // lottie.start = start;\n\n lottie.goToAndStop = animationManager.goToAndStop;\n lottie.destroy = animationManager.destroy;\n lottie.setQuality = setQuality;\n lottie.inBrowser = inBrowser;\n lottie.installPlugin = installPlugin;\n lottie.freeze = animationManager.freeze;\n lottie.unfreeze = animationManager.unfreeze;\n lottie.setVolume = animationManager.setVolume;\n lottie.mute = animationManager.mute;\n lottie.unmute = animationManager.unmute;\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n lottie.useWebWorker = setWebWorker;\n lottie.setIDPrefix = setPrefix;\n lottie.__getFactory = getFactory;\n lottie.version = '5.12.2';\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n\n return null;\n }\n\n var queryString = '';\n\n if (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n\n renderer = getQueryVariable('renderer');\n }\n\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n try {\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie;\n }\n } catch (err) {//\n }\n\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n\n return ob;\n }();\n\n function ShapeModifier() {}\n\n ShapeModifier.prototype.initModifierProperties = function () {};\n\n ShapeModifier.prototype.addShapeToModifier = function () {};\n\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n data.sh.container.addDynamicProperty(data.sh);\n var shapeData = {\n shape: data.sh,\n data: data,\n localShapeCollection: shapeCollectionPool.newShapeCollection()\n };\n this.shapes.push(shapeData);\n this.addShapeToModifier(shapeData);\n\n if (this._isAnimated) {\n data.setAsAnimated();\n }\n }\n };\n\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = [];\n this.elem = elem;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, data);\n this.frameId = initialDefaultFrame;\n this.closed = false;\n this.k = false;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n\n extendPrototype([ShapeModifier], TrimModifier);\n\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n this.sValue = 0;\n this.eValue = 0;\n this.getValue = this.processKeys;\n this.m = data.m;\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n };\n\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n\n if (e <= 1) {\n segments.push({\n s: s,\n e: e\n });\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1\n });\n } else {\n segments.push({\n s: s,\n e: 1\n });\n segments.push({\n s: 0,\n e: e - 1\n });\n }\n\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n\n return shapeSegments;\n };\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n\n pathsData.length = 0;\n return pathsData;\n };\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n\n if (o < 0) {\n o += 1;\n }\n\n if (this.s.v > 1) {\n s = 1 + o;\n } else if (this.s.v < 0) {\n s = 0 + o;\n } else {\n s = this.s.v + o;\n }\n\n if (this.e.v > 1) {\n e = 1 + o;\n } else if (this.e.v < 0) {\n e = 0 + o;\n } else {\n e = this.e.v + o;\n }\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n s = Math.round(s * 10000) * 0.0001;\n e = Math.round(e * 10000) * 0.0001;\n this.sValue = s;\n this.eValue = e;\n } else {\n s = this.sValue;\n e = this.eValue;\n }\n\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var pathsData;\n var pathData;\n var totalShapeLength;\n var totalModifierLength = 0;\n\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes();\n this.shapes[i].shape._mdf = true;\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0;\n }\n }\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n var segments = [];\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection;\n } else {\n shapePaths = shapeData.shape.paths;\n jLen = shapePaths._length;\n totalShapeLength = 0;\n\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n pathsData.push(pathData);\n totalShapeLength += pathData.totalLength;\n }\n\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n addedLength += shapeData.totalShapeLength;\n } else {\n edges = [[shapeS, shapeE]];\n }\n\n jLen = edges.length;\n\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE\n });\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength\n });\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n }\n\n var newShapesData = this.addShapes(shapeData, segments[0]);\n\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop();\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n } else {\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1]);\n }\n }\n\n this.addPaths(newShapesData, localShapeCollection);\n }\n }\n\n shapeData.shape.paths = localShapeCollection;\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0;\n this.shapes[i].shape._mdf = true;\n }\n }\n };\n\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n };\n\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos);\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i;\n var len = shapeData.shape.paths._length;\n var j;\n var jLen;\n var addedLength = 0;\n var currentLengthData;\n var segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n\n if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n\n shapes.push(shapePath);\n\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths;\n shapePath.c = shapePaths[i].c;\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength;\n shapePath.c = false;\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false;\n break;\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n }\n\n if (addedLength > shapeSegment.e) {\n break;\n }\n\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this._isAnimated = !!this.amount.effectsSequence.length;\n };\n\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100;\n var centerPoint = [0, 0];\n var pathLength = path._length;\n var i = 0;\n\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\n\n centerPoint[0] /= pathLength;\n centerPoint[1] /= pathLength;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n }\n\n return clonedPath;\n };\n\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r) {\n mat.rotate(-this.r.v);\n } else {\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n mat.translate(this.px.v, this.py.v, 0);\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v);\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n } else {\n v1 = this.p.pv;\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n }\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n v1 = [];\n v2 = [];\n var px = this.px;\n var py = this.py;\n\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n } else {\n v1 = [px.pv, py.pv];\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n }\n } else {\n v2 = defaultVector;\n v1 = v2;\n }\n\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\n\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n this.v.translate(this.px.v, this.py.v, 0);\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\n\n if (!this.a.effectsSequence.length) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n this.appliedTransformations = 1;\n } else {\n return;\n }\n\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n this.appliedTransformations = 2;\n } else {\n return;\n }\n\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n this.appliedTransformations = 3;\n } else {\n return;\n }\n }\n\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n }\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n this.appliedTransformations = 4;\n }\n }\n\n function autoOrient() {//\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\n\n function TransformProperty(elem, data, container) {\n this.elem = elem;\n this.frameId = -1;\n this.propType = 'transform';\n this.data = data;\n this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || {\n k: [0, 0, 0]\n }, 1, 0, this);\n }\n\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null;\n data.or.k[i].ti = null;\n }\n }\n\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\n\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n }\n\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: [0, 0, 0]\n }, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: [100, 100, 100]\n }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n } else {\n this.o = {\n _mdf: false,\n v: 1\n };\n }\n\n this._isDirty = true;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n }\n\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient\n };\n extendPrototype([DynamicPropertyContainer], TransformProperty);\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n\n extendPrototype([ShapeModifier], RepeaterModifier);\n\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n this.data = data;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n\n this._isAnimated = !!this.dynamicProperties.length;\n this.pMatrix = new Matrix();\n this.rMatrix = new Matrix();\n this.sMatrix = new Matrix();\n this.tMatrix = new Matrix();\n this.matrix = new Matrix();\n };\n\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1;\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n rMatrix.rotate(-transform.r.v * dir * perc);\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n };\n\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem;\n this.arr = arr;\n this.pos = pos;\n this.elemsData = elemsData;\n this._currentCopies = 0;\n this._elements = [];\n this._groups = [];\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, arr[pos]);\n\n while (pos > 0) {\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n this._elements.unshift(arr[pos]);\n }\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\n }\n };\n\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n };\n\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n };\n\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items;\n var itemsTransform;\n var i;\n var dir;\n var cont;\n var hasReloaded = false;\n\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr'\n };\n group.it.push({\n a: {\n a: 0,\n ix: 1,\n k: [0, 0]\n },\n nm: 'Transform',\n o: {\n a: 0,\n ix: 7,\n k: 100\n },\n p: {\n a: 0,\n ix: 2,\n k: [0, 0]\n },\n r: {\n a: 1,\n ix: 6,\n k: [{\n s: 0,\n e: 0,\n t: 0\n }, {\n s: 0,\n e: 0,\n t: 1\n }]\n },\n s: {\n a: 0,\n ix: 3,\n k: [100, 100]\n },\n sa: {\n a: 0,\n ix: 5,\n k: 0\n },\n sk: {\n a: 0,\n ix: 4,\n k: 0\n },\n ty: 'tr'\n });\n this.arr.splice(0, 0, group);\n\n this._groups.splice(0, 0, group);\n\n this._currentCopies += 1;\n }\n\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n\n cont = 0;\n var renderFlag;\n\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies;\n this._groups[i]._render = renderFlag;\n this.changeGroupRender(this._groups[i].it, renderFlag);\n\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true;\n transformData.transform.op.v = 0;\n } else {\n transformData.transform.op._mdf = false;\n }\n }\n\n cont += 1;\n }\n\n this._currentCopies = copies; /// /\n\n var offset = this.o.v;\n var offsetModulo = offset % 1;\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n var pProps = this.pMatrix.props;\n var rProps = this.rMatrix.props;\n var sProps = this.sMatrix.props;\n this.pMatrix.reset();\n this.rMatrix.reset();\n this.sMatrix.reset();\n this.tMatrix.reset();\n this.matrix.reset();\n var iteration = 0;\n\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n iteration += 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n iteration += offsetModulo;\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\n }\n\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n dir = this.data.m === 1 ? 1 : -1;\n cont = this._currentCopies;\n var j;\n var jLen;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n jLen = itemsTransform.length;\n items[items.length - 1].transform.mProps._mdf = true;\n items[items.length - 1].transform.op._mdf = true;\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n if (iteration !== 0) {\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n }\n\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n\n this.matrix.reset();\n } else {\n this.matrix.reset();\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n }\n\n iteration += 1;\n cont -= 1;\n i += dir;\n }\n } else {\n cont = this._currentCopies;\n i = 0;\n dir = 1;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n items[items.length - 1].transform.mProps._mdf = false;\n items[items.length - 1].transform.op._mdf = false;\n cont -= 1;\n i += dir;\n }\n }\n\n return hasReloaded;\n };\n\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n\n extendPrototype([ShapeModifier], RoundCornersModifier);\n\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this._isAnimated = !!this.rd.effectsSequence.length;\n };\n\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var i;\n var len = path._length;\n var currentV;\n var currentI;\n var currentO;\n var closerV;\n var distance;\n var newPosPerc;\n var index = 0;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\n\n index += 1;\n } else {\n if (i === 0) {\n closerV = path.v[len - 1];\n } else {\n closerV = path.v[i - 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = iX;\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n vY = iY;\n oX = vX - (vX - currentV[0]) * roundCorner;\n oY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = oX;\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n vY = oY;\n iX = vX - (vX - currentV[0]) * roundCorner;\n iY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n }\n } else {\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n index += 1;\n }\n }\n\n return clonedPath;\n };\n\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var rd = this.rd.v;\n\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function floatEqual(a, b) {\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n }\n\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c; // Complex roots\n\n if (s < 0) return [];\n var singleRoot = -b / (2 * a); // 1 root\n\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n return [singleRoot - delta, singleRoot + delta];\n }\n\n function polynomialCoefficients(p0, p1, p2, p3) {\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n }\n\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\n\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n this.a = [coeffx[0], coeffy[0]];\n this.b = [coeffx[1], coeffy[1]];\n this.c = [coeffx[2], coeffy[2]];\n this.d = [coeffx[3], coeffy[3]];\n this.points = [p0, p1, p2, p3];\n }\n\n PolynomialBezier.prototype.point = function (t) {\n return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n };\n\n PolynomialBezier.prototype.derivative = function (t) {\n return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n };\n\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\n\n PolynomialBezier.prototype.inflectionPoints = function () {\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n if (floatZero(denom)) return [];\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n if (square < 0) return [];\n var root = Math.sqrt(square);\n\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\n };\n\n PolynomialBezier.prototype.split = function (t) {\n if (t <= 0) return [singlePoint(this.points[0]), this];\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n var p10 = lerpPoint(this.points[0], this.points[1], t);\n var p11 = lerpPoint(this.points[1], this.points[2], t);\n var p12 = lerpPoint(this.points[2], this.points[3], t);\n var p20 = lerpPoint(p10, p11, t);\n var p21 = lerpPoint(p11, p12, t);\n var p3 = lerpPoint(p20, p21, t);\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n };\n\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n } // Derivative roots to find min/max\n\n\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\n for (var i = 0; i < f.length; i += 1) {\n if (f[i] > 0 && f[i] < 1) {\n var val = bez.point(f[i])[comp];\n if (val < min) min = val;else if (val > max) max = val;\n }\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\n };\n\n PolynomialBezier.prototype.boundingBox = function () {\n var bounds = this.bounds();\n return {\n left: bounds.x.min,\n right: bounds.x.max,\n top: bounds.y.min,\n bottom: bounds.y.max,\n width: bounds.x.max - bounds.x.min,\n height: bounds.y.max - bounds.y.min,\n cx: (bounds.x.max + bounds.x.min) / 2,\n cy: (bounds.y.max + bounds.y.min) / 2\n };\n };\n\n function intersectData(bez, t1, t2) {\n var box = bez.boundingBox();\n return {\n cx: box.cx,\n cy: box.cy,\n width: box.width,\n height: box.height,\n bez: bez,\n t: (t1 + t2) / 2,\n t1: t1,\n t2: t2\n };\n }\n\n function splitData(data) {\n var split = data.bez.split(0.5);\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n }\n\n function boxIntersect(b1, b2) {\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n }\n\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n intersections.push([d1.t, d2.t]);\n return;\n }\n\n var d1s = splitData(d1);\n var d2s = splitData(d2);\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n }\n\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n if (tolerance === undefined) tolerance = 2;\n if (maxRecursion === undefined) maxRecursion = 7;\n var intersections = [];\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n return intersections;\n };\n\n PolynomialBezier.shapeSegment = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n };\n\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n };\n\n function crossProduct(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n }\n\n function lineIntersection(start1, end1, start2, end2) {\n var v1 = [start1[0], start1[1], 1];\n var v2 = [end1[0], end1[1], 1];\n var v3 = [start2[0], start2[1], 1];\n var v4 = [end2[0], end2[1], 1];\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n if (floatZero(r[2])) return null;\n return [r[0] / r[2], r[1] / r[2]];\n }\n\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n\n extendPrototype([ShapeModifier], ZigZagModifier);\n\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n };\n\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n var angO = angle - Math.PI / 2;\n var angI = angle + Math.PI / 2;\n var px = point[0] + Math.cos(angle) * direction * amplitude;\n var py = point[1] - Math.sin(angle) * direction * amplitude;\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n }\n\n function getPerpendicularVector(pt1, pt2) {\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n var rot = -Math.PI * 0.5;\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n return rotatedVector;\n }\n\n function getProjectingAngle(path, cur) {\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n var nextIndex = (cur + 1) % path.length();\n var prevPoint = path.v[prevIndex];\n var nextPoint = path.v[nextIndex];\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n }\n\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n var angle = getProjectingAngle(path, cur);\n var point = path.v[cur % path._length];\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n var nextPoint = path.v[(cur + 1) % path._length];\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n }\n\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n for (var i = 0; i < frequency; i += 1) {\n var t = (i + 1) / (frequency + 1);\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n var angle = segment.normalAngle(t);\n var point = segment.point(t);\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n direction = -direction;\n }\n\n return direction;\n }\n\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n var count = path._length;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n\n if (!path.c) {\n count -= 1;\n }\n\n if (count === 0) return clonedPath;\n var direction = -1;\n var segment = PolynomialBezier.shapeSegment(path, 0);\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n\n return clonedPath;\n };\n\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amplitude = this.amplitude.v;\n var frequency = Math.max(0, Math.round(this.frequency.v));\n var pointType = this.pointsType.v;\n\n if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function linearOffset(p1, p2, amount) {\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n }\n\n function offsetSegment(segment, amount) {\n var p0;\n var p1a;\n var p1b;\n var p2b;\n var p2a;\n var p3;\n var e;\n e = linearOffset(segment.points[0], segment.points[1], amount);\n p0 = e[0];\n p1a = e[1];\n e = linearOffset(segment.points[1], segment.points[2], amount);\n p1b = e[0];\n p2b = e[1];\n e = linearOffset(segment.points[2], segment.points[3], amount);\n p2a = e[0];\n p3 = e[1];\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\n if (p1 === null) p1 = p1a;\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\n if (p2 === null) p2 = p2a;\n return new PolynomialBezier(p0, p1, p2, p3);\n }\n\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0]; // Bevel\n\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n if (pointEqual(p0, p1)) return p0; // Round\n\n if (lineJoin === 2) {\n var angleOut = -seg1.tangentAngle(1);\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n return p1;\n } // Miter\n\n\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n var intersection = lineIntersection(t0, p0, p1, t1);\n\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n return intersection;\n }\n\n return p0;\n }\n\n function getIntersection(a, b) {\n var intersect = a.intersections(b);\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n if (intersect.length) return intersect[0];\n return null;\n }\n\n function pruneSegmentIntersection(a, b) {\n var outa = a.slice();\n var outb = b.slice();\n var intersect = getIntersection(a[a.length - 1], b[0]);\n\n if (intersect) {\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n outb[0] = b[0].split(intersect[1])[1];\n }\n\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n\n return [outa, outb];\n }\n\n function pruneIntersections(segments) {\n var e;\n\n for (var i = 1; i < segments.length; i += 1) {\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n segments[i - 1] = e[0];\n segments[i] = e[1];\n }\n\n if (segments.length > 1) {\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n segments[segments.length - 1] = e[0];\n segments[0] = e[1];\n }\n\n return segments;\n }\n\n function offsetSegmentSplit(segment, amount) {\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\n\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\n split = segment.split(flex[0]);\n left = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\n }\n\n split = segment.split(flex[0]);\n left = split[0];\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\n split = split[1].split(t);\n mid = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n }\n\n function OffsetPathModifier() {}\n\n extendPrototype([ShapeModifier], OffsetPathModifier);\n\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n this.lineJoin = data.lj;\n this._isAnimated = this.amount.effectsSequence.length !== 0;\n };\n\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n\n if (!inputBezier.c) {\n count -= 1;\n }\n\n var i;\n var j;\n var segment;\n var multiSegments = [];\n\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n\n if (!inputBezier.c) {\n for (i = count - 1; i >= 0; i -= 1) {\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n }\n\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n var lastPoint = null;\n var lastSeg = null;\n\n for (i = 0; i < multiSegments.length; i += 1) {\n var multiSegment = multiSegments[i];\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n lastSeg = multiSegment[multiSegment.length - 1];\n\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n } else {\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n }\n\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n lastPoint = segment.points[3];\n }\n }\n\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\n\n OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n var miterLimit = this.miterLimit.v;\n var lineJoin = this.lineJoin;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n var fWeight = 'normal';\n var fStyle = 'normal';\n var len = styles.length;\n var styleName;\n\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n\n case 'bold':\n fWeight = '700';\n break;\n\n case 'black':\n fWeight = '900';\n break;\n\n case 'medium':\n fWeight = '500';\n break;\n\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n\n default:\n break;\n }\n }\n\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight\n };\n }\n\n var FontManager = function () {\n var maxWaitingTime = 5000;\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: []\n }\n };\n var combinedCharacters = []; // Hindi characters\n\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n var BLACK_FLAG_CODE_POINT = 127988;\n var CANCEL_TAG_CODE_POINT = 917631;\n var A_TAG_CODE_POINT = 917601;\n var Z_TAG_CODE_POINT = 917626;\n var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i]);\n }\n }\n\n return enabledFamilies.join(',');\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span'); // Characters that vary significantly among different fonts\n\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n parentNode.style.fontSize = '300px'; // Reset any font properties\n\n parentNode.style.fontVariant = 'normal';\n parentNode.style.fontStyle = 'normal';\n parentNode.style.fontWeight = 'normal';\n parentNode.style.letterSpacing = '0';\n parentNode.appendChild(node);\n document.body.appendChild(parentNode); // Remember width with no applied web font\n\n var width = node.offsetWidth;\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n return {\n node: node,\n w: width,\n parent: parentNode\n };\n }\n\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1;\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].monoCase.node;\n w = this.fonts[i].monoCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].sansCase.node;\n w = this.fonts[i].sansCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\n }\n\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n }\n }\n }\n\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n tHelper.setAttribute('font-family', fontData.fFamily);\n tHelper.setAttribute('font-style', fontProps.style);\n tHelper.setAttribute('font-weight', fontProps.weight);\n tHelper.textContent = '1';\n\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\n }\n\n def.appendChild(tHelper);\n helper = tHelper;\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n helper = tCanvasHelper;\n }\n\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n\n return helper.measureText(text).width;\n }\n\n return {\n measureText: measure\n };\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\n\n if (!document.body) {\n this.isLoaded = true;\n fontData.list.forEach(function (data) {\n data.helper = createHelper(data);\n data.cache = {};\n });\n this.fonts = fontData.list;\n return;\n }\n\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true;\n var loadedSelector;\n var j;\n fontArr[i].loaded = false;\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true;\n _pendingFonts -= 1;\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\n\n if (shouldLoadFont) {\n var s = createTag('style');\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\n s.setAttribute('f-origin', fontArr[i].origin);\n s.setAttribute('f-family', fontArr[i].fFamily);\n s.type = 'text/css';\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n defs.appendChild(s);\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var l = createTag('link');\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\n l.setAttribute('f-origin', fontArr[i].origin);\n l.type = 'text/css';\n l.rel = 'stylesheet';\n l.href = fontArr[i].fPath;\n document.body.appendChild(l);\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var sc = createTag('link');\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n sc.setAttribute('f-origin', fontArr[i].origin);\n sc.setAttribute('rel', 'stylesheet');\n sc.setAttribute('href', fontArr[i].fPath);\n defs.appendChild(sc);\n }\n }\n\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\n\n if (_pendingFonts === 0) {\n this.isLoaded = true;\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100);\n }\n }\n\n function addChars(chars) {\n if (!chars) {\n return;\n }\n\n if (!this.chars) {\n this.chars = [];\n }\n\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n\n while (j < jLen) {\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n found = true;\n }\n\n j += 1;\n }\n\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n\n while (i < len) {\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i];\n }\n\n i += 1;\n }\n\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n && !this._warned) {\n this._warned = true;\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n }\n\n return emptyChar;\n }\n\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n\n var index = _char2;\n\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n\n if (_char2 === ' ') {\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\n var singleSize = tHelper.measureText('||');\n fontData.cache[index] = (doubleSize - singleSize) / 100;\n } else {\n fontData.cache[index] = tHelper.measureText(_char2) / 100;\n }\n }\n\n return fontData.cache[index] * size;\n }\n\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n\n i += 1;\n }\n\n return this.fonts[0];\n }\n\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return codePoint;\n } // Skin tone modifiers\n\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n } // This codepoint may change the appearance of the preceding character.\n // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n // as a colorful image as compared to a monochrome text variant.\n\n\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n } // The regional indicator symbols are a set of 26 alphabetic Unicode\n /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n // two-letter country codes in a way that allows optional special treatment.\n\n\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n\n return false;\n } // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n\n\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n } // Regional flags start with a BLACK_FLAG_CODE_POINT\n // folowed by 5 chars in the TAG range\n // and end with a CANCEL_TAG_CODE_POINT\n\n\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n\n var count = 0;\n index += 2;\n\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n\n count += 1;\n index += 2;\n }\n\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n\n function setIsLoaded() {\n this.isLoaded = true;\n }\n\n var Font = function Font() {\n this.fonts = [];\n this.chars = null;\n this.typekitLoaded = 0;\n this.isLoaded = false;\n this._warned = false;\n this.initTime = Date.now();\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n };\n\n Font.isModifier = isModifier;\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\n Font.isFlagEmoji = isFlagEmoji;\n Font.isRegionalCode = isRegionalCode;\n Font.isCombinedCharacter = isCombinedCharacter;\n Font.isRegionalFlag = isRegionalFlag;\n Font.isVariationSelector = isVariationSelector;\n Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded\n };\n Font.prototype = fontPrototype;\n return Font;\n }();\n\n function SlotManager(animationData) {\n this.animationData = animationData;\n }\n\n SlotManager.prototype.getProp = function (data) {\n if (this.animationData.slots && this.animationData.slots[data.sid]) {\n return Object.assign(data, this.animationData.slots[data.sid].p);\n }\n\n return data;\n };\n\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false; // layer's display state\n\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n this.isTransparent = false; // list of animated components\n\n this.renderableComponents = [];\n },\n addRenderableComponent: function addRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function removeRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function prepareRenderableFrame(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function checkTransparency() {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true;\n this.hide();\n }\n } else if (this.isTransparent) {\n this.isTransparent = false;\n this.show();\n }\n },\n\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\n checkLayerLimits: function checkLayerLimits(num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n },\n renderRenderable: function renderRenderable() {\n var i;\n var len = this.renderableComponents.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n },\n sourceRectAtTime: function sourceRectAtTime() {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100\n };\n },\n getLayerSize: function getLayerSize() {\n if (this.data.ty === 5) {\n return {\n w: this.data.textData.width,\n h: this.data.textData.height\n };\n }\n\n return {\n w: this.data.width,\n h: this.data.height\n };\n }\n };\n\n var getBlendMode = function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity'\n };\n return function (mode) {\n return blendModeEnums[mode] || '';\n };\n }();\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function NoValueEffect() {\n this.p = {};\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || [];\n this.effectElements = [];\n var i;\n var len = effects.length;\n var effectItem;\n\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n GroupEffect.prototype.init = function (data, element) {\n this.data = data;\n this.effectElements = [];\n this.initDynamicPropertyContainer(element);\n var i;\n var len = this.data.ef.length;\n var eff;\n var effects = this.data.ef;\n\n for (i = 0; i < len; i += 1) {\n eff = null;\n\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n\n var i = 0;\n var len = this.data.masksProperties.length;\n\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var LayerExpressionInterface = expressionsInterfaces('layer');\n var EffectsExpressionInterface = expressionsInterfaces('effects');\n var ShapeExpressionInterface = expressionsInterfaces('shape');\n var TextExpressionInterface = expressionsInterfaces('text');\n var CompExpressionInterface = expressionsInterfaces('comp');\n this.layerInterface = LayerExpressionInterface(this);\n\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this);\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n this.layerInterface.content = this.layerInterface.shapeInterface;\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this);\n this.layerInterface.text = this.layerInterface.textInterface;\n }\n },\n setBlendMode: function setBlendMode() {\n var blendModeValue = getBlendMode(this.data.bm);\n var elem = this.baseElement || this.layerElement;\n elem.style['mix-blend-mode'] = blendModeValue;\n },\n initBaseData: function initBaseData(data, globalData, comp) {\n this.globalData = globalData;\n this.comp = comp;\n this.data = data;\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n if (!this.data.sr) {\n this.data.sr = 1;\n } // effects manager\n\n\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n },\n getType: function getType() {\n return this.type;\n },\n sourceRectAtTime: function sourceRectAtTime() {}\n };\n\n /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false; // list of animated properties\n\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n this._mdf = false;\n },\n\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n };\n\n function FootageElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\n this.initBaseData(data, globalData, comp);\n }\n\n FootageElement.prototype.prepareFrame = function () {};\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n\n FootageElement.prototype.renderFrame = function () {};\n\n FootageElement.prototype.destroy = function () {};\n\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\n };\n\n FootageElement.prototype.getFootageData = function () {\n return this.footageData;\n };\n\n function AudioElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.initBaseData(data, globalData, comp);\n this._isPlaying = false;\n this._canPlay = false;\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.audio = this.globalData.audioController.createAudio(assetPath);\n this._currentTime = 0;\n this.globalData.audioController.addAudio(this);\n this._volumeMultiplier = 1;\n this._volume = 1;\n this._previousVolume = null;\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n k: [100]\n }, 1, 0.01, this);\n }\n\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n this._currentTime = timeRemapped;\n } else {\n this._currentTime = num / this.data.sr;\n }\n\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play();\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n this._isPlaying = true;\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n }\n }\n };\n\n AudioElement.prototype.show = function () {// this.audio.play()\n };\n\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\n\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue;\n this._previousVolume = volumeValue * this._volume;\n this.audio.volume(this._previousVolume);\n };\n\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n\n AudioElement.prototype.destroy = function () {};\n\n AudioElement.prototype.sourceRectAtTime = function () {};\n\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i);\n }\n }\n\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n\n case 0:\n return this.createComp(layer);\n\n case 1:\n return this.createSolid(layer);\n\n case 3:\n return this.createNull(layer);\n\n case 4:\n return this.createShape(layer);\n\n case 5:\n return this.createText(layer);\n\n case 6:\n return this.createAudio(layer);\n\n case 13:\n return this.createCamera(layer);\n\n case 15:\n return this.createFootage(layer);\n\n default:\n return this.createNull(layer);\n }\n };\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false;\n var i;\n var len = newLayers.length;\n var j;\n var jLen = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n\n j += 1;\n }\n }\n };\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\n };\n\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements;\n var layers = this.layers;\n var i = 0;\n var len = layers.length;\n\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i);\n this.addPendingElement(element);\n } else {\n hierarchy.push(elements[i]);\n elements[i].setAsParent();\n\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n\n i += 1;\n }\n };\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i]);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n\n return null;\n };\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i];\n break;\n }\n }\n }\n\n if (path.length === 0) {\n return element;\n }\n\n return element.getElementByPath(path);\n };\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.slotManager = slotFactory(animData);\n this.globalData.fontManager.addChars(animData.chars);\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n this.globalData.imageLoader = this.animationItem.imagePreloader;\n this.globalData.audioController = this.animationItem.audioController;\n this.globalData.frameId = 0;\n this.globalData.frameRate = animData.fr;\n this.globalData.nm = animData.nm;\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h\n };\n };\n\n var effectTypes = {\n TRANSFORM_EFFECT: 'transformEFfect'\n };\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function initTransform() {\n var mat = new Matrix();\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _localMatMdf: false,\n _opMdf: false,\n mat: mat,\n localMat: mat,\n localOpacity: 1\n };\n\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n } // TODO: check TYPE 11: Guided elements\n\n\n if (this.data.ty !== 11) {// this.createElements();\n }\n },\n renderTransform: function renderTransform() {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true;\n break;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n\n if (this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\n\n if (this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n }\n },\n renderLocalTransform: function renderLocalTransform() {\n if (this.localTransforms) {\n var i = 0;\n var len = this.localTransforms.length;\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n\n if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\n }\n\n if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n this.finalTransform._opMdf = true;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n\n localMat.multiply(this.finalTransform.mat);\n }\n\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\n\n this.finalTransform.localOpacity = localOp;\n }\n }\n },\n searchEffectTransforms: function searchEffectTransforms() {\n if (this.renderableEffectsManager) {\n var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n\n for (i = 0; i < len; i += 1) {\n this.localTransforms.push(transformEffects[i]);\n }\n }\n }\n },\n globalToLocal: function globalToLocal(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n\n var i;\n var len = transforms.length;\n var ptNew;\n\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n\n return pt;\n },\n mHelper: new Matrix()\n };\n\n function MaskElement(data, element, globalData) {\n this.data = data;\n this.element = element;\n this.globalData = globalData;\n this.storedData = [];\n this.masksProperties = this.data.masksProperties || [];\n this.maskElement = null;\n var defs = this.globalData.defs;\n var i;\n var len = this.masksProperties ? this.masksProperties.length : 0;\n this.viewData = createSizedArray(len);\n this.solidPath = '';\n var path;\n var properties = this.masksProperties;\n var count = 0;\n var currentMasks = [];\n var j;\n var jLen;\n var layerId = createElementID();\n var rect;\n var expansor;\n var feMorph;\n var x;\n var maskType = 'clipPath';\n var maskRef = 'clip-path';\n\n for (i = 0; i < len; i += 1) {\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n maskType = 'mask';\n maskRef = 'mask';\n }\n\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect');\n rect.setAttribute('fill', '#ffffff');\n rect.setAttribute('width', this.element.comp.data.w || 0);\n rect.setAttribute('height', this.element.comp.data.h || 0);\n currentMasks.push(rect);\n } else {\n rect = null;\n }\n\n path = createNS('path');\n\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: ''\n };\n defs.appendChild(path);\n } else {\n count += 1;\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n path.setAttribute('clip-rule', 'nonzero');\n var filterID;\n\n if (properties[i].x.k !== 0) {\n maskType = 'mask';\n maskRef = 'mask';\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n filterID = createElementID();\n expansor = createNS('filter');\n expansor.setAttribute('id', filterID);\n feMorph = createNS('feMorphology');\n feMorph.setAttribute('operator', 'erode');\n feMorph.setAttribute('in', 'SourceGraphic');\n feMorph.setAttribute('radius', '0');\n expansor.appendChild(feMorph);\n defs.appendChild(expansor);\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n } else {\n feMorph = null;\n x = null;\n } // TODO move this to a factory or to a constructor\n\n\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0\n };\n\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\n\n var mask = createNS('mask');\n mask.setAttribute('mask-type', 'alpha');\n mask.setAttribute('id', layerId + '_' + count);\n mask.appendChild(path);\n defs.appendChild(mask);\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n currentMasks.length = 0;\n currentMasks.push(g);\n } else {\n currentMasks.push(path);\n }\n\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n } // TODO move this to a factory or to a constructor\n\n\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect\n };\n\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\n\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n defs.appendChild(this.maskElement);\n }\n\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\n\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n }\n\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode';\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n }\n\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate';\n this.storedData[i].elem.setAttribute('filter', null);\n }\n\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\n\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 ';\n path += ' h' + this.globalData.compSize.w;\n path += ' v' + this.globalData.compSize.h;\n path += ' h-' + this.globalData.compSize.w;\n path += ' v-' + this.globalData.compSize.h + ' ';\n return path;\n };\n\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n var i;\n var len;\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n if (pathNodes.c && len > 1) {\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n } // pathNodes.__renderedString = pathString;\n\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n\n viewData.lastPath = pathString;\n }\n };\n\n MaskElement.prototype.destroy = function () {\n this.element = null;\n this.globalData = null;\n this.maskElement = null;\n this.data = null;\n this.masksProperties = null;\n };\n\n var filtersFactory = function () {\n var ob = {};\n ob.createFilter = createFilter;\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox');\n fil.setAttribute('x', '0%');\n fil.setAttribute('y', '0%');\n fil.setAttribute('width', '100%');\n fil.setAttribute('height', '100%');\n }\n\n return fil;\n }\n\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\n return feColorMatrix;\n }\n\n return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true,\n svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n };\n\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n ob.maskType = false;\n }\n\n if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n\n function SVGEffects(elem) {\n var i;\n var source = 'SourceGraphic';\n var len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId, true);\n var count = 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects$1[type]) {\n var Effect = registeredEffects$1[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n source = idPrefix + count;\n\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect$1(id, effect, countsAsEffect) {\n registeredEffects$1[id] = {\n effect: effect,\n countsAsEffect: countsAsEffect\n };\n }\n\n function SVGBaseElement() {}\n\n SVGBaseElement.prototype = {\n initRendererElement: function initRendererElement() {\n this.layerElement = createNS('g');\n },\n createContainerElements: function createContainerElements() {\n this.matteElement = createNS('g');\n this.transformedElement = this.layerElement;\n this.maskedElement = this.layerElement;\n this._sizeChanged = false;\n var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n if (this.data.td) {\n this.matteMasks = {};\n var gg = createNS('g');\n gg.setAttribute('id', this.layerId);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n this.globalData.defs.appendChild(gg);\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement);\n layerElementParent = this.matteElement;\n this.baseElement = this.matteElement;\n } else {\n this.baseElement = this.layerElement;\n }\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath');\n var pt = createNS('path');\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n var clipId = createElementID();\n cp.setAttribute('id', clipId);\n cp.appendChild(pt);\n this.globalData.defs.appendChild(cp);\n\n if (this.checkMasks()) {\n var cpGroup = createNS('g');\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n cpGroup.appendChild(this.layerElement);\n this.transformedElement = cpGroup;\n\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement);\n } else {\n this.baseElement = this.transformedElement;\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n }\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n if (this.finalTransform._localMatMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n }\n\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n }\n },\n destroyBaseElement: function destroyBaseElement() {\n this.layerElement = null;\n this.matteElement = null;\n this.maskManager.destroy();\n },\n getBaseElement: function getBaseElement() {\n if (this.data.hd) {\n return null;\n }\n\n return this.baseElement;\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n this.renderableEffectsManager = new SVGEffects(this);\n this.searchEffectTransforms();\n },\n getMatte: function getMatte(matteType) {\n // This should not be a common case. But for backward compatibility, we'll create the matte object.\n // It solves animations that have two consecutive layers marked as matte masks.\n // Which is an undefined behavior in AE.\n if (!this.matteMasks) {\n this.matteMasks = {};\n }\n\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n\n if (matteType === 1 || matteType === 3) {\n var masker = createNS('mask');\n masker.setAttribute('id', id);\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n masker.appendChild(useElement);\n this.globalData.defs.appendChild(masker);\n\n if (!featureSupport.maskType && matteType === 1) {\n masker.setAttribute('mask-type', 'luminance');\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n this.globalData.defs.appendChild(fil);\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n gg.appendChild(useElement);\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (matteType === 2) {\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', id);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId); /// /\n\n var feCTr = createNS('feComponentTransfer');\n feCTr.setAttribute('in', 'SourceGraphic');\n fil.appendChild(feCTr);\n var feFunc = createNS('feFuncA');\n feFunc.setAttribute('type', 'table');\n feFunc.setAttribute('tableValues', '1.0 0.0');\n feCTr.appendChild(feFunc); /// /\n\n this.globalData.defs.appendChild(fil);\n var alphaRect = createNS('rect');\n alphaRect.setAttribute('width', this.comp.data.w);\n alphaRect.setAttribute('height', this.comp.data.h);\n alphaRect.setAttribute('x', '0');\n alphaRect.setAttribute('y', '0');\n alphaRect.setAttribute('fill', '#ffffff');\n alphaRect.setAttribute('opacity', '0');\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n maskGrouper.appendChild(alphaRect);\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n maskGrouper.appendChild(useElement);\n\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance');\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n maskGrouper.appendChild(alphaRect);\n gg.appendChild(this.layerElement);\n maskGrouper.appendChild(gg);\n }\n\n this.globalData.defs.appendChild(maskGroup);\n }\n\n this.matteMasks[matteType] = id;\n }\n\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n this._isParent = false;\n this.checkParenting();\n },\n\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\n checkParenting: function checkParenting() {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, []);\n }\n }\n };\n\n function RenderableDOMElement() {}\n\n (function () {\n var _prototype = {\n initElement: function initElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n },\n hide: function hide() {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'none';\n this.hidden = true;\n }\n },\n show: function show() {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'block';\n }\n\n this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function renderInnerContent() {},\n prepareFrame: function prepareFrame(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function destroy() {\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n })();\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\n\n this.initElement(data, globalData, comp);\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h\n };\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.innerElem = createNS('image');\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.innerElem);\n };\n\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect;\n };\n\n function ProcessedElement(element, position) {\n this.elem = element;\n this.pos = position;\n }\n\n function IShapeElement() {}\n\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data);\n }\n },\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n var i = 0;\n var len = this.shapeModifiers.length;\n\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n\n var i;\n var len = this.shapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n\n if (shouldBreakProcess) {\n break;\n }\n }\n },\n searchProcessedElement: function searchProcessedElement(elem) {\n var elements = this.processedElements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n\n i += 1;\n }\n\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n\n while (i) {\n i -= 1;\n\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function prepareFrame(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n };\n\n var lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square'\n };\n var lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel'\n };\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = [];\n this.styles = [];\n this.transformers = transformers;\n this.lStr = '';\n this.sh = shape;\n this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n var i = 0;\n var len = transformers.length;\n\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n\n i += 1;\n }\n }\n\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true;\n };\n\n function SVGStyleData(data, level) {\n this.data = data;\n this.type = data.ty;\n this.d = '';\n this.lvl = level;\n this._mdf = false;\n this.closed = data.hd === true;\n this.pElem = createNS('path');\n this.msElem = null;\n }\n\n SVGStyleData.prototype.reset = function () {\n this.d = '';\n this._mdf = false;\n };\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem;\n this.frameId = -1;\n this.dataProps = createSizedArray(data.length);\n this.renderer = renderer;\n this.k = false;\n this.dashStr = '';\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n this.dashoffset = createTypedArray('float32', 1);\n this.initDynamicPropertyContainer(container);\n var i;\n var len = data.length || 0;\n var prop;\n\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n this.k = prop.k || this.k;\n this.dataProps[i] = {\n n: data[i].n,\n p: prop\n };\n }\n\n if (!this.k) {\n this.getValue(true);\n }\n\n this._isAnimated = this.k;\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v;\n } else {\n this.dashArray[i] = this.dataProps[i].p.v;\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v;\n }\n }\n }\n };\n\n extendPrototype([DynamicPropertyContainer], DashProperty);\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n function GradientProperty(elem, data, container) {\n this.data = data;\n this.c = createTypedArray('uint8c', data.p * 4);\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n this.o = createTypedArray('float32', cLength);\n this._cmdf = false;\n this._omdf = false;\n this._collapsable = this.checkCollapsable();\n this._hasOpacity = cLength;\n this.initDynamicPropertyContainer(container);\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n this.k = this.prop.k;\n this.getValue(true);\n }\n\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n if (diff > 0.01) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n };\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n\n return true;\n };\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255;\n val = Math.round(this.prop.v[i] * mult);\n\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n\n if (this.o.length) {\n len = this.prop.v.length;\n\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1;\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val;\n this._omdf = !forceRender;\n }\n }\n }\n\n this._mdf = !forceRender;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n }\n\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n this.h = PropertyFactory.getProp(elem, data.h || {\n k: 0\n }, 0, 0.01, this);\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: 0\n }, 0, degToRads, this);\n this.g = new GradientProperty(elem, data.g, this);\n this.style = styleOb;\n this.stops = [];\n this.setGradientData(styleOb.pElem, data);\n this.setGradientOpacity(data, styleOb);\n this._isAnimated = !!this._isAnimated;\n };\n\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID();\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n gfill.setAttribute('id', gradientId);\n gfill.setAttribute('spreadMethod', 'pad');\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n var stops = [];\n var stop;\n var j;\n var jLen;\n jLen = data.g.p * 4;\n\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\n\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop;\n var j;\n var jLen;\n var mask = createNS('mask');\n var maskElement = createNS('path');\n mask.appendChild(maskElement);\n var opacityId = createElementID();\n var maskId = createElementID();\n mask.setAttribute('id', maskId);\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n opFill.setAttribute('id', opacityId);\n opFill.setAttribute('spreadMethod', 'pad');\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n var stops = this.stops;\n\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop');\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\n opFill.appendChild(stop);\n stops.push(stop);\n }\n\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n this.of = opFill;\n this.ms = mask;\n this.ost = stops;\n this.maskId = maskId;\n styleOb.msElem = maskElement;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.initGradientData(elem, data, styleOb);\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n function ShapeGroupData() {\n this.it = [];\n this.prevViewData = [];\n this.gr = createNS('g');\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container\n };\n this.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n }\n\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n if (length === 0) {\n return '';\n }\n\n var _o = pathNodes.o;\n var _i = pathNodes.i;\n var _v = pathNodes.v;\n var i;\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n for (i = 1; i < length; i += 1) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n }\n\n if (closed && length) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n shapeString += 'z';\n }\n\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n\n var _matrixHelper = new Matrix();\n\n var ob = {\n createRenderFunction: createRenderFunction\n };\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n\n case 'gf':\n return renderGradient;\n\n case 'gs':\n return renderGradientStroke;\n\n case 'st':\n return renderStroke;\n\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n\n case 'tr':\n return renderContentTransform;\n\n case 'no':\n return renderNoop;\n\n default:\n return null;\n }\n }\n\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n }\n\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n\n function renderNoop() {}\n\n function renderPath(styleData, itemData, isFirstFrame) {\n var j;\n var jLen;\n var pathStringTransformed;\n var redraw;\n var pathNodes;\n var l;\n var lLen = itemData.styles.length;\n var lvl = itemData.lvl;\n var paths;\n var mat;\n var iterations;\n var k;\n\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset();\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (iterations > 0) {\n mat.multiply(itemData.transformers[k].mProps.v);\n iterations -= 1;\n k -= 1;\n }\n }\n } else {\n mat = _identityMatrix;\n }\n\n paths = itemData.sh.paths;\n jLen = paths._length;\n\n if (redraw) {\n pathStringTransformed = '';\n\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\n\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf;\n var hasOpacity = itemData.g._hasOpacity;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\n }\n\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n gfill.setAttribute(attr1, pt1[0]);\n gfill.setAttribute(attr2, pt1[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n\n var stops;\n var i;\n var len;\n var stop;\n\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n stop.setAttribute('offset', cValues[i * 4] + '%');\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n }\n }\n\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\n }\n\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0]);\n gfill.setAttribute('y2', pt2[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0]);\n itemData.of.setAttribute('y2', pt2[1]);\n }\n }\n } else {\n var rad;\n\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n gfill.setAttribute('r', rad);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n }\n\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n gfill.setAttribute('fx', x);\n gfill.setAttribute('fy', y);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n } // gfill.setAttribute('fy','200');\n\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n }\n\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\n\n\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i;\n var len = this.shapes.length;\n var shape;\n var j;\n var jLen = this.stylesList.length;\n var style;\n var tempShapes = [];\n var areAnimated = false;\n\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n };\n\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n var pathElement = styleOb.pElem;\n\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb);\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb);\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n elementData = new GradientConstructor(this, data, styleOb);\n this.globalData.defs.appendChild(elementData.gf);\n\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb);\n }\n\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n pathElement.setAttribute('fill-opacity', '0');\n\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n return elementData;\n };\n\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n\n i += 1;\n }\n\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n };\n\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n var ownTransformers = [].concat(transformers);\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var currentTransform;\n var modifier;\n var processedPos;\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level);\n } else {\n itemsData[i].style.closed = false;\n }\n\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr);\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container);\n }\n\n currentTransform = itemsData[i].transform;\n ownTransformers.push(currentTransform);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n }\n\n this.setElementStyles(itemsData[i]);\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n render = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n len = ownStyles.length;\n\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n\n this.renderShape();\n\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\n }\n };\n\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement();\n this.shapesData = null;\n this.itemsData = null;\n };\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o;\n this.sw = sw;\n this.sc = sc;\n this.fc = fc;\n this.m = m;\n this.p = p;\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true\n };\n }\n\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false;\n this._mdf.sw = false;\n this._mdf.sc = false;\n this._mdf.fc = false;\n this._mdf.m = false;\n this._mdf.p = false;\n var updated = false;\n\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\n\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n this.p = p;\n this._mdf.p = true;\n updated = true;\n }\n\n return updated;\n };\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame;\n this.pv = '';\n this.v = '';\n this.kf = false;\n this._isFirstFrame = true;\n this._mdf = false;\n\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\n\n this.data = data;\n this.elem = elem;\n this.comp = this.elem.comp;\n this.keysIndex = 0;\n this.canResize = false;\n this.minimumFontSize = 1;\n this.effectsSequence = [];\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false\n };\n this.copyData(this.currentData, this.data.d.k[0].s);\n\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s];\n }\n }\n\n return obj;\n };\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n\n return this.kf;\n };\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n }\n }\n\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\n\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0;\n var len = textKeys.length;\n\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n\n i += 1;\n }\n\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n\n return this.data.d.k[this.keysIndex].s;\n };\n\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = [];\n var i = 0;\n var len = text.length;\n var charCode;\n var secondCharCode;\n var shouldCombine = false;\n var shouldCombineNext = false;\n var currentChars = '';\n\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true; // It's a potential surrogate pair (this is the High surrogate)\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n if (FontManager.isRegionalFlag(text, i)) {\n currentChars = text.substr(i, 14);\n } else {\n secondCharCode = text.charCodeAt(i + 1); // It's a surrogate pair (this is the Low surrogate)\n\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (FontManager.isModifier(charCode, secondCharCode)) {\n currentChars = text.substr(i, 2);\n shouldCombine = true;\n } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n currentChars = text.substr(i, 4);\n } else {\n currentChars = text.substr(i, 2);\n }\n }\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n\n i += currentChars.length;\n }\n\n return charactersArray;\n };\n\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true;\n var fontManager = this.elem.globalData.fontManager;\n var data = this.data;\n var letters = [];\n var i;\n var len;\n var newLineFlag;\n var index = 0;\n var val;\n var anchorGrouping = data.m.g;\n var currentSize = 0;\n var currentPos = 0;\n var currentLine = 0;\n var lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j;\n var jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData;\n var cLength = 0;\n var fontProps = getFontProperties(fontData);\n documentData.fWeight = fontProps.weight;\n documentData.fStyle = fontProps.style;\n documentData.finalSize = documentData.s;\n documentData.finalText = this.buildFinalText(documentData.t);\n len = documentData.finalText.length;\n documentData.finalLineHeight = documentData.lh;\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var charCode;\n\n if (documentData.sz) {\n var flag = true;\n var boxWidth = documentData.sz[0];\n var boxHeight = documentData.sz[1];\n var currentHeight;\n var finalText;\n\n while (flag) {\n finalText = this.buildFinalText(documentData.t);\n currentHeight = 0;\n lineWidth = 0;\n len = finalText.length;\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var lastSpaceIndex = -1;\n\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n\n if (finalText[i] === ' ') {\n lastSpaceIndex = i;\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0;\n newLineFlag = true;\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n }\n\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1;\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n } else {\n documentData.finalText = finalText;\n len = documentData.finalText.length;\n flag = false;\n }\n }\n }\n\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0;\n lineWidths.push(lineWidth);\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidth = -2 * trackingOffset;\n val = '';\n newLineFlag = true;\n currentLine += 1;\n } else {\n val = currentChar;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n } //\n\n\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset;\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n uncollapsedSpaces = 0;\n }\n\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0\n });\n\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n\n default:\n documentData.justifyOffset = 0;\n }\n }\n\n documentData.lineWidths = lineWidths;\n var animators = data.a;\n var animatorData;\n var letterData;\n jLen = animators.length;\n var based;\n var ind;\n var indexes = [];\n\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n\n ind = 0;\n based = animatorData.s.b;\n\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind);\n }\n\n ind += 1;\n }\n }\n\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j];\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n }\n\n letterData.anIndexes[j] = newInd;\n }\n }\n }\n\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n documentData.ls = documentData.ls || 0;\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n };\n\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index;\n var dData = this.copyData({}, this.data.d.k[index].s);\n dData = this.copyData(dData, newData);\n this.data.d.k[index].s = dData;\n this.recalculate(index);\n this.setCurrentData(dData);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s;\n dData.__complete = false;\n this.keysIndex = 0;\n this._isFirstFrame = true;\n this.getValue(dData);\n };\n\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n var TextSelectorProp = function () {\n var max = Math.max;\n var min = Math.min;\n var floor = Math.floor;\n\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1;\n this.k = false;\n this.data = data;\n this.elem = elem;\n this.comp = elem.comp;\n this.finalS = 0;\n this.finalE = 0;\n this.initDynamicPropertyContainer(elem);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: 0\n }, 0, 0, this);\n\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n } else {\n this.e = {\n v: 100\n };\n }\n\n this.o = PropertyFactory.getProp(elem, data.o || {\n k: 0\n }, 0, 0, this);\n this.xe = PropertyFactory.getProp(elem, data.xe || {\n k: 0\n }, 0, 0, this);\n this.ne = PropertyFactory.getProp(elem, data.ne || {\n k: 0\n }, 0, 0, this);\n this.sm = PropertyFactory.getProp(elem, data.sm || {\n k: 100\n }, 0, 0, this);\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\n }\n\n TextSelectorPropFactory.prototype = {\n getMult: function getMult(ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue();\n }\n\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\n\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n } else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\n\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1;\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 4) {\n if (e === s) {\n mult = 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\n }\n\n mult = easer(mult);\n } else if (type === 5) {\n if (e === s) {\n mult = 0;\n } else {\n var tot = e - s;\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n ind = min(max(0, ind + 0.5 - s), e - s);\n var x = -tot / 2 + ind;\n var a = tot / 2;\n mult = Math.sqrt(1 - x * x / (a * a));\n }\n\n mult = easer(mult);\n } else if (type === 6) {\n if (e === s) {\n mult = 0;\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s);\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n }\n\n mult = easer(mult);\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1));\n } else {\n mult = max(0, min(e - ind, 1));\n }\n }\n\n mult = easer(mult);\n } // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n\n var threshold = 0.5 - smoothness * 0.5;\n\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n\n if (mult > 1) {\n mult = 1;\n }\n }\n }\n\n return mult * this.a.v;\n },\n getValue: function getValue(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\n\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n var o = this.o.v / divisor;\n var s = this.s.v / divisor + o;\n var e = this.e.v / divisor + o;\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n }();\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = {\n propType: false\n };\n var getProp = PropertyFactory.getProp;\n var textAnimatorAnimatables = animatorProps.a;\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n };\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n this.s.t = animatorProps.s.t;\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true;\n this._hasMaskedPath = false;\n this._frameId = -1;\n this._textData = textData;\n this._renderType = renderType;\n this._elem = elem;\n this._animatorsData = createSizedArray(this._textData.a.length);\n this._pathData = {};\n this._moreOptions = {\n alignment: {}\n };\n this.renderedLetters = [];\n this.lettersChangedFlag = false;\n this.initDynamicPropertyContainer(elem);\n }\n\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i];\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n }\n\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n };\n this._hasMaskedPath = true;\n } else {\n this._hasMaskedPath = false;\n }\n\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\n\n this._isFirstFrame = false;\n var alignment = this._moreOptions.alignment.v;\n var animators = this._animatorsData;\n var textData = this._textData;\n var matrixHelper = this.mHelper;\n var renderType = this._renderType;\n var renderedLettersCount = this.renderedLetters.length;\n var xPos;\n var yPos;\n var i;\n var len;\n var letters = documentData.l;\n var pathInfo;\n var currentLength;\n var currentPoint;\n var segmentLength;\n var flag;\n var pointInd;\n var segmentInd;\n var prevPoint;\n var points;\n var segments;\n var partialLength;\n var totalLength;\n var perc;\n var tanAngle;\n var mask;\n\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n\n if (this._pathData.r.v) {\n paths = paths.reverse();\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n i = len;\n\n if (mask.v.c) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n this._pathData.pi = pathInfo;\n }\n\n pathInfo = this._pathData.pi;\n currentLength = this._pathData.f.v;\n segmentInd = 0;\n pointInd = 1;\n segmentLength = 0;\n flag = true;\n segments = pathInfo.segments;\n\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n\n len = letters.length;\n xPos = 0;\n yPos = 0;\n var yOff = documentData.finalSize * 1.2 * 0.714;\n var firstLine = true;\n var animatorProps;\n var animatorSelector;\n var j;\n var jLen;\n var letterValue;\n jLen = animators.length;\n var mult;\n var ind = -1;\n var offf;\n var xPathPos;\n var yPathPos;\n var initPathPos = currentLength;\n var initSegmentInd = segmentInd;\n var initPointInd = pointInd;\n var currentLine = -1;\n var elemOpacity;\n var sc;\n var sw;\n var fc;\n var k;\n var letterSw;\n var letterSc;\n var letterFc;\n var letterM = '';\n var letterP = this.defaultPropsArray;\n var letterO; //\n\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0;\n var animatorFirstCharOffset = 0;\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n var lastIndex = 0;\n var isNewLine = true;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n }\n }\n }\n\n isNewLine = false;\n }\n }\n\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n } //\n\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset();\n elemOpacity = 1;\n\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd;\n pointInd = initPointInd;\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n segmentLength = 0;\n }\n\n letterM = '';\n letterFc = '';\n letterSw = '';\n letterO = '';\n letterP = this.defaultPropsArray;\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\n break;\n\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n\n default:\n break;\n }\n\n currentLine = letters[i].line;\n }\n\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\n }\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n\n flag = true; // Force alignment only works with a single line for now\n\n if (this._pathData.a.v) {\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n currentLength += this._pathData.f.v;\n }\n\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0;\n segmentInd = 0;\n points = segments[segmentInd].points;\n } else {\n segmentLength -= currentPoint.partialLength;\n points = null;\n }\n } else {\n points = segments[segmentInd].points;\n }\n }\n\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n }\n }\n\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n } else {\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0];\n } else {\n currentLength += animatorProps.t.v * mult;\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0];\n } else {\n xPos += animatorProps.t.v * mult;\n }\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\n\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n } else {\n sc = [0, 0, 0];\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n } else {\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n }\n }\n\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\n }\n }\n\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult);\n }\n }\n\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult);\n }\n }\n\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n }\n }\n\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0];\n } else {\n sw += animatorProps.sw.v * mult;\n }\n }\n\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n }\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n }\n }\n }\n\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n }\n }\n\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n }\n }\n\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n }\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n } else if (mult.length) {\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n } else {\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\n\n if (documentData.strokeColorAnim) {\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n }\n\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2;\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0);\n\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(offf, 0, 0);\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n }\n\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS();\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS();\n } else {\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n }\n\n letterO = elemOpacity;\n }\n\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n this.renderedLetters.push(letterValue);\n renderedLettersCount += 1;\n this.lettersChangedFlag = true;\n } else {\n letterValue = this.renderedLetters[i];\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n }\n }\n };\n\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true;\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n this.textAnimator.searchProperties(this.dynamicProperties);\n };\n\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k;\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n }\n }\n\n return shapeStr;\n };\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\n\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n matrixHelper.translate(0, -documentData.ls, 0);\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(xPos, yPos, 0);\n };\n\n ITextElement.prototype.buildColor = function (colorData) {\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n };\n\n ITextElement.prototype.emptyProp = new LetterProps();\n\n ITextElement.prototype.destroy = function () {};\n\n ITextElement.prototype.validateText = function () {\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n };\n\n var emptyShapeData = {\n shapes: []\n };\n\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent);\n currentTextContent = '';\n } else {\n currentTextContent += textArray[i];\n }\n\n i += 1;\n }\n\n textContents.push(currentTextContent);\n return textContents;\n };\n\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0];\n\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n\n return data;\n };\n\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this);\n var i;\n var len;\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n }\n\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass);\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily);\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n\n this.layerElement.setAttribute('aria-label', documentData.t);\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapeStr = '';\n var singleShape = this.data.singleShape;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n\n case 2:\n justify = 'middle';\n break;\n\n default:\n justify = 'start';\n break;\n }\n\n tElement.setAttribute('text-anchor', justify);\n tElement.setAttribute('letter-spacing', trackingOffset);\n var textContent = this.buildTextContents(documentData.finalText);\n len = textContent.length;\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan');\n tSpan.textContent = textContent[i];\n tSpan.setAttribute('x', 0);\n tSpan.setAttribute('y', yPos);\n tSpan.style.display = 'inherit';\n tElement.appendChild(tSpan);\n\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null\n };\n }\n\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt');\n tSpan.setAttribute('stroke-linejoin', 'round');\n tSpan.setAttribute('stroke-miterlimit', '4');\n this.textSpans[i].span = tSpan;\n\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n\n tSpan.style.display = 'inherit';\n }\n\n matrixHelper.reset();\n\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n xPos += trackingOffset;\n }\n\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var glyphElement; // t === 1 means the character has been replaced with an animated shaped\n\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph;\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n glyph.destroy();\n }\n\n this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n }\n\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n } //\n\n }\n\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n\n this._sizeChanged = true;\n };\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n\n if (this._sizeChanged) {\n this._sizeChanged = false;\n var textBox = this.layerElement.getBBox();\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height\n };\n }\n\n return this.bbox;\n };\n\n SVGTextLottieElement.prototype.getValue = function () {\n var i;\n var len = this.textSpans.length;\n var glyphElement;\n this.renderedFrame = this.comp.renderedFrame;\n\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true;\n var i;\n var len;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var glyphElement;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n textSpan = this.textSpans[i].span;\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc);\n }\n }\n }\n }\n }\n };\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([IImageElement], ISolidElement);\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.layerElement.appendChild(rect);\n };\n\n function NullElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initFrame();\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n }\n\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n NullElement.prototype.renderFrame = function () {};\n\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n\n NullElement.prototype.destroy = function () {};\n\n NullElement.prototype.sourceRectAtTime = function () {};\n\n NullElement.prototype.hide = function () {};\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase);\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n }\n\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w);\n this.svgElement.setAttribute('height', animData.h);\n this.svgElement.style.width = '100%';\n this.svgElement.style.height = '100%';\n this.svgElement.style.transform = 'translate3d(0,0,0)';\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n }\n\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n var defs = this.globalData.defs;\n this.setupGlobalData(animData, defs);\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.data = animData;\n var maskElement = createNS('clipPath');\n var rect = createNS('rect');\n rect.setAttribute('width', animData.w);\n rect.setAttribute('height', animData.h);\n rect.setAttribute('x', 0);\n rect.setAttribute('y', 0);\n var maskId = createElementID();\n maskElement.setAttribute('id', maskId);\n maskElement.appendChild(rect);\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n defs.appendChild(maskElement);\n this.layers = animData.layers;\n this.elements = createSizedArray(animData.layers.length);\n };\n\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n SVGRendererBase.prototype.updateContainerSize = function () {};\n\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n\n return -1;\n };\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n\n element.initExpressions();\n }\n\n this.appendElementInPos(element, pos);\n\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n if (elementIndex === -1) {\n return;\n }\n\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n this.buildItem(elementIndex);\n this.addPendingElement(element);\n } else {\n var matteElement = elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\n element.setMatte(matteMask);\n }\n }\n };\n\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n\n while (i < len) {\n if (this.elements[i] === element) {\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n var matteElement = this.elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[i].tt);\n element.setMatte(matteMask);\n break;\n }\n\n i += 1;\n }\n }\n }\n };\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n } // console.log('-------');\n // console.log('FRAME ',num);\n\n\n this.globalData.frameNum = num;\n this.globalData.frameId += 1;\n this.globalData.projectInterface.currentFrame = num;\n this.globalData._mdf = false;\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n }\n };\n\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n\n if (!newElement) {\n return;\n }\n\n var i = 0;\n var nextElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement();\n }\n\n i += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initRenderable();\n this.initHierarchy();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n\n this.hide();\n };\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\n\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n\n var i;\n var len = this.elements.length;\n\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n };\n\n ICompElement.prototype.destroy = function () {\n this.destroyElements();\n this.destroyBaseElement();\n };\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = true;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.svgElement = createNS('svg');\n var ariaLabel = '';\n\n if (config && config.title) {\n var titleElement = createNS('title');\n var titleId = createElementID();\n titleElement.setAttribute('id', titleId);\n titleElement.textContent = config.title;\n this.svgElement.appendChild(titleElement);\n ariaLabel += titleId;\n }\n\n if (config && config.description) {\n var descElement = createNS('desc');\n var descId = createElementID();\n descElement.setAttribute('id', descId);\n descElement.textContent = config.description;\n this.svgElement.appendChild(descElement);\n ariaLabel += ' ' + descId;\n }\n\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\n\n var defs = createNS('defs');\n this.svgElement.appendChild(defs);\n var maskElement = createNS('g');\n this.svgElement.appendChild(maskElement);\n this.layerElement = maskElement;\n this.renderConfig = {\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n progressiveLoad: config && config.progressiveLoad || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: config && config.viewBoxOnly || false,\n viewBoxSize: config && config.viewBoxSize || false,\n className: config && config.className || '',\n id: config && config.id || '',\n focusable: config && config.focusable,\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '100%',\n height: config && config.filterSize && config.filterSize.height || '100%',\n x: config && config.filterSize && config.filterSize.x || '0%',\n y: config && config.filterSize && config.filterSize.y || '0%'\n },\n width: config && config.width,\n height: config && config.height,\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig\n };\n this.elements = [];\n this.pendingElements = [];\n this.destroyed = false;\n this.rendererType = 'svg';\n }\n\n extendPrototype([SVGRendererBase], SVGRenderer);\n\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function ShapeTransformManager() {\n this.sequences = {};\n this.sequenceList = [];\n this.transform_key_count = 0;\n }\n\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n\n var sequence = this.sequences[key];\n\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false\n };\n this.sequences[key] = sequence;\n this.sequenceList.push(sequence);\n }\n\n return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n\n i += 1;\n }\n\n if (_mdf) {\n sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame);\n }\n },\n getNewKey: function getNewKey() {\n this.transform_key_count += 1;\n return '_' + this.transform_key_count;\n }\n };\n\n var lumaLoader = function lumaLoader() {\n var id = '__lottie_element_luma_buffer';\n var lumaBuffer = null;\n var lumaBufferCtx = null;\n var svg = null; // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n // Naming it solution 2 to mark the extra comment lines.\n\n /*\r\n var svgString = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ].join('');\r\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n var url = URL.createObjectURL(blob);\r\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n\n var fil = createNS('filter');\n var matrix = createNS('feColorMatrix');\n fil.setAttribute('id', id);\n matrix.setAttribute('type', 'matrix');\n matrix.setAttribute('color-interpolation-filters', 'sRGB');\n matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n fil.appendChild(matrix);\n\n _svg.appendChild(fil);\n\n _svg.setAttribute('id', id + '_svg');\n\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n\n return _svg;\n }\n\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n\n var assetLoader = function () {\n return {\n loadLumaCanvas: lumaLoader.load,\n getLumaCanvas: lumaLoader.get,\n createCanvas: createCanvas\n };\n }();\n\n var registeredEffects = {};\n\n function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect(id, effect) {\n registeredEffects[id] = {\n effect: effect\n };\n }\n\n function CVMaskElement(data, element) {\n this.data = data;\n this.element = element;\n this.masksProperties = this.data.masksProperties || [];\n this.viewData = createSizedArray(this.masksProperties.length);\n var i;\n var len = this.masksProperties.length;\n var hasMasks = false;\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n\n this.hasMasks = hasMasks;\n\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\n\n var transform = this.element.finalTransform.mat;\n var ctx = this.element.canvasContext;\n var i;\n var len = this.masksProperties.length;\n var pt;\n var pts;\n var data;\n ctx.beginPath();\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0);\n ctx.lineTo(this.element.globalData.compSize.w, 0);\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n ctx.lineTo(0, this.element.globalData.compSize.h);\n ctx.lineTo(0, 0);\n }\n\n data = this.viewData[i].v;\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n ctx.moveTo(pt[0], pt[1]);\n var j;\n var jLen = data._length;\n\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n }\n\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n\n var operationsMap = {\n 1: 'source-in',\n 2: 'source-out',\n 3: 'source-in',\n 4: 'source-out'\n };\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n // If the layer is masked we will use two buffers to store each different states of the drawing\n // This solution is not ideal for several reason. But unfortunately, because of the recursive\n // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n // It might be challenging because the layer most likely is transformed in some way\n if (this.data.tt >= 1) {\n this.buffers = [];\n var canvasContext = this.globalData.canvasContext;\n var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas);\n var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas2);\n\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\n }\n\n this.canvasContext = this.globalData.canvasContext;\n this.transformCanvas = this.globalData.transformCanvas;\n this.renderableEffectsManager = new CVEffects(this);\n this.searchEffectTransforms();\n },\n createContent: function createContent() {},\n setBlendMode: function setBlendMode() {\n var globalData = this.globalData;\n\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm;\n var blendModeValue = getBlendMode(this.data.bm);\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new CVMaskElement(this.data, this);\n this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n },\n hideElement: function hideElement() {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true;\n }\n },\n showElement: function showElement() {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false;\n this._isFirstFrame = true;\n this.maskManager._isFirstFrame = true;\n }\n },\n clearCanvas: function clearCanvas(canvasContext) {\n canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n },\n prepareLayer: function prepareLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[0];\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx); // on the first buffer we store the current state of the global drawing\n\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // The next four lines are to clear the canvas\n // TODO: Check if there is a way to clear the canvas without resetting the transform\n\n this.currentTransform = this.canvasContext.getTransform();\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n }\n },\n exitLayer: function exitLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[1]; // On the second buffer we store the current state of the global drawing\n // that only contains the content of this layer\n // (if it is a composition, it also includes the nested layers)\n\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // If the mask is a Luma matte, we need to do two extra painting operations\n // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n\n if (this.data.tt >= 3 && !document._isProxy) {\n // We copy the painted mask to a buffer that has a color matrix filter applied to it\n // that applies the rgb values to the alpha channel\n var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n var lumaBufferCtx = lumaBuffer.getContext('2d');\n lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n this.clearCanvas(this.canvasContext); // we repaint the context with the mask applied to it\n\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0); // We finally draw the first buffer (that contains the content of the global drawing)\n // We use destination-over to draw the global drawing below the current layer\n\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n if (this.data.td === 1 && !forceRender) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.prepareLayer();\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n this.exitLayer();\n\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.canvasContext = null;\n this.data = null;\n this.globalData = null;\n this.maskManager.destroy();\n },\n mHelper: new Matrix()\n };\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = [];\n this.tr = [0, 0, 0, 0, 0, 0];\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: []\n };\n this.styledShapes.push(styledShape);\n styles[i].elements.push(styledShape);\n }\n }\n }\n\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = [];\n this.shapesData = data.shapes;\n this.stylesList = [];\n this.itemsData = [];\n this.prevViewData = [];\n this.shapeModifiers = [];\n this.processedElements = [];\n this.transformsManager = new ShapeTransformManager();\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n CVShapeElement.prototype.transformHelper = {\n opacity: 1,\n _opMdf: false\n };\n CVShapeElement.prototype.dashResetter = [];\n\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\n\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true\n };\n var elementData = {};\n\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n if (!elementData.c.k) {\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n elementData.h = PropertyFactory.getProp(this, data.h || {\n k: 0\n }, 0, 0.01, this);\n elementData.a = PropertyFactory.getProp(this, data.a || {\n k: 0\n }, 0, degToRads, this);\n elementData.g = new GradientProperty(this, data.g, this);\n }\n\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray;\n styleElem[\"do\"] = elementData.d.dashoffset[0];\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n }\n\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n }\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n return elementData;\n };\n\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform);\n }\n }\n };\n\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var processedPos;\n var modifier;\n var currentTransform;\n var ownTransforms = [].concat(transforms);\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n } else {\n itemsData[i].style.closed = false;\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i]);\n itemsData[i] = currentTransform;\n }\n\n ownTransforms.push(itemsData[i]);\n this.addTransformToStyleList(itemsData[i]);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i]);\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n shouldRender = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1;\n this.transformHelper._opMdf = false;\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n };\n\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity;\n groupTransform.opacity *= groupTransform.op.v;\n groupTransform._opMdf = true;\n }\n };\n\n CVShapeElement.prototype.drawLayer = function () {\n var i;\n var len = this.stylesList.length;\n var j;\n var jLen;\n var k;\n var kLen;\n var elems;\n var nodes;\n var renderer = this.globalData.renderer;\n var ctx = this.globalData.canvasContext;\n var type;\n var currentStyle;\n\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type; // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n renderer.save();\n elems = currentStyle.elements;\n\n if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n\n renderer.ctxOpacity(currentStyle.coOp);\n\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n } else {\n ctx.closePath();\n }\n }\n\n if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n\n renderer.restore();\n }\n }\n };\n\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i;\n var len = items.length - 1;\n var groupTransform;\n groupTransform = parentTransform;\n\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform;\n this.renderShapeTransform(parentTransform, groupTransform);\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i]);\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it);\n } else if (items[i].ty === 'tm') {//\n }\n }\n\n if (isMain) {\n this.drawLayer();\n }\n };\n\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes;\n var paths = shape.paths;\n var i;\n var len;\n var j;\n var jLen = paths._length;\n shapeNodes.length = 0;\n var groupTransformMat = styledShape.transforms.finalTransform;\n\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\n }\n\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n });\n shapeNodes.push({\n t: 'z'\n });\n }\n }\n }\n\n styledShape.trNodes = shapeNodes;\n }\n };\n\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i;\n var len = itemData.styledShapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n var ctx = this.globalData.canvasContext;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n }\n\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1];\n }\n\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n\n styleElem.grd = grd;\n }\n\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\n };\n\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null;\n this.globalData = null;\n this.canvasContext = null;\n this.stylesList.length = 0;\n this.itemsData.length = 0;\n };\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.yOffset = 0;\n this.fillColorAnim = false;\n this.strokeColorAnim = false;\n this.strokeWidthAnim = false;\n this.stroke = false;\n this.fill = false;\n this.justifyOffset = 0;\n this.currentRender = null;\n this.renderType = 'canvas';\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: ''\n };\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var hasFill = false;\n\n if (documentData.fc) {\n hasFill = true;\n this.values.fill = this.buildColor(documentData.fc);\n } else {\n this.values.fill = 'rgba(0,0,0,0)';\n }\n\n this.fill = hasFill;\n var hasStroke = false;\n\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n var i;\n var len;\n var letters = documentData.l;\n var matrixHelper = this.mHelper;\n this.stroke = hasStroke;\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n var charData;\n var shapeData;\n var k;\n var kLen;\n var shapes;\n var j;\n var jLen;\n var pathNodes;\n var commands;\n var pathArr;\n var singleShape = this.data.singleShape;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n matrixHelper.reset();\n\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length;\n pathNodes = shapes[j].ks.k;\n pathArr = [];\n\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n commands[commandsCounter] = pathArr;\n commandsCounter += 1;\n }\n }\n\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n\n cnt += 1;\n }\n };\n\n CVTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n this.globalData.renderer.ctxLineCap('butt'); // ctx.lineCap = 'butt';\n\n this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\n\n var i;\n var len;\n var j;\n var jLen;\n var k;\n var kLen;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var lastFill = null;\n var lastStroke = null;\n var lastStrokeW = null;\n var commands;\n var pathArr;\n var renderer = this.globalData.renderer;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxFill(); // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\n }\n\n if (renderedLetter) {\n this.globalData.renderer.restore();\n }\n }\n }\n };\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.img = globalData.imageLoader.getAsset(this.assetData);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas');\n canvas.width = this.assetData.w;\n canvas.height = this.assetData.h;\n var ctx = canvas.getContext('2d');\n var imgW = this.img.width;\n var imgH = this.img.height;\n var imgRel = imgW / imgH;\n var canvasRel = this.assetData.w / this.assetData.h;\n var widthCrop;\n var heightCrop;\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n heightCrop = imgH;\n widthCrop = heightCrop * canvasRel;\n } else {\n widthCrop = imgW;\n heightCrop = widthCrop / canvasRel;\n }\n\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n this.img = canvas;\n }\n };\n\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\n\n CVImageElement.prototype.destroy = function () {\n this.img = null;\n };\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n\n extendPrototype([BaseRenderer], CanvasRendererBase);\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return;\n }\n\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n this.contextData.reset();\n };\n\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n\n this.contextData.restore(actionFlag);\n };\n\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas');\n var containerStyle = this.animationItem.container.style;\n containerStyle.width = '100%';\n containerStyle.height = '100%';\n var origin = '0px 0px 0px';\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n containerStyle['-webkit-transform'] = origin;\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n this.animationItem.wrapper.appendChild(this.animationItem.container);\n this.canvasContext = this.animationItem.container.getContext('2d');\n\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\n }\n } else {\n this.canvasContext = this.renderConfig.context;\n }\n\n this.contextData.setContext(this.canvasContext);\n this.data = animData;\n this.layers = animData.layers;\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0\n };\n this.setupGlobalData(animData, document.body);\n this.globalData.canvasContext = this.canvasContext;\n this.globalData.renderer = this;\n this.globalData.isDashed = false;\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.globalData.transformCanvas = this.transformCanvas;\n this.elements = createSizedArray(animData.layers.length);\n this.updateContainerSize();\n };\n\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n\n if (width) {\n elementWidth = width;\n elementHeight = height;\n this.canvasContext.canvas.width = elementWidth;\n this.canvasContext.canvas.height = elementHeight;\n } else {\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n } else {\n elementWidth = this.canvasContext.canvas.width;\n elementHeight = this.canvasContext.canvas.height;\n }\n\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n\n var elementRel;\n var animationRel;\n\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n var par = this.renderConfig.preserveAspectRatio.split(' ');\n var fillType = par[1] || 'meet';\n var pos = par[0] || 'xMidYMid';\n var xPos = pos.substr(0, 4);\n var yPos = pos.substr(4);\n elementRel = elementWidth / elementHeight;\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n }\n\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.tx = 0;\n }\n\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.ty = 0;\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr;\n this.transformCanvas.sy = this.renderConfig.dpr;\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n }\n\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\n\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n return;\n }\n\n this.renderedFrame = num;\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n this.globalData.frameId += 1;\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n // console.log('NEW: ',num);\n\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n } else {\n this.save();\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n var element = this.createItem(this.layers[pos], this, this.globalData);\n elements[pos] = element;\n element.initExpressions();\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\n };\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\n\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block';\n };\n\n function CanvasContext() {\n this.opacity = -1;\n this.transform = createTypedArray('float32', 16);\n this.fillStyle = '';\n this.strokeStyle = '';\n this.lineWidth = '';\n this.lineCap = '';\n this.lineJoin = '';\n this.miterLimit = '';\n this.id = Math.random();\n }\n\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\n\n this._length = len;\n this.nativeContext = null;\n this.transformMat = new Matrix();\n this.currentOpacity = 1; //\n\n this.currentFillStyle = '';\n this.appliedFillStyle = ''; //\n\n this.currentStrokeStyle = '';\n this.appliedStrokeStyle = ''; //\n\n this.currentLineWidth = '';\n this.appliedLineWidth = ''; //\n\n this.currentLineCap = '';\n this.appliedLineCap = ''; //\n\n this.currentLineJoin = '';\n this.appliedLineJoin = ''; //\n\n this.appliedMiterLimit = '';\n this.currentMiterLimit = '';\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\n\n CVContextData.prototype.restore = function (forceRestore) {\n this.cArrPos -= 1;\n var currentContext = this.stack[this.cArrPos];\n var transform = currentContext.transform;\n var i;\n var arr = this.cTr.props;\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\n\n if (forceRestore) {\n this.nativeContext.restore();\n var prevStack = this.stack[this.cArrPos + 1];\n this.appliedFillStyle = prevStack.fillStyle;\n this.appliedStrokeStyle = prevStack.strokeStyle;\n this.appliedLineWidth = prevStack.lineWidth;\n this.appliedLineCap = prevStack.lineCap;\n this.appliedLineJoin = prevStack.lineJoin;\n this.appliedMiterLimit = prevStack.miterLimit;\n }\n\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\n\n this.currentFillStyle = currentContext.fillStyle;\n this.currentStrokeStyle = currentContext.strokeStyle;\n this.currentLineWidth = currentContext.lineWidth;\n this.currentLineCap = currentContext.lineCap;\n this.currentLineJoin = currentContext.lineJoin;\n this.currentMiterLimit = currentContext.miterLimit;\n };\n\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n\n var props = this.cTr.props;\n\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n\n var currentStack = this.stack[this.cArrPos];\n var i;\n\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\n\n this.cArrPos += 1;\n var newStack = this.stack[this.cArrPos];\n newStack.opacity = currentStack.opacity;\n newStack.fillStyle = currentStack.fillStyle;\n newStack.strokeStyle = currentStack.strokeStyle;\n newStack.lineWidth = currentStack.lineWidth;\n newStack.lineCap = currentStack.lineCap;\n newStack.lineJoin = currentStack.lineJoin;\n newStack.miterLimit = currentStack.miterLimit;\n };\n\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\n\n CVContextData.prototype.fillStyle = function (value) {\n if (this.stack[this.cArrPos].fillStyle !== value) {\n this.currentFillStyle = value;\n this.stack[this.cArrPos].fillStyle = value;\n }\n };\n\n CVContextData.prototype.strokeStyle = function (value) {\n if (this.stack[this.cArrPos].strokeStyle !== value) {\n this.currentStrokeStyle = value;\n this.stack[this.cArrPos].strokeStyle = value;\n }\n };\n\n CVContextData.prototype.lineWidth = function (value) {\n if (this.stack[this.cArrPos].lineWidth !== value) {\n this.currentLineWidth = value;\n this.stack[this.cArrPos].lineWidth = value;\n }\n };\n\n CVContextData.prototype.lineCap = function (value) {\n if (this.stack[this.cArrPos].lineCap !== value) {\n this.currentLineCap = value;\n this.stack[this.cArrPos].lineCap = value;\n }\n };\n\n CVContextData.prototype.lineJoin = function (value) {\n if (this.stack[this.cArrPos].lineJoin !== value) {\n this.currentLineJoin = value;\n this.stack[this.cArrPos].lineJoin = value;\n }\n };\n\n CVContextData.prototype.miterLimit = function (value) {\n if (this.stack[this.cArrPos].miterLimit !== value) {\n this.currentMiterLimit = value;\n this.stack[this.cArrPos].miterLimit = value;\n }\n };\n\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\n };\n\n CVContextData.prototype.fill = function (rule) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fill(rule);\n };\n\n CVContextData.prototype.fillRect = function (x, y, w, h) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fillRect(x, y, w, h);\n };\n\n CVContextData.prototype.stroke = function () {\n if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n this.appliedStrokeStyle = this.currentStrokeStyle;\n this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n }\n\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\n\n this.nativeContext.stroke();\n };\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false;\n this.layers = data.layers;\n this.pendingElements = [];\n this.elements = createSizedArray(this.layers.length);\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.data.w, 0);\n ctx.lineTo(this.data.w, this.data.h);\n ctx.lineTo(0, this.data.h);\n ctx.lineTo(0, 0);\n ctx.clip();\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.layers = null;\n this.elements = null;\n };\n\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || '',\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n\n if (this.renderConfig.clearCanvas) {\n this.ctxTransform = this.contextData.transform.bind(this.contextData);\n this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n this.ctxFill = this.contextData.fill.bind(this.contextData);\n this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n this.save = this.contextData.save.bind(this.contextData);\n }\n }\n\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n\n if (this.data.hasMask) {\n this.svgElement = createNS('svg');\n this.layerElement = createNS('g');\n this.maskedElement = this.layerElement;\n this.svgElement.appendChild(this.layerElement);\n this.baseElement.appendChild(this.svgElement);\n } else {\n this.layerElement = this.baseElement;\n }\n\n styleDiv(this.baseElement);\n },\n createContainerElements: function createContainerElements() {\n this.renderableEffectsManager = new CVEffects(this);\n this.transformedElement = this.baseElement;\n this.maskedElement = this.layerElement;\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\n\n if (this.finalTransform._opMdf) {\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n\n if (this.matteElement) {\n this.matteElement = null;\n }\n\n if (this.maskManager) {\n this.maskManager.destroy();\n this.maskManager = null;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n },\n addEffects: function addEffects() {},\n setMatte: function setMatte() {}\n };\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n function HSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n HSolidElement.prototype.createContent = function () {\n var rect;\n\n if (this.data.hasMask) {\n rect = createNS('rect');\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.svgElement.setAttribute('width', this.data.sw);\n this.svgElement.setAttribute('height', this.data.sh);\n } else {\n rect = createTag('div');\n rect.style.width = this.data.sw + 'px';\n rect.style.height = this.data.sh + 'px';\n rect.style.backgroundColor = this.data.sc;\n }\n\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n\n if (this.data.hasMask) {\n this.layerElement.appendChild(this.shapesContainer);\n cont = this.svgElement;\n } else {\n cont = createNS('svg');\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n cont.setAttribute('width', size.w);\n cont.setAttribute('height', size.h);\n cont.appendChild(this.shapesContainer);\n this.layerElement.appendChild(cont);\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n\n return point;\n };\n\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n var shape = item.sh.v;\n var transformers = item.transformers;\n var i;\n var len = shape._length;\n var vPoint;\n var oPoint;\n var nextIPoint;\n var nextVPoint;\n\n if (len <= 1) {\n return;\n }\n\n for (i = 0; i < len - 1; i += 1) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n\n if (shape.c) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n };\n\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n var bounds = this.shapeBoundingBox;\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n };\n\n HShapeElement.prototype.shapeBoundingBox = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n HShapeElement.prototype.tempBoundingBox = {\n x: 0,\n xMax: 0,\n y: 0,\n yMax: 0,\n width: 0,\n height: 0\n };\n\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n // eslint-disable-line no-plusplus\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n b |= 0; // eslint-disable-line no-bitwise\n\n a |= 0; // eslint-disable-line no-bitwise\n\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {//\n } else if (a === 0) {\n t = -c / b;\n\n if (t > 0 && t < 1) {\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n }\n } else {\n b2ac = b * b - 4 * c * a;\n\n if (b2ac >= 0) {\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n }\n }\n }\n\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n };\n\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n };\n\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n if (itemsData[i] && itemsData[i].sh) {\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n } else if (itemsData[i] && itemsData[i].it) {\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\n } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n }\n }\n };\n\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n\n if (kfw > width) {\n width = kfw;\n }\n }\n\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\n };\n\n HShapeElement.prototype.currentBoxContains = function (box) {\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n };\n\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n var tempBoundingBox = this.tempBoundingBox;\n var max = 999999;\n tempBoundingBox.x = max;\n tempBoundingBox.xMax = -max;\n tempBoundingBox.y = max;\n tempBoundingBox.yMax = -max;\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n\n var changed = false;\n\n if (this.currentBBox.w !== tempBoundingBox.width) {\n this.currentBBox.w = tempBoundingBox.width;\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\n changed = true;\n }\n\n if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\n }\n\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n this.currentBBox.w = tempBoundingBox.width;\n this.currentBBox.h = tempBoundingBox.height;\n this.currentBBox.x = tempBoundingBox.x;\n this.currentBBox.y = tempBoundingBox.y;\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n var shapeStyle = this.shapeCont.style;\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n shapeStyle.transform = shapeTransform;\n shapeStyle.webkitTransform = shapeTransform;\n }\n }\n };\n\n function HTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.textPaths = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n this.renderType = 'svg';\n this.isMasked = false;\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n\n if (this.isMasked) {\n this.renderType = 'svg';\n this.compW = this.comp.data.w;\n this.compH = this.comp.data.h;\n this.svgElement.setAttribute('width', this.compW);\n this.svgElement.setAttribute('height', this.compH);\n var g = createNS('g');\n this.maskedElement.appendChild(g);\n this.innerElem = g;\n } else {\n this.renderType = 'html';\n this.innerElem = this.layerElement;\n }\n\n this.checkParenting();\n };\n\n HTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var innerElemStyle = this.innerElem.style;\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n innerElemStyle.fill = textColor;\n innerElemStyle.color = textColor;\n\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n if (fontData.fClass) {\n this.innerElem.className = fontData.fClass;\n } else {\n innerElemStyle.fontFamily = fontData.fFamily;\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n innerElemStyle.fontStyle = fStyle;\n innerElemStyle.fontWeight = fWeight;\n }\n }\n\n var i;\n var len;\n var letters = documentData.l;\n len = letters.length;\n var tSpan;\n var tParent;\n var tCont;\n var matrixHelper = this.mHelper;\n var shapes;\n var shapeStr = '';\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.globalData.fontManager.chars) {\n if (!this.textPaths[cnt]) {\n tSpan = createNS('path');\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n tSpan.setAttribute('stroke-miterlimit', '4');\n } else {\n tSpan = this.textPaths[cnt];\n }\n\n if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tCont = tParent.children[0];\n } else {\n tParent = createTag('div');\n tParent.style.lineHeight = 0;\n tCont = createNS('svg');\n tCont.appendChild(tSpan);\n styleDiv(tParent);\n }\n }\n } else if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tSpan = this.textPaths[cnt];\n } else {\n tParent = createTag('span');\n styleDiv(tParent);\n tSpan = createTag('span');\n styleDiv(tSpan);\n tParent.appendChild(tSpan);\n }\n } else {\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n } // tSpan.setAttribute('visibility', 'hidden');\n\n\n if (this.globalData.fontManager.chars) {\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var shapeData;\n\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n\n matrixHelper.reset();\n\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n shapes = shapeData.shapes[0].it;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n shapeStr = this.createPathShape(matrixHelper, shapes);\n tSpan.setAttribute('d', shapeStr);\n }\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n\n if (shapeData && shapeData.shapes) {\n // document.body.appendChild is needed to get exact measure of shape\n document.body.appendChild(tCont);\n var boundingBox = tCont.getBBox();\n tCont.setAttribute('width', boundingBox.width + 2);\n tCont.setAttribute('height', boundingBox.height + 2);\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n var tContStyle = tCont.style;\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n tContStyle.transform = tContTranslation;\n tContStyle.webkitTransform = tContTranslation;\n letters[i].yOffset = boundingBox.y - 1;\n } else {\n tCont.setAttribute('width', 1);\n tCont.setAttribute('height', 1);\n }\n\n tParent.appendChild(tCont);\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } else {\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent); //\n\n var tStyle = tSpan.style;\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n tStyle.transform = tSpanTranslation;\n tStyle.webkitTransform = tSpanTranslation;\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } //\n\n\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\n\n if (this.isMasked && this.finalTransform._matMdf) {\n // Todo Benchmark if using this is better than getBBox\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n svgStyle = this.svgElement.style;\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n svgStyle.transform = translation;\n svgStyle.webkitTransform = translation;\n }\n }\n\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\n\n var i;\n var len;\n var count = 0;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var textPath;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n count += 1;\n } else {\n textSpan = this.textSpans[i];\n textPath = this.textPaths[i];\n renderedLetter = renderedLetters[count];\n count += 1;\n\n if (renderedLetter._mdf.m) {\n if (!this.isMasked) {\n textSpan.style.webkitTransform = renderedLetter.m;\n textSpan.style.transform = renderedLetter.m;\n } else {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n textSpan.style.opacity = renderedLetter.o;\n\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n\n var margin = 1;\n\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n this.currentBBox.w = boundingBox.width + margin * 2;\n this.currentBBox.h = boundingBox.height + margin * 2;\n this.currentBBox.x = boundingBox.x - margin;\n this.currentBBox.y = boundingBox.y - margin;\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n svgStyle = this.svgElement.style;\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n svgStyle.transform = svgTransform;\n svgStyle.webkitTransform = svgTransform;\n }\n }\n };\n\n function HCameraElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initHierarchy();\n var getProp = PropertyFactory.getProp;\n this.pe = getProp(this, data.pe, 0, 0, this);\n\n if (data.ks.p.s) {\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n } else {\n this.p = getProp(this, data.ks.p, 1, 0, this);\n }\n\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\n\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\n var i;\n var len = data.ks.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.ks.or.k[i].to = null;\n data.ks.or.k[i].ti = null;\n }\n }\n\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\n this.or.sh = true;\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n this.mat = new Matrix();\n this._prevMat = new Matrix();\n this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n this.finalTransform = {\n mProp: this\n };\n }\n\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n HCameraElement.prototype.setup = function () {\n var i;\n var len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n perspectiveStyle = comp.perspectiveElem.style;\n containerStyle = comp.container.style;\n var perspective = this.pe.v + 'px';\n var origin = '0px 0px 0px';\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n perspectiveStyle.perspective = perspective;\n perspectiveStyle.webkitPerspective = perspective;\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n perspectiveStyle.transform = matrix;\n perspectiveStyle.webkitTransform = matrix;\n }\n }\n };\n\n HCameraElement.prototype.createElements = function () {};\n\n HCameraElement.prototype.hide = function () {};\n\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n\n if (this.hierarchy) {\n len = this.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\n }\n\n if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n this.mat.reset();\n\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n\n for (i = len; i >= 0; i -= 1) {\n var mTransf = this.hierarchy[i].finalTransform.mProp;\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n }\n }\n\n if (this.p) {\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n } else {\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n }\n\n if (this.a) {\n var diffVector;\n\n if (this.p) {\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n } else {\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n }\n\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n }\n\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n this.mat.translate(0, 0, this.pe.v);\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n if (hasMatrixChanged) {\n var matValue = this.mat.toCSS();\n containerStyle = comp.container.style;\n containerStyle.transform = matValue;\n containerStyle.webkitTransform = matValue;\n }\n\n if (this.pe._mdf) {\n perspectiveStyle = comp.perspectiveElem.style;\n perspectiveStyle.perspective = this.pe.v + 'px';\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n }\n }\n }\n\n this.mat.clone(this._prevMat);\n }\n }\n\n this._isFirstFrame = false;\n };\n\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n HCameraElement.prototype.destroy = function () {};\n\n HCameraElement.prototype.getBaseElement = function () {\n return null;\n };\n\n function HImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n\n if (this.data.hasMask) {\n this.imageElem = createNS('image');\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.imageElem);\n this.baseElement.setAttribute('width', this.assetData.w);\n this.baseElement.setAttribute('height', this.assetData.h);\n } else {\n this.layerElement.appendChild(img);\n }\n\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n\n if (this.data.ln) {\n this.baseElement.setAttribute('id', this.data.ln);\n }\n };\n\n function HybridRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n\n if (!newDOMElement) {\n return;\n }\n\n var layer = this.layers[pos];\n\n if (!layer.ddd || !this.supports3d) {\n if (this.threeDElements) {\n this.addTo3dContainer(newDOMElement, pos);\n } else {\n var i = 0;\n var nextDOMElement;\n var nextLayer;\n var tmpDOMElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n nextLayer = this.elements[i];\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n nextDOMElement = tmpDOMElement || nextDOMElement;\n }\n\n i += 1;\n }\n\n if (nextDOMElement) {\n if (!layer.ddd || !this.supports3d) {\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n }\n } else if (!layer.ddd || !this.supports3d) {\n this.layerElement.appendChild(newDOMElement);\n }\n }\n } else {\n this.addTo3dContainer(newDOMElement, pos);\n }\n };\n\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n\n return new HShapeElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n\n return new HTextElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n\n return new HImageElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n\n return new HSolidElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n\n i += 1;\n }\n\n return null;\n };\n\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n var perspectiveElem = createTag('div');\n var style;\n var containerStyle;\n styleDiv(perspectiveElem);\n var container = createTag('div');\n styleDiv(container);\n\n if (type === '3d') {\n style = perspectiveElem.style;\n style.width = this.globalData.compSize.w + 'px';\n style.height = this.globalData.compSize.h + 'px';\n var center = '50% 50%';\n style.webkitTransformOrigin = center;\n style.mozTransformOrigin = center;\n style.transformOrigin = center;\n containerStyle = container.style;\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n containerStyle.transform = matrix;\n containerStyle.webkitTransform = matrix;\n }\n\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n var threeDContainerData = {\n container: container,\n perspectiveElem: perspectiveElem,\n startPos: pos,\n endPos: pos,\n type: type\n };\n this.threeDElements.push(threeDContainerData);\n return threeDContainerData;\n };\n\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n if (currentContainer !== '3d') {\n currentContainer = '3d';\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n\n len = this.threeDElements.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n\n break;\n }\n\n i += 1;\n }\n };\n\n HybridRendererBase.prototype.configAnimation = function (animData) {\n var resizerElem = createTag('div');\n var wrapper = this.animationItem.wrapper;\n var style = resizerElem.style;\n style.width = animData.w + 'px';\n style.height = animData.h + 'px';\n this.resizerElem = resizerElem;\n styleDiv(resizerElem);\n style.transformStyle = 'flat';\n style.mozTransformStyle = 'flat';\n style.webkitTransformStyle = 'flat';\n\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\n\n wrapper.appendChild(resizerElem);\n style.overflow = 'hidden';\n var svg = createNS('svg');\n svg.setAttribute('width', '1');\n svg.setAttribute('height', '1');\n styleDiv(svg);\n this.resizerElem.appendChild(svg);\n var defs = createNS('defs');\n svg.appendChild(defs);\n this.data = animData; // Mask animation\n\n this.setupGlobalData(animData, svg);\n this.globalData.defs = defs;\n this.layers = animData.layers;\n this.layerElement = this.resizerElem;\n this.build3dContainers();\n this.updateContainerSize();\n };\n\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n HybridRendererBase.prototype.updateContainerSize = function () {\n var elementWidth = this.animationItem.wrapper.offsetWidth;\n var elementHeight = this.animationItem.wrapper.offsetHeight;\n var elementRel = elementWidth / elementHeight;\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n var sx;\n var sy;\n var tx;\n var ty;\n\n if (animationRel > elementRel) {\n sx = elementWidth / this.globalData.compSize.w;\n sy = elementWidth / this.globalData.compSize.w;\n tx = 0;\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n } else {\n sx = elementHeight / this.globalData.compSize.h;\n sy = elementHeight / this.globalData.compSize.h;\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n ty = 0;\n }\n\n var style = this.resizerElem.style;\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n style.transform = style.webkitTransform;\n };\n\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n\n if (this.camera) {\n this.camera.setup();\n } else {\n var cWidth = this.globalData.compSize.w;\n var cHeight = this.globalData.compSize.h;\n var i;\n var len = this.threeDElements.length;\n\n for (i = 0; i < len; i += 1) {\n var style = this.threeDElements[i].perspectiveElem.style;\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n style.perspective = style.webkitPerspective;\n }\n }\n };\n\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n function HCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = !data.hasMask;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n if (this.data.hasMask) {\n this.svgElement.setAttribute('width', this.data.w);\n this.svgElement.setAttribute('height', this.data.h);\n this.transformedElement = this.baseElement;\n } else {\n this.transformedElement = this.layerElement;\n }\n };\n\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n function HybridRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n },\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([HybridRendererBase], HybridRenderer);\n\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n var CompExpressionInterface = function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0;\n var len = comp.layers.length;\n\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n\n i += 1;\n }\n\n return null; // return {active:false};\n }\n\n Object.defineProperty(_thisLayerFunction, '_name', {\n value: comp.data.nm\n });\n _thisLayerFunction.layer = _thisLayerFunction;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n _thisLayerFunction.displayStartTime = 0;\n _thisLayerFunction.numLayers = comp.layers.length;\n return _thisLayerFunction;\n };\n }();\n\n function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\n };\n } // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n } // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n\n math['seed' + rngname] = seedrandom; //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\n\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n } // The \"g\" method returns the next (count) outputs as one number.\n\n\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n\n me.i = i;\n me.j = j;\n return r; // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n } //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\n\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n } //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n } //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n } //\n // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n } //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n var _lottieGlobal = {};\n initialize$2(BMMath);\n\n function resetFrame() {\n _lottieGlobal = {};\n }\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\n\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\n\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\n g = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [r, g, b, val[3]];\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\n\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n\n return path;\n }\n\n function initiateExpression(elem, data, property) {\n // Bail out if we don't want expressions\n function noOp(_value) {\n return _value;\n }\n\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n return executeExpression;\n }\n\n ob.initiateExpression = initiateExpression;\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n ob.resetFrame = resetFrame;\n return ob;\n }();\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n ob.resetFrame = ExpressionManager.resetFrame;\n\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\n\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\n }\n\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n\n default:\n return interfaceFunction.transform;\n }\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n }); // interfaceFunction.content = interfaceFunction;\n\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\n\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _sourceText;\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\n if (!_sourceText || stringValue !== _sourceText.value) {\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\n\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n var interfaces = {\n layer: LayerExpressionInterface,\n effects: EffectsExpressionInterface,\n comp: CompExpressionInterface,\n shape: ShapeExpressionInterface,\n text: TextExpressionInterface,\n footage: FootageInterface\n };\n\n function getInterface(type) {\n return interfaces[type] || null;\n }\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n\n return this._cachingAtTime.value;\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\n\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\n\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\n\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n\n i += 1;\n }\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n\n i += 1;\n }\n\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n if (magnitude === 0) {\n return [0, 0];\n }\n\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\n }\n\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n\n return currentValue;\n };\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n\n return feMerge;\n }\n };\n\n var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n\n function SVGTintFilter(filter, filterManager, elem, id, source) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n this.linearFilter = feColorMatrix;\n feColorMatrix.setAttribute('result', id + '_tint_1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id);\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(fil, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n filter.appendChild(feComponentTransfer);\n }\n\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n } // Green\n\n\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n } // Blue\n\n\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n } // Alpha\n\n\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\n\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n\n while (cnt <= 256) {\n perc = cnt / 256;\n\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n var filterSize = filterManager.data.fs || globalFilterSize;\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge); //\n }\n\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n }\n };\n\n var _svgMatteSymbols = [];\n\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n\n _svgMatteSymbols.push(mask);\n\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n\n elem.setMatte(mask.layerId);\n };\n\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\n\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('result', id);\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n\n TransformEffect.prototype.init = function (effectsManager) {\n this.effectsManager = effectsManager;\n this.type = effectTypes.TRANSFORM_EFFECT;\n this.matrix = new Matrix();\n this.opacity = -1;\n this._mdf = false;\n this._opMdf = false;\n };\n\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n\n if (forceFrame || this.effectsManager._mdf) {\n var effectElements = this.effectsManager.effectElements;\n var anchor = effectElements[0].p.v;\n var position = effectElements[1].p.v;\n var isUniformScale = effectElements[2].p.v === 1;\n var scaleHeight = effectElements[3].p.v;\n var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n var skew = effectElements[5].p.v;\n var skewAxis = effectElements[6].p.v;\n var rotation = effectElements[7].p.v;\n this.matrix.reset();\n this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n this.matrix.rotate(-rotation * degToRads);\n this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n this.matrix.translate(position[0], position[1], 0);\n this._mdf = true;\n\n if (this.opacity !== effectElements[8].p.v) {\n this.opacity = effectElements[8].p.v;\n this._opMdf = true;\n }\n }\n };\n\n function SVGTransformEffect(_, filterManager) {\n this.init(filterManager);\n }\n\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n\n extendPrototype([TransformEffect], CVTransformEffect);\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize(); // Registering svg effects\n\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","\"use strict\";\nvar ref, ref1;\nmodule.exports = ((ref = global.process) == null ? void 0 : ref.env) && typeof ((ref1 = global.process) == null ? void 0 : ref1.env) === \"object\" ? global.process : require(\"../../compiled/process\");\n\n//# sourceMappingURL=process.js.map","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/_app\",\n function () {\n return require(\"private-next-pages/_app.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/_app\"])\n });\n }\n ","import { LoaderProps } from './props';\n\nexport const Loader = ({\n text = '',\n size = 38,\n isInverted = false,\n}: LoaderProps) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {text ? (\n
\n {text}\n
\n ) : null}\n \n );\n};\n","var _path, _path2;\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgRastelTitle = function SvgRastelTitle(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 246,\n height: 33,\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"M20.533.237c3.948 0 6.973.965 9.075 2.897 2.13 1.903 3.195 4.459 3.195 7.668 0 1.79-.384 3.55-1.15 5.283-.739 1.732-2.003 3.11-3.792 4.132l8.181 12.057h-7.008l-7.691-10.65H17.21v10.65h-6.177V5.498L0 .237h20.533Zm1.065 15.422c1.25 0 2.216-.256 2.897-.767.71-.54 1.207-1.165 1.491-1.874.284-.739.426-1.406.426-2.003 0-.34-.056-.767-.17-1.278a4.689 4.689 0 0 0-.597-1.619c-.312-.54-.795-.994-1.448-1.363-.625-.37-1.477-.554-2.556-.554h-4.43v9.458h4.387Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.208.237h8.861L46.054 32.274h-4.005L50.21.237ZM59.069.237l3.004 15.848 3.003 16.189H50.208l5.858-16.019L59.069.237ZM84.765 32.098c-2.486 0-4.632-.489-6.437-1.465-1.776-1.007-3.123-2.294-4.04-3.863-.918-1.568-1.376-3.226-1.376-4.972v-.266h6.748v.266c0 .74.177 1.495.532 2.264.385.74.962 1.362 1.732 1.865.799.503 1.776.755 2.93.755 1.45 0 2.62-.37 3.507-1.11.918-.74 1.376-1.732 1.376-2.975 0-1.065-.384-1.909-1.154-2.53-.74-.651-1.657-1.08-2.752-1.288l-3.774-.799c-1.953-.385-3.833-1.213-5.638-2.486-1.806-1.302-2.708-3.418-2.708-6.349 0-1.894.459-3.522 1.376-4.883.917-1.391 2.19-2.442 3.818-3.152C80.533.37 82.383 0 84.455 0c2.367 0 4.395.459 6.082 1.376 1.716.918 3.004 2.102 3.862 3.552.888 1.45 1.332 2.99 1.332 4.617v.178h-6.748v-.134c0-1.065-.385-2.057-1.155-2.974-.74-.947-1.938-1.42-3.596-1.42-1.361 0-2.427.37-3.196 1.11-.77.71-1.154 1.627-1.154 2.752 0 1.065.384 1.909 1.154 2.53.8.622 1.776 1.05 2.93 1.288l3.73.799c2.278.503 4.261 1.435 5.948 2.797 1.687 1.361 2.53 3.359 2.53 5.993 0 1.894-.488 3.581-1.464 5.061-.977 1.45-2.338 2.575-4.085 3.374-1.716.8-3.67 1.199-5.86 1.199ZM126.1 5.993h-8.435v25.705h-6.126V5.993h-8.435V.622H126.1v5.371ZM138.782 5.993v7.503h12.208v4.84h-12.208v7.99h14.384v5.372h-20.555V.622h20.555v5.371h-14.384ZM182.026 26.326v5.372h-19.623L162.359.622h6.215l-.044 25.704h13.496ZM189.914 32.053c-.976 0-1.805-.325-2.486-.976-.651-.681-.976-1.51-.976-2.487 0-.976.325-1.805.976-2.486.681-.68 1.51-1.02 2.486-1.02 1.007 0 1.835.34 2.487 1.02.68.681 1.021 1.51 1.021 2.486 0 .948-.341 1.762-1.021 2.442-.652.68-1.48 1.021-2.487 1.021ZM202.064.622h6.216v31.076h-6.216V.622ZM231.158 32.053c-3.049 0-5.653-.695-7.814-2.086-2.131-1.42-3.744-3.33-4.839-5.727-1.066-2.427-1.598-5.12-1.598-8.08 0-2.99.547-5.697 1.642-8.124 1.095-2.457 2.708-4.41 4.839-5.86C225.549.725 228.139 0 231.158 0c3.018 0 5.593.725 7.724 2.175 2.131 1.421 3.744 3.36 4.839 5.816 1.096 2.427 1.643 5.15 1.643 8.169 0 2.99-.547 5.697-1.643 8.124-1.095 2.398-2.722 4.292-4.883 5.683-2.131 1.39-4.691 2.086-7.68 2.086Zm0-5.505c2.427 0 4.306-.976 5.638-2.93 1.332-1.983 1.998-4.498 1.998-7.547 0-1.953-.296-3.73-.888-5.327-.563-1.599-1.421-2.871-2.575-3.818-1.155-.947-2.546-1.421-4.173-1.421-1.628 0-3.034.488-4.218 1.465-1.154.947-2.027 2.22-2.619 3.818-.592 1.598-.888 3.374-.888 5.328 0 2.989.666 5.475 1.998 7.458 1.361 1.983 3.27 2.974 5.727 2.974Z\"\n })));\n};\n\nexport default SvgRastelTitle;","import { useTranslation } from 'react-i18next';\nimport RastelTitleIcon from '../../../assets/svg/rastel_title.svg';\n\nconst DEFAULT_COLOR = '#300096';\n\nexport const AppHero = ({ inverted = false }) => {\n const { t } = useTranslation();\n\n return (\n
\n \n \n {/* @ts-ignore */}\n {t('appHeroSubtitle')}\n
\n \n );\n};\n","// A [trie](https://en.wikipedia.org/wiki/Trie) data structure that holds\r\n// object keys weakly, yet can also hold non-object keys, unlike the\r\n// native `WeakMap`.\r\n// If no makeData function is supplied, the looked-up data will be an empty,\r\n// null-prototype Object.\r\nvar defaultMakeData = function () { return Object.create(null); };\r\n// Useful for processing arguments objects as well as arrays.\r\nvar _a = Array.prototype, forEach = _a.forEach, slice = _a.slice;\r\nvar Trie = /** @class */ (function () {\r\n function Trie(weakness, makeData) {\r\n if (weakness === void 0) { weakness = true; }\r\n if (makeData === void 0) { makeData = defaultMakeData; }\r\n this.weakness = weakness;\r\n this.makeData = makeData;\r\n }\r\n Trie.prototype.lookup = function () {\r\n var array = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n array[_i] = arguments[_i];\r\n }\r\n return this.lookupArray(array);\r\n };\r\n Trie.prototype.lookupArray = function (array) {\r\n var node = this;\r\n forEach.call(array, function (key) { return node = node.getChildTrie(key); });\r\n return node.data || (node.data = this.makeData(slice.call(array)));\r\n };\r\n Trie.prototype.getChildTrie = function (key) {\r\n var map = this.weakness && isObjRef(key)\r\n ? this.weak || (this.weak = new WeakMap())\r\n : this.strong || (this.strong = new Map());\r\n var child = map.get(key);\r\n if (!child)\r\n map.set(key, child = new Trie(this.weakness, this.makeData));\r\n return child;\r\n };\r\n return Trie;\r\n}());\r\nfunction isObjRef(value) {\r\n switch (typeof value) {\r\n case \"object\":\r\n if (value === null)\r\n break;\r\n // Fall through to return true...\r\n case \"function\":\r\n return true;\r\n }\r\n return false;\r\n}\n\nexport { Trie };\n//# sourceMappingURL=trie.esm.js.map\n","// This currentContext variable will only be used if the makeSlotClass\r\n// function is called, which happens only if this is the first copy of the\r\n// @wry/context package to be imported.\r\nvar currentContext = null;\r\n// This unique internal object is used to denote the absence of a value\r\n// for a given Slot, and is never exposed to outside code.\r\nvar MISSING_VALUE = {};\r\nvar idCounter = 1;\r\n// Although we can't do anything about the cost of duplicated code from\r\n// accidentally bundling multiple copies of the @wry/context package, we can\r\n// avoid creating the Slot class more than once using makeSlotClass.\r\nvar makeSlotClass = function () { return /** @class */ (function () {\r\n function Slot() {\r\n // If you have a Slot object, you can find out its slot.id, but you cannot\r\n // guess the slot.id of a Slot you don't have access to, thanks to the\r\n // randomized suffix.\r\n this.id = [\r\n \"slot\",\r\n idCounter++,\r\n Date.now(),\r\n Math.random().toString(36).slice(2),\r\n ].join(\":\");\r\n }\r\n Slot.prototype.hasValue = function () {\r\n for (var context_1 = currentContext; context_1; context_1 = context_1.parent) {\r\n // We use the Slot object iself as a key to its value, which means the\r\n // value cannot be obtained without a reference to the Slot object.\r\n if (this.id in context_1.slots) {\r\n var value = context_1.slots[this.id];\r\n if (value === MISSING_VALUE)\r\n break;\r\n if (context_1 !== currentContext) {\r\n // Cache the value in currentContext.slots so the next lookup will\r\n // be faster. This caching is safe because the tree of contexts and\r\n // the values of the slots are logically immutable.\r\n currentContext.slots[this.id] = value;\r\n }\r\n return true;\r\n }\r\n }\r\n if (currentContext) {\r\n // If a value was not found for this Slot, it's never going to be found\r\n // no matter how many times we look it up, so we might as well cache\r\n // the absence of the value, too.\r\n currentContext.slots[this.id] = MISSING_VALUE;\r\n }\r\n return false;\r\n };\r\n Slot.prototype.getValue = function () {\r\n if (this.hasValue()) {\r\n return currentContext.slots[this.id];\r\n }\r\n };\r\n Slot.prototype.withValue = function (value, callback, \r\n // Given the prevalence of arrow functions, specifying arguments is likely\r\n // to be much more common than specifying `this`, hence this ordering:\r\n args, thisArg) {\r\n var _a;\r\n var slots = (_a = {\r\n __proto__: null\r\n },\r\n _a[this.id] = value,\r\n _a);\r\n var parent = currentContext;\r\n currentContext = { parent: parent, slots: slots };\r\n try {\r\n // Function.prototype.apply allows the arguments array argument to be\r\n // omitted or undefined, so args! is fine here.\r\n return callback.apply(thisArg, args);\r\n }\r\n finally {\r\n currentContext = parent;\r\n }\r\n };\r\n // Capture the current context and wrap a callback function so that it\r\n // reestablishes the captured context when called.\r\n Slot.bind = function (callback) {\r\n var context = currentContext;\r\n return function () {\r\n var saved = currentContext;\r\n try {\r\n currentContext = context;\r\n return callback.apply(this, arguments);\r\n }\r\n finally {\r\n currentContext = saved;\r\n }\r\n };\r\n };\r\n // Immediately run a callback function without any captured context.\r\n Slot.noContext = function (callback, \r\n // Given the prevalence of arrow functions, specifying arguments is likely\r\n // to be much more common than specifying `this`, hence this ordering:\r\n args, thisArg) {\r\n if (currentContext) {\r\n var saved = currentContext;\r\n try {\r\n currentContext = null;\r\n // Function.prototype.apply allows the arguments array argument to be\r\n // omitted or undefined, so args! is fine here.\r\n return callback.apply(thisArg, args);\r\n }\r\n finally {\r\n currentContext = saved;\r\n }\r\n }\r\n else {\r\n return callback.apply(thisArg, args);\r\n }\r\n };\r\n return Slot;\r\n}()); };\r\n// We store a single global implementation of the Slot class as a permanent\r\n// non-enumerable symbol property of the Array constructor. This obfuscation\r\n// does nothing to prevent access to the Slot class, but at least it ensures\r\n// the implementation (i.e. currentContext) cannot be tampered with, and all\r\n// copies of the @wry/context package (hopefully just one) will share the\r\n// same Slot implementation. Since the first copy of the @wry/context package\r\n// to be imported wins, this technique imposes a very high cost for any\r\n// future breaking changes to the Slot class.\r\nvar globalKey = \"@wry/context:Slot\";\r\nvar host = Array;\r\nvar Slot = host[globalKey] || function () {\r\n var Slot = makeSlotClass();\r\n try {\r\n Object.defineProperty(host, globalKey, {\r\n value: host[globalKey] = Slot,\r\n enumerable: false,\r\n writable: false,\r\n configurable: false,\r\n });\r\n }\r\n finally {\r\n return Slot;\r\n }\r\n}();\n\nvar bind = Slot.bind, noContext = Slot.noContext;\r\nfunction setTimeoutWithContext(callback, delay) {\r\n return setTimeout(bind(callback), delay);\r\n}\r\n// Turn any generator function into an async function (using yield instead\r\n// of await), with context automatically preserved across yields.\r\nfunction asyncFromGen(genFn) {\r\n return function () {\r\n var gen = genFn.apply(this, arguments);\r\n var boundNext = bind(gen.next);\r\n var boundThrow = bind(gen.throw);\r\n return new Promise(function (resolve, reject) {\r\n function invoke(method, argument) {\r\n try {\r\n var result = method.call(gen, argument);\r\n }\r\n catch (error) {\r\n return reject(error);\r\n }\r\n var next = result.done ? resolve : invokeNext;\r\n if (isPromiseLike(result.value)) {\r\n result.value.then(next, result.done ? reject : invokeThrow);\r\n }\r\n else {\r\n next(result.value);\r\n }\r\n }\r\n var invokeNext = function (value) { return invoke(boundNext, value); };\r\n var invokeThrow = function (error) { return invoke(boundThrow, error); };\r\n invokeNext();\r\n });\r\n };\r\n}\r\nfunction isPromiseLike(value) {\r\n return value && typeof value.then === \"function\";\r\n}\r\n// If you use the fibers npm package to implement coroutines in Node.js,\r\n// you should call this function at least once to ensure context management\r\n// remains coherent across any yields.\r\nvar wrappedFibers = [];\r\nfunction wrapYieldingFiberMethods(Fiber) {\r\n // There can be only one implementation of Fiber per process, so this array\r\n // should never grow longer than one element.\r\n if (wrappedFibers.indexOf(Fiber) < 0) {\r\n var wrap = function (obj, method) {\r\n var fn = obj[method];\r\n obj[method] = function () {\r\n return noContext(fn, arguments, this);\r\n };\r\n };\r\n // These methods can yield, according to\r\n // https://github.com/laverdet/node-fibers/blob/ddebed9b8ae3883e57f822e2108e6943e5c8d2a8/fibers.js#L97-L100\r\n wrap(Fiber, \"yield\");\r\n wrap(Fiber.prototype, \"run\");\r\n wrap(Fiber.prototype, \"throwInto\");\r\n wrappedFibers.push(Fiber);\r\n }\r\n return Fiber;\r\n}\n\nexport { Slot, asyncFromGen, bind, noContext, setTimeoutWithContext as setTimeout, wrapYieldingFiberMethods };\n//# sourceMappingURL=context.esm.js.map\n","import { Trie } from '@wry/trie';\nexport { Trie as KeyTrie } from '@wry/trie';\nimport { Slot } from '@wry/context';\nexport { asyncFromGen, bind as bindContext, noContext, setTimeout } from '@wry/context';\n\nfunction defaultDispose() { }\r\nvar Cache = /** @class */ (function () {\r\n function Cache(max, dispose) {\r\n if (max === void 0) { max = Infinity; }\r\n if (dispose === void 0) { dispose = defaultDispose; }\r\n this.max = max;\r\n this.dispose = dispose;\r\n this.map = new Map();\r\n this.newest = null;\r\n this.oldest = null;\r\n }\r\n Cache.prototype.has = function (key) {\r\n return this.map.has(key);\r\n };\r\n Cache.prototype.get = function (key) {\r\n var node = this.getNode(key);\r\n return node && node.value;\r\n };\r\n Cache.prototype.getNode = function (key) {\r\n var node = this.map.get(key);\r\n if (node && node !== this.newest) {\r\n var older = node.older, newer = node.newer;\r\n if (newer) {\r\n newer.older = older;\r\n }\r\n if (older) {\r\n older.newer = newer;\r\n }\r\n node.older = this.newest;\r\n node.older.newer = node;\r\n node.newer = null;\r\n this.newest = node;\r\n if (node === this.oldest) {\r\n this.oldest = newer;\r\n }\r\n }\r\n return node;\r\n };\r\n Cache.prototype.set = function (key, value) {\r\n var node = this.getNode(key);\r\n if (node) {\r\n return node.value = value;\r\n }\r\n node = {\r\n key: key,\r\n value: value,\r\n newer: null,\r\n older: this.newest\r\n };\r\n if (this.newest) {\r\n this.newest.newer = node;\r\n }\r\n this.newest = node;\r\n this.oldest = this.oldest || node;\r\n this.map.set(key, node);\r\n return node.value;\r\n };\r\n Cache.prototype.clean = function () {\r\n while (this.oldest && this.map.size > this.max) {\r\n this.delete(this.oldest.key);\r\n }\r\n };\r\n Cache.prototype.delete = function (key) {\r\n var node = this.map.get(key);\r\n if (node) {\r\n if (node === this.newest) {\r\n this.newest = node.older;\r\n }\r\n if (node === this.oldest) {\r\n this.oldest = node.newer;\r\n }\r\n if (node.newer) {\r\n node.newer.older = node.older;\r\n }\r\n if (node.older) {\r\n node.older.newer = node.newer;\r\n }\r\n this.map.delete(key);\r\n this.dispose(node.value, key);\r\n return true;\r\n }\r\n return false;\r\n };\r\n return Cache;\r\n}());\n\nvar parentEntrySlot = new Slot();\n\nvar _a;\r\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\r\nvar \r\n// This Array.from polyfill is restricted to working with Set for now,\r\n// but we can improve the polyfill and add other input types, as needed. Note\r\n// that this fallback implementation will only be used if the host environment\r\n// does not support a native Array.from function. In most modern JS runtimes,\r\n// the toArray function exported here will be === Array.from.\r\ntoArray = (_a = Array.from, _a === void 0 ? function (collection) {\r\n var array = [];\r\n collection.forEach(function (item) { return array.push(item); });\r\n return array;\r\n} : _a);\r\nfunction maybeUnsubscribe(entryOrDep) {\r\n var unsubscribe = entryOrDep.unsubscribe;\r\n if (typeof unsubscribe === \"function\") {\r\n entryOrDep.unsubscribe = void 0;\r\n unsubscribe();\r\n }\r\n}\n\nvar emptySetPool = [];\r\nvar POOL_TARGET_SIZE = 100;\r\n// Since this package might be used browsers, we should avoid using the\r\n// Node built-in assert module.\r\nfunction assert(condition, optionalMessage) {\r\n if (!condition) {\r\n throw new Error(optionalMessage || \"assertion failure\");\r\n }\r\n}\r\nfunction valueIs(a, b) {\r\n var len = a.length;\r\n return (\r\n // Unknown values are not equal to each other.\r\n len > 0 &&\r\n // Both values must be ordinary (or both exceptional) to be equal.\r\n len === b.length &&\r\n // The underlying value or exception must be the same.\r\n a[len - 1] === b[len - 1]);\r\n}\r\nfunction valueGet(value) {\r\n switch (value.length) {\r\n case 0: throw new Error(\"unknown value\");\r\n case 1: return value[0];\r\n case 2: throw value[1];\r\n }\r\n}\r\nfunction valueCopy(value) {\r\n return value.slice(0);\r\n}\r\nvar Entry = /** @class */ (function () {\r\n function Entry(fn) {\r\n this.fn = fn;\r\n this.parents = new Set();\r\n this.childValues = new Map();\r\n // When this Entry has children that are dirty, this property becomes\r\n // a Set containing other Entry objects, borrowed from emptySetPool.\r\n // When the set becomes empty, it gets recycled back to emptySetPool.\r\n this.dirtyChildren = null;\r\n this.dirty = true;\r\n this.recomputing = false;\r\n this.value = [];\r\n this.deps = null;\r\n ++Entry.count;\r\n }\r\n Entry.prototype.peek = function () {\r\n if (this.value.length === 1 && !mightBeDirty(this)) {\r\n rememberParent(this);\r\n return this.value[0];\r\n }\r\n };\r\n // This is the most important method of the Entry API, because it\r\n // determines whether the cached this.value can be returned immediately,\r\n // or must be recomputed. The overall performance of the caching system\r\n // depends on the truth of the following observations: (1) this.dirty is\r\n // usually false, (2) this.dirtyChildren is usually null/empty, and thus\r\n // (3) valueGet(this.value) is usually returned without recomputation.\r\n Entry.prototype.recompute = function (args) {\r\n assert(!this.recomputing, \"already recomputing\");\r\n rememberParent(this);\r\n return mightBeDirty(this)\r\n ? reallyRecompute(this, args)\r\n : valueGet(this.value);\r\n };\r\n Entry.prototype.setDirty = function () {\r\n if (this.dirty)\r\n return;\r\n this.dirty = true;\r\n this.value.length = 0;\r\n reportDirty(this);\r\n // We can go ahead and unsubscribe here, since any further dirty\r\n // notifications we receive will be redundant, and unsubscribing may\r\n // free up some resources, e.g. file watchers.\r\n maybeUnsubscribe(this);\r\n };\r\n Entry.prototype.dispose = function () {\r\n var _this = this;\r\n this.setDirty();\r\n // Sever any dependency relationships with our own children, so those\r\n // children don't retain this parent Entry in their child.parents sets,\r\n // thereby preventing it from being fully garbage collected.\r\n forgetChildren(this);\r\n // Because this entry has been kicked out of the cache (in index.js),\r\n // we've lost the ability to find out if/when this entry becomes dirty,\r\n // whether that happens through a subscription, because of a direct call\r\n // to entry.setDirty(), or because one of its children becomes dirty.\r\n // Because of this loss of future information, we have to assume the\r\n // worst (that this entry might have become dirty very soon), so we must\r\n // immediately mark this entry's parents as dirty. Normally we could\r\n // just call entry.setDirty() rather than calling parent.setDirty() for\r\n // each parent, but that would leave this entry in parent.childValues\r\n // and parent.dirtyChildren, which would prevent the child from being\r\n // truly forgotten.\r\n eachParent(this, function (parent, child) {\r\n parent.setDirty();\r\n forgetChild(parent, _this);\r\n });\r\n };\r\n Entry.prototype.forget = function () {\r\n // The code that creates Entry objects in index.ts will replace this method\r\n // with one that actually removes the Entry from the cache, which will also\r\n // trigger the entry.dispose method.\r\n this.dispose();\r\n };\r\n Entry.prototype.dependOn = function (dep) {\r\n dep.add(this);\r\n if (!this.deps) {\r\n this.deps = emptySetPool.pop() || new Set();\r\n }\r\n this.deps.add(dep);\r\n };\r\n Entry.prototype.forgetDeps = function () {\r\n var _this = this;\r\n if (this.deps) {\r\n toArray(this.deps).forEach(function (dep) { return dep.delete(_this); });\r\n this.deps.clear();\r\n emptySetPool.push(this.deps);\r\n this.deps = null;\r\n }\r\n };\r\n Entry.count = 0;\r\n return Entry;\r\n}());\r\nfunction rememberParent(child) {\r\n var parent = parentEntrySlot.getValue();\r\n if (parent) {\r\n child.parents.add(parent);\r\n if (!parent.childValues.has(child)) {\r\n parent.childValues.set(child, []);\r\n }\r\n if (mightBeDirty(child)) {\r\n reportDirtyChild(parent, child);\r\n }\r\n else {\r\n reportCleanChild(parent, child);\r\n }\r\n return parent;\r\n }\r\n}\r\nfunction reallyRecompute(entry, args) {\r\n forgetChildren(entry);\r\n // Set entry as the parent entry while calling recomputeNewValue(entry).\r\n parentEntrySlot.withValue(entry, recomputeNewValue, [entry, args]);\r\n if (maybeSubscribe(entry, args)) {\r\n // If we successfully recomputed entry.value and did not fail to\r\n // (re)subscribe, then this Entry is no longer explicitly dirty.\r\n setClean(entry);\r\n }\r\n return valueGet(entry.value);\r\n}\r\nfunction recomputeNewValue(entry, args) {\r\n entry.recomputing = true;\r\n // Set entry.value as unknown.\r\n entry.value.length = 0;\r\n try {\r\n // If entry.fn succeeds, entry.value will become a normal Value.\r\n entry.value[0] = entry.fn.apply(null, args);\r\n }\r\n catch (e) {\r\n // If entry.fn throws, entry.value will become exceptional.\r\n entry.value[1] = e;\r\n }\r\n // Either way, this line is always reached.\r\n entry.recomputing = false;\r\n}\r\nfunction mightBeDirty(entry) {\r\n return entry.dirty || !!(entry.dirtyChildren && entry.dirtyChildren.size);\r\n}\r\nfunction setClean(entry) {\r\n entry.dirty = false;\r\n if (mightBeDirty(entry)) {\r\n // This Entry may still have dirty children, in which case we can't\r\n // let our parents know we're clean just yet.\r\n return;\r\n }\r\n reportClean(entry);\r\n}\r\nfunction reportDirty(child) {\r\n eachParent(child, reportDirtyChild);\r\n}\r\nfunction reportClean(child) {\r\n eachParent(child, reportCleanChild);\r\n}\r\nfunction eachParent(child, callback) {\r\n var parentCount = child.parents.size;\r\n if (parentCount) {\r\n var parents = toArray(child.parents);\r\n for (var i = 0; i < parentCount; ++i) {\r\n callback(parents[i], child);\r\n }\r\n }\r\n}\r\n// Let a parent Entry know that one of its children may be dirty.\r\nfunction reportDirtyChild(parent, child) {\r\n // Must have called rememberParent(child) before calling\r\n // reportDirtyChild(parent, child).\r\n assert(parent.childValues.has(child));\r\n assert(mightBeDirty(child));\r\n var parentWasClean = !mightBeDirty(parent);\r\n if (!parent.dirtyChildren) {\r\n parent.dirtyChildren = emptySetPool.pop() || new Set;\r\n }\r\n else if (parent.dirtyChildren.has(child)) {\r\n // If we already know this child is dirty, then we must have already\r\n // informed our own parents that we are dirty, so we can terminate\r\n // the recursion early.\r\n return;\r\n }\r\n parent.dirtyChildren.add(child);\r\n // If parent was clean before, it just became (possibly) dirty (according to\r\n // mightBeDirty), since we just added child to parent.dirtyChildren.\r\n if (parentWasClean) {\r\n reportDirty(parent);\r\n }\r\n}\r\n// Let a parent Entry know that one of its children is no longer dirty.\r\nfunction reportCleanChild(parent, child) {\r\n // Must have called rememberChild(child) before calling\r\n // reportCleanChild(parent, child).\r\n assert(parent.childValues.has(child));\r\n assert(!mightBeDirty(child));\r\n var childValue = parent.childValues.get(child);\r\n if (childValue.length === 0) {\r\n parent.childValues.set(child, valueCopy(child.value));\r\n }\r\n else if (!valueIs(childValue, child.value)) {\r\n parent.setDirty();\r\n }\r\n removeDirtyChild(parent, child);\r\n if (mightBeDirty(parent)) {\r\n return;\r\n }\r\n reportClean(parent);\r\n}\r\nfunction removeDirtyChild(parent, child) {\r\n var dc = parent.dirtyChildren;\r\n if (dc) {\r\n dc.delete(child);\r\n if (dc.size === 0) {\r\n if (emptySetPool.length < POOL_TARGET_SIZE) {\r\n emptySetPool.push(dc);\r\n }\r\n parent.dirtyChildren = null;\r\n }\r\n }\r\n}\r\n// Removes all children from this entry and returns an array of the\r\n// removed children.\r\nfunction forgetChildren(parent) {\r\n if (parent.childValues.size > 0) {\r\n parent.childValues.forEach(function (_value, child) {\r\n forgetChild(parent, child);\r\n });\r\n }\r\n // Remove this parent Entry from any sets to which it was added by the\r\n // addToSet method.\r\n parent.forgetDeps();\r\n // After we forget all our children, this.dirtyChildren must be empty\r\n // and therefore must have been reset to null.\r\n assert(parent.dirtyChildren === null);\r\n}\r\nfunction forgetChild(parent, child) {\r\n child.parents.delete(parent);\r\n parent.childValues.delete(child);\r\n removeDirtyChild(parent, child);\r\n}\r\nfunction maybeSubscribe(entry, args) {\r\n if (typeof entry.subscribe === \"function\") {\r\n try {\r\n maybeUnsubscribe(entry); // Prevent double subscriptions.\r\n entry.unsubscribe = entry.subscribe.apply(null, args);\r\n }\r\n catch (e) {\r\n // If this Entry has a subscribe function and it threw an exception\r\n // (or an unsubscribe function it previously returned now throws),\r\n // return false to indicate that we were not able to subscribe (or\r\n // unsubscribe), and this Entry should remain dirty.\r\n entry.setDirty();\r\n return false;\r\n }\r\n }\r\n // Returning true indicates either that there was no entry.subscribe\r\n // function or that it succeeded.\r\n return true;\r\n}\n\nvar EntryMethods = {\r\n setDirty: true,\r\n dispose: true,\r\n forget: true,\r\n};\r\nfunction dep(options) {\r\n var depsByKey = new Map();\r\n var subscribe = options && options.subscribe;\r\n function depend(key) {\r\n var parent = parentEntrySlot.getValue();\r\n if (parent) {\r\n var dep_1 = depsByKey.get(key);\r\n if (!dep_1) {\r\n depsByKey.set(key, dep_1 = new Set);\r\n }\r\n parent.dependOn(dep_1);\r\n if (typeof subscribe === \"function\") {\r\n maybeUnsubscribe(dep_1);\r\n dep_1.unsubscribe = subscribe(key);\r\n }\r\n }\r\n }\r\n depend.dirty = function dirty(key, entryMethodName) {\r\n var dep = depsByKey.get(key);\r\n if (dep) {\r\n var m_1 = (entryMethodName &&\r\n hasOwnProperty.call(EntryMethods, entryMethodName)) ? entryMethodName : \"setDirty\";\r\n // We have to use toArray(dep).forEach instead of dep.forEach, because\r\n // modifying a Set while iterating over it can cause elements in the Set\r\n // to be removed from the Set before they've been iterated over.\r\n toArray(dep).forEach(function (entry) { return entry[m_1](); });\r\n depsByKey.delete(key);\r\n maybeUnsubscribe(dep);\r\n }\r\n };\r\n return depend;\r\n}\n\nfunction makeDefaultMakeCacheKeyFunction() {\r\n var keyTrie = new Trie(typeof WeakMap === \"function\");\r\n return function () {\r\n return keyTrie.lookupArray(arguments);\r\n };\r\n}\r\n// The defaultMakeCacheKey function is remarkably powerful, because it gives\r\n// a unique object for any shallow-identical list of arguments. If you need\r\n// to implement a custom makeCacheKey function, you may find it helpful to\r\n// delegate the final work to defaultMakeCacheKey, which is why we export it\r\n// here. However, you may want to avoid defaultMakeCacheKey if your runtime\r\n// does not support WeakMap, or you have the ability to return a string key.\r\n// In those cases, just write your own custom makeCacheKey functions.\r\nvar defaultMakeCacheKey = makeDefaultMakeCacheKeyFunction();\r\nvar caches = new Set();\r\nfunction wrap(originalFunction, options) {\r\n if (options === void 0) { options = Object.create(null); }\r\n var cache = new Cache(options.max || Math.pow(2, 16), function (entry) { return entry.dispose(); });\r\n var keyArgs = options.keyArgs;\r\n var makeCacheKey = options.makeCacheKey ||\r\n makeDefaultMakeCacheKeyFunction();\r\n var optimistic = function () {\r\n var key = makeCacheKey.apply(null, keyArgs ? keyArgs.apply(null, arguments) : arguments);\r\n if (key === void 0) {\r\n return originalFunction.apply(null, arguments);\r\n }\r\n var entry = cache.get(key);\r\n if (!entry) {\r\n cache.set(key, entry = new Entry(originalFunction));\r\n entry.subscribe = options.subscribe;\r\n // Give the Entry the ability to trigger cache.delete(key), even though\r\n // the Entry itself does not know about key or cache.\r\n entry.forget = function () { return cache.delete(key); };\r\n }\r\n var value = entry.recompute(Array.prototype.slice.call(arguments));\r\n // Move this entry to the front of the least-recently used queue,\r\n // since we just finished computing its value.\r\n cache.set(key, entry);\r\n caches.add(cache);\r\n // Clean up any excess entries in the cache, but only if there is no\r\n // active parent entry, meaning we're not in the middle of a larger\r\n // computation that might be flummoxed by the cleaning.\r\n if (!parentEntrySlot.hasValue()) {\r\n caches.forEach(function (cache) { return cache.clean(); });\r\n caches.clear();\r\n }\r\n return value;\r\n };\r\n Object.defineProperty(optimistic, \"size\", {\r\n get: function () {\r\n return cache[\"map\"].size;\r\n },\r\n configurable: false,\r\n enumerable: false,\r\n });\r\n function dirtyKey(key) {\r\n var entry = cache.get(key);\r\n if (entry) {\r\n entry.setDirty();\r\n }\r\n }\r\n optimistic.dirtyKey = dirtyKey;\r\n optimistic.dirty = function dirty() {\r\n dirtyKey(makeCacheKey.apply(null, arguments));\r\n };\r\n function peekKey(key) {\r\n var entry = cache.get(key);\r\n if (entry) {\r\n return entry.peek();\r\n }\r\n }\r\n optimistic.peekKey = peekKey;\r\n optimistic.peek = function peek() {\r\n return peekKey(makeCacheKey.apply(null, arguments));\r\n };\r\n function forgetKey(key) {\r\n return cache.delete(key);\r\n }\r\n optimistic.forgetKey = forgetKey;\r\n optimistic.forget = function forget() {\r\n return forgetKey(makeCacheKey.apply(null, arguments));\r\n };\r\n optimistic.makeCacheKey = makeCacheKey;\r\n optimistic.getKey = keyArgs ? function getKey() {\r\n return makeCacheKey.apply(null, keyArgs.apply(null, arguments));\r\n } : makeCacheKey;\r\n return Object.freeze(optimistic);\r\n}\n\nexport { defaultMakeCacheKey, dep, wrap };\n//# sourceMappingURL=bundle.esm.js.map\n","import { dep } from \"optimism\";\nimport { Slot } from \"@wry/context\";\nexport var cacheSlot = new Slot();\nvar cacheInfoMap = new WeakMap();\nfunction getCacheInfo(cache) {\n var info = cacheInfoMap.get(cache);\n if (!info) {\n cacheInfoMap.set(cache, info = {\n vars: new Set,\n dep: dep(),\n });\n }\n return info;\n}\nexport function forgetCache(cache) {\n getCacheInfo(cache).vars.forEach(function (rv) { return rv.forgetCache(cache); });\n}\nexport function recallCache(cache) {\n getCacheInfo(cache).vars.forEach(function (rv) { return rv.attachCache(cache); });\n}\nexport function makeVar(value) {\n var caches = new Set();\n var listeners = new Set();\n var rv = function (newValue) {\n if (arguments.length > 0) {\n if (value !== newValue) {\n value = newValue;\n caches.forEach(function (cache) {\n getCacheInfo(cache).dep.dirty(rv);\n broadcast(cache);\n });\n var oldListeners = Array.from(listeners);\n listeners.clear();\n oldListeners.forEach(function (listener) { return listener(value); });\n }\n }\n else {\n var cache = cacheSlot.getValue();\n if (cache) {\n attach(cache);\n getCacheInfo(cache).dep(rv);\n }\n }\n return value;\n };\n rv.onNextChange = function (listener) {\n listeners.add(listener);\n return function () {\n listeners.delete(listener);\n };\n };\n var attach = rv.attachCache = function (cache) {\n caches.add(cache);\n getCacheInfo(cache).vars.add(rv);\n return rv;\n };\n rv.forgetCache = function (cache) { return caches.delete(cache); };\n return rv;\n}\nfunction broadcast(cache) {\n if (cache.broadcastWatches) {\n cache.broadcastWatches();\n }\n}\n//# sourceMappingURL=reactiveVars.js.map","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n// === Symbol Support ===\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\n\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\n\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n if (value == null) return undefined;\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n\n if (ctor === null) {\n ctor = undefined;\n }\n }\n\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n\n if (!queue) {\n return;\n }\n\n subscription._queue = undefined;\n subscription._state = 'ready';\n\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({\n type: type,\n value: value\n });\n\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{\n type: type,\n value: value\n }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription = /*#__PURE__*/function () {\n function Subscription(observer, subscriber) {\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n var _proto = Subscription.prototype;\n\n _proto.unsubscribe = function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n };\n\n _createClass(Subscription, [{\n key: \"closed\",\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver = /*#__PURE__*/function () {\n function SubscriptionObserver(subscription) {\n this._subscription = subscription;\n }\n\n var _proto2 = SubscriptionObserver.prototype;\n\n _proto2.next = function next(value) {\n onNotify(this._subscription, 'next', value);\n };\n\n _proto2.error = function error(value) {\n onNotify(this._subscription, 'error', value);\n };\n\n _proto2.complete = function complete() {\n onNotify(this._subscription, 'complete');\n };\n\n _createClass(SubscriptionObserver, [{\n key: \"closed\",\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable = /*#__PURE__*/function () {\n function Observable(subscriber) {\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n this._subscriber = subscriber;\n }\n\n var _proto3 = Observable.prototype;\n\n _proto3.subscribe = function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n\n return new Subscription(observer, this._subscriber);\n };\n\n _proto3.forEach = function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n };\n\n _proto3.map = function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n };\n\n _proto3.filter = function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n };\n\n _proto3.reduce = function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n observer.next(acc);\n observer.complete();\n }\n });\n });\n };\n\n _proto3.concat = function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscription;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n };\n\n _proto3.flatMap = function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n };\n\n _proto3[SymbolObservable] = function () {\n return this;\n };\n\n Observable.from = function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n if (x == null) throw new TypeError(x + ' is not an object');\n var method = getMethod(x, SymbolObservable);\n\n if (method) {\n var observable = method.call(x);\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n if (isObservable(observable) && observable.constructor === C) return observable;\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var _iterator = _createForOfIteratorHelperLoose(method.call(x)), _step; !(_step = _iterator()).done;) {\n var item = _step.value;\n observer.next(item);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n };\n\n Observable.of = function of() {\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n };\n\n _createClass(Observable, null, [{\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}\n\nexport { Observable };\n","import { __assign, __spreadArray } from \"tslib\";\nimport { invariant, InvariantError } from \"../globals/index.js\";\nexport function getFragmentQueryDocument(document, fragmentName) {\n var actualFragmentName = fragmentName;\n var fragments = [];\n document.definitions.forEach(function (definition) {\n if (definition.kind === 'OperationDefinition') {\n throw __DEV__ ? new InvariantError(\"Found a \".concat(definition.operation, \" operation\").concat(definition.name ? \" named '\".concat(definition.name.value, \"'\") : '', \". \") +\n 'No operations are allowed when using a fragment as a query. Only fragments are allowed.') : new InvariantError(41);\n }\n if (definition.kind === 'FragmentDefinition') {\n fragments.push(definition);\n }\n });\n if (typeof actualFragmentName === 'undefined') {\n __DEV__ ? invariant(fragments.length === 1, \"Found \".concat(fragments.length, \" fragments. `fragmentName` must be provided when there is not exactly 1 fragment.\")) : invariant(fragments.length === 1, 42);\n actualFragmentName = fragments[0].name.value;\n }\n var query = __assign(__assign({}, document), { definitions: __spreadArray([\n {\n kind: 'OperationDefinition',\n operation: 'query',\n selectionSet: {\n kind: 'SelectionSet',\n selections: [\n {\n kind: 'FragmentSpread',\n name: {\n kind: 'Name',\n value: actualFragmentName,\n },\n },\n ],\n },\n }\n ], document.definitions, true) });\n return query;\n}\nexport function createFragmentMap(fragments) {\n if (fragments === void 0) { fragments = []; }\n var symTable = {};\n fragments.forEach(function (fragment) {\n symTable[fragment.name.value] = fragment;\n });\n return symTable;\n}\nexport function getFragmentFromSelection(selection, fragmentMap) {\n switch (selection.kind) {\n case 'InlineFragment':\n return selection;\n case 'FragmentSpread': {\n var fragment = fragmentMap && fragmentMap[selection.name.value];\n __DEV__ ? invariant(fragment, \"No fragment named \".concat(selection.name.value, \".\")) : invariant(fragment, 43);\n return fragment;\n }\n default:\n return null;\n }\n}\n//# sourceMappingURL=fragments.js.map","import { InvariantError } from \"../globals/index.js\";\nimport { isNonNullObject } from \"../common/objects.js\";\nimport { getFragmentFromSelection } from \"./fragments.js\";\nexport function makeReference(id) {\n return { __ref: String(id) };\n}\nexport function isReference(obj) {\n return Boolean(obj && typeof obj === 'object' && typeof obj.__ref === 'string');\n}\nexport function isDocumentNode(value) {\n return (isNonNullObject(value) &&\n value.kind === \"Document\" &&\n Array.isArray(value.definitions));\n}\nfunction isStringValue(value) {\n return value.kind === 'StringValue';\n}\nfunction isBooleanValue(value) {\n return value.kind === 'BooleanValue';\n}\nfunction isIntValue(value) {\n return value.kind === 'IntValue';\n}\nfunction isFloatValue(value) {\n return value.kind === 'FloatValue';\n}\nfunction isVariable(value) {\n return value.kind === 'Variable';\n}\nfunction isObjectValue(value) {\n return value.kind === 'ObjectValue';\n}\nfunction isListValue(value) {\n return value.kind === 'ListValue';\n}\nfunction isEnumValue(value) {\n return value.kind === 'EnumValue';\n}\nfunction isNullValue(value) {\n return value.kind === 'NullValue';\n}\nexport function valueToObjectRepresentation(argObj, name, value, variables) {\n if (isIntValue(value) || isFloatValue(value)) {\n argObj[name.value] = Number(value.value);\n }\n else if (isBooleanValue(value) || isStringValue(value)) {\n argObj[name.value] = value.value;\n }\n else if (isObjectValue(value)) {\n var nestedArgObj_1 = {};\n value.fields.map(function (obj) {\n return valueToObjectRepresentation(nestedArgObj_1, obj.name, obj.value, variables);\n });\n argObj[name.value] = nestedArgObj_1;\n }\n else if (isVariable(value)) {\n var variableValue = (variables || {})[value.name.value];\n argObj[name.value] = variableValue;\n }\n else if (isListValue(value)) {\n argObj[name.value] = value.values.map(function (listValue) {\n var nestedArgArrayObj = {};\n valueToObjectRepresentation(nestedArgArrayObj, name, listValue, variables);\n return nestedArgArrayObj[name.value];\n });\n }\n else if (isEnumValue(value)) {\n argObj[name.value] = value.value;\n }\n else if (isNullValue(value)) {\n argObj[name.value] = null;\n }\n else {\n throw __DEV__ ? new InvariantError(\"The inline argument \\\"\".concat(name.value, \"\\\" of kind \\\"\").concat(value.kind, \"\\\"\") +\n 'is not supported. Use variables instead of inline arguments to ' +\n 'overcome this limitation.') : new InvariantError(52);\n }\n}\nexport function storeKeyNameFromField(field, variables) {\n var directivesObj = null;\n if (field.directives) {\n directivesObj = {};\n field.directives.forEach(function (directive) {\n directivesObj[directive.name.value] = {};\n if (directive.arguments) {\n directive.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(directivesObj[directive.name.value], name, value, variables);\n });\n }\n });\n }\n var argObj = null;\n if (field.arguments && field.arguments.length) {\n argObj = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(argObj, name, value, variables);\n });\n }\n return getStoreKeyName(field.name.value, argObj, directivesObj);\n}\nvar KNOWN_DIRECTIVES = [\n 'connection',\n 'include',\n 'skip',\n 'client',\n 'rest',\n 'export',\n];\nexport var getStoreKeyName = Object.assign(function (fieldName, args, directives) {\n if (args &&\n directives &&\n directives['connection'] &&\n directives['connection']['key']) {\n if (directives['connection']['filter'] &&\n directives['connection']['filter'].length > 0) {\n var filterKeys = directives['connection']['filter']\n ? directives['connection']['filter']\n : [];\n filterKeys.sort();\n var filteredArgs_1 = {};\n filterKeys.forEach(function (key) {\n filteredArgs_1[key] = args[key];\n });\n return \"\".concat(directives['connection']['key'], \"(\").concat(stringify(filteredArgs_1), \")\");\n }\n else {\n return directives['connection']['key'];\n }\n }\n var completeFieldName = fieldName;\n if (args) {\n var stringifiedArgs = stringify(args);\n completeFieldName += \"(\".concat(stringifiedArgs, \")\");\n }\n if (directives) {\n Object.keys(directives).forEach(function (key) {\n if (KNOWN_DIRECTIVES.indexOf(key) !== -1)\n return;\n if (directives[key] && Object.keys(directives[key]).length) {\n completeFieldName += \"@\".concat(key, \"(\").concat(stringify(directives[key]), \")\");\n }\n else {\n completeFieldName += \"@\".concat(key);\n }\n });\n }\n return completeFieldName;\n}, {\n setStringify: function (s) {\n var previous = stringify;\n stringify = s;\n return previous;\n },\n});\nvar stringify = function defaultStringify(value) {\n return JSON.stringify(value, stringifyReplacer);\n};\nfunction stringifyReplacer(_key, value) {\n if (isNonNullObject(value) && !Array.isArray(value)) {\n value = Object.keys(value).sort().reduce(function (copy, key) {\n copy[key] = value[key];\n return copy;\n }, {});\n }\n return value;\n}\nexport function argumentsObjectFromField(field, variables) {\n if (field.arguments && field.arguments.length) {\n var argObj_1 = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(argObj_1, name, value, variables);\n });\n return argObj_1;\n }\n return null;\n}\nexport function resultKeyNameFromField(field) {\n return field.alias ? field.alias.value : field.name.value;\n}\nexport function getTypenameFromResult(result, selectionSet, fragmentMap) {\n if (typeof result.__typename === 'string') {\n return result.__typename;\n }\n for (var _i = 0, _a = selectionSet.selections; _i < _a.length; _i++) {\n var selection = _a[_i];\n if (isField(selection)) {\n if (selection.name.value === '__typename') {\n return result[resultKeyNameFromField(selection)];\n }\n }\n else {\n var typename = getTypenameFromResult(result, getFragmentFromSelection(selection, fragmentMap).selectionSet, fragmentMap);\n if (typeof typename === 'string') {\n return typename;\n }\n }\n }\n}\nexport function isField(selection) {\n return selection.kind === 'Field';\n}\nexport function isInlineFragment(selection) {\n return selection.kind === 'InlineFragment';\n}\n//# sourceMappingURL=storeUtils.js.map","import { invariant, InvariantError } from \"../globals/index.js\";\nimport { valueToObjectRepresentation } from \"./storeUtils.js\";\nexport function checkDocument(doc) {\n __DEV__ ? invariant(doc && doc.kind === 'Document', \"Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \\\"gql\\\" tag? http://docs.apollostack.com/apollo-client/core.html#gql\") : invariant(doc && doc.kind === 'Document', 44);\n var operations = doc.definitions\n .filter(function (d) { return d.kind !== 'FragmentDefinition'; })\n .map(function (definition) {\n if (definition.kind !== 'OperationDefinition') {\n throw __DEV__ ? new InvariantError(\"Schema type definitions not allowed in queries. Found: \\\"\".concat(definition.kind, \"\\\"\")) : new InvariantError(45);\n }\n return definition;\n });\n __DEV__ ? invariant(operations.length <= 1, \"Ambiguous GraphQL document: contains \".concat(operations.length, \" operations\")) : invariant(operations.length <= 1, 46);\n return doc;\n}\nexport function getOperationDefinition(doc) {\n checkDocument(doc);\n return doc.definitions.filter(function (definition) { return definition.kind === 'OperationDefinition'; })[0];\n}\nexport function getOperationName(doc) {\n return (doc.definitions\n .filter(function (definition) {\n return definition.kind === 'OperationDefinition' && definition.name;\n })\n .map(function (x) { return x.name.value; })[0] || null);\n}\nexport function getFragmentDefinitions(doc) {\n return doc.definitions.filter(function (definition) { return definition.kind === 'FragmentDefinition'; });\n}\nexport function getQueryDefinition(doc) {\n var queryDef = getOperationDefinition(doc);\n __DEV__ ? invariant(queryDef && queryDef.operation === 'query', 'Must contain a query definition.') : invariant(queryDef && queryDef.operation === 'query', 47);\n return queryDef;\n}\nexport function getFragmentDefinition(doc) {\n __DEV__ ? invariant(doc.kind === 'Document', \"Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \\\"gql\\\" tag? http://docs.apollostack.com/apollo-client/core.html#gql\") : invariant(doc.kind === 'Document', 48);\n __DEV__ ? invariant(doc.definitions.length <= 1, 'Fragment must have exactly one definition.') : invariant(doc.definitions.length <= 1, 49);\n var fragmentDef = doc.definitions[0];\n __DEV__ ? invariant(fragmentDef.kind === 'FragmentDefinition', 'Must be a fragment definition.') : invariant(fragmentDef.kind === 'FragmentDefinition', 50);\n return fragmentDef;\n}\nexport function getMainDefinition(queryDoc) {\n checkDocument(queryDoc);\n var fragmentDefinition;\n for (var _i = 0, _a = queryDoc.definitions; _i < _a.length; _i++) {\n var definition = _a[_i];\n if (definition.kind === 'OperationDefinition') {\n var operation = definition.operation;\n if (operation === 'query' ||\n operation === 'mutation' ||\n operation === 'subscription') {\n return definition;\n }\n }\n if (definition.kind === 'FragmentDefinition' && !fragmentDefinition) {\n fragmentDefinition = definition;\n }\n }\n if (fragmentDefinition) {\n return fragmentDefinition;\n }\n throw __DEV__ ? new InvariantError('Expected a parsed GraphQL query with a query, mutation, subscription, or a fragment.') : new InvariantError(51);\n}\nexport function getDefaultValues(definition) {\n var defaultValues = Object.create(null);\n var defs = definition && definition.variableDefinitions;\n if (defs && defs.length) {\n defs.forEach(function (def) {\n if (def.defaultValue) {\n valueToObjectRepresentation(defaultValues, def.variable.name, def.defaultValue);\n }\n });\n }\n return defaultValues;\n}\n//# sourceMappingURL=getFromAST.js.map","import { __extends } from \"tslib\";\nimport { InvariantError, invariant } from \"../../utilities/globals/index.js\";\nimport { Observable } from \"../../utilities/index.js\";\nimport { validateOperation, createOperation, transformOperation, } from \"../utils/index.js\";\nfunction passthrough(op, forward) {\n return (forward ? forward(op) : Observable.of());\n}\nfunction toLink(handler) {\n return typeof handler === 'function' ? new ApolloLink(handler) : handler;\n}\nfunction isTerminating(link) {\n return link.request.length <= 1;\n}\nvar LinkError = (function (_super) {\n __extends(LinkError, _super);\n function LinkError(message, link) {\n var _this = _super.call(this, message) || this;\n _this.link = link;\n return _this;\n }\n return LinkError;\n}(Error));\nvar ApolloLink = (function () {\n function ApolloLink(request) {\n if (request)\n this.request = request;\n }\n ApolloLink.empty = function () {\n return new ApolloLink(function () { return Observable.of(); });\n };\n ApolloLink.from = function (links) {\n if (links.length === 0)\n return ApolloLink.empty();\n return links.map(toLink).reduce(function (x, y) { return x.concat(y); });\n };\n ApolloLink.split = function (test, left, right) {\n var leftLink = toLink(left);\n var rightLink = toLink(right || new ApolloLink(passthrough));\n if (isTerminating(leftLink) && isTerminating(rightLink)) {\n return new ApolloLink(function (operation) {\n return test(operation)\n ? leftLink.request(operation) || Observable.of()\n : rightLink.request(operation) || Observable.of();\n });\n }\n else {\n return new ApolloLink(function (operation, forward) {\n return test(operation)\n ? leftLink.request(operation, forward) || Observable.of()\n : rightLink.request(operation, forward) || Observable.of();\n });\n }\n };\n ApolloLink.execute = function (link, operation) {\n return (link.request(createOperation(operation.context, transformOperation(validateOperation(operation)))) || Observable.of());\n };\n ApolloLink.concat = function (first, second) {\n var firstLink = toLink(first);\n if (isTerminating(firstLink)) {\n __DEV__ && invariant.warn(new LinkError(\"You are calling concat on a terminating link, which will have no effect\", firstLink));\n return firstLink;\n }\n var nextLink = toLink(second);\n if (isTerminating(nextLink)) {\n return new ApolloLink(function (operation) {\n return firstLink.request(operation, function (op) { return nextLink.request(op) || Observable.of(); }) || Observable.of();\n });\n }\n else {\n return new ApolloLink(function (operation, forward) {\n return (firstLink.request(operation, function (op) {\n return nextLink.request(op, forward) || Observable.of();\n }) || Observable.of());\n });\n }\n };\n ApolloLink.prototype.split = function (test, left, right) {\n return this.concat(ApolloLink.split(test, left, right || new ApolloLink(passthrough)));\n };\n ApolloLink.prototype.concat = function (next) {\n return ApolloLink.concat(this, next);\n };\n ApolloLink.prototype.request = function (operation, forward) {\n throw __DEV__ ? new InvariantError('request is not implemented') : new InvariantError(19);\n };\n ApolloLink.prototype.onError = function (error, observer) {\n if (observer && observer.error) {\n observer.error(error);\n return false;\n }\n throw error;\n };\n ApolloLink.prototype.setOnError = function (fn) {\n this.onError = fn;\n return this;\n };\n return ApolloLink;\n}());\nexport { ApolloLink };\n//# sourceMappingURL=ApolloLink.js.map","import { __assign } from \"tslib\";\nexport function createOperation(starting, operation) {\n var context = __assign({}, starting);\n var setContext = function (next) {\n if (typeof next === 'function') {\n context = __assign(__assign({}, context), next(context));\n }\n else {\n context = __assign(__assign({}, context), next);\n }\n };\n var getContext = function () { return (__assign({}, context)); };\n Object.defineProperty(operation, 'setContext', {\n enumerable: false,\n value: setContext,\n });\n Object.defineProperty(operation, 'getContext', {\n enumerable: false,\n value: getContext,\n });\n return operation;\n}\n//# sourceMappingURL=createOperation.js.map","import { getOperationName } from \"../../utilities/index.js\";\nexport function transformOperation(operation) {\n var transformedOperation = {\n variables: operation.variables || {},\n extensions: operation.extensions || {},\n operationName: operation.operationName,\n query: operation.query,\n };\n if (!transformedOperation.operationName) {\n transformedOperation.operationName =\n typeof transformedOperation.query !== 'string'\n ? getOperationName(transformedOperation.query) || undefined\n : '';\n }\n return transformedOperation;\n}\n//# sourceMappingURL=transformOperation.js.map","import { InvariantError } from \"../../utilities/globals/index.js\";\nexport function validateOperation(operation) {\n var OPERATION_FIELDS = [\n 'query',\n 'operationName',\n 'variables',\n 'extensions',\n 'context',\n ];\n for (var _i = 0, _a = Object.keys(operation); _i < _a.length; _i++) {\n var key = _a[_i];\n if (OPERATION_FIELDS.indexOf(key) < 0) {\n throw __DEV__ ? new InvariantError(\"illegal argument: \".concat(key)) : new InvariantError(24);\n }\n }\n return operation;\n}\n//# sourceMappingURL=validateOperation.js.map","import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { isNode, QueryDocumentKeys } from './ast.mjs';\nimport { Kind } from './kinds.mjs';\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\nexport const BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n * ```\n */\n\nexport function visit(root, visitor, visitorKeys = QueryDocumentKeys) {\n const enterLeaveMap = new Map();\n\n for (const kind of Object.values(Kind)) {\n enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n }\n /* eslint-disable no-undef-init */\n\n let stack = undefined;\n let inArray = Array.isArray(root);\n let keys = [root];\n let index = -1;\n let edits = [];\n let node = root;\n let key = undefined;\n let parent = undefined;\n const path = [];\n const ancestors = [];\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n const isLeaving = index === keys.length;\n const isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n let editOffset = 0;\n\n for (const [editKey, editValue] of edits) {\n const arrayKey = editKey - editOffset;\n\n if (editValue === null) {\n node.splice(arrayKey, 1);\n editOffset++;\n } else {\n node[arrayKey] = editValue;\n }\n }\n } else {\n node = Object.defineProperties(\n {},\n Object.getOwnPropertyDescriptors(node),\n );\n\n for (const [editKey, editValue] of edits) {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else if (parent) {\n key = inArray ? index : keys[index];\n node = parent[key];\n\n if (node === null || node === undefined) {\n continue;\n }\n\n path.push(key);\n }\n\n let result;\n\n if (!Array.isArray(node)) {\n var _enterLeaveMap$get, _enterLeaveMap$get2;\n\n isNode(node) || devAssert(false, `Invalid AST Node: ${inspect(node)}.`);\n const visitFn = isLeaving\n ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get === void 0\n ? void 0\n : _enterLeaveMap$get.leave\n : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null ||\n _enterLeaveMap$get2 === void 0\n ? void 0\n : _enterLeaveMap$get2.enter;\n result =\n visitFn === null || visitFn === void 0\n ? void 0\n : visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _node$kind;\n\n stack = {\n inArray,\n index,\n keys,\n edits,\n prev: stack,\n };\n inArray = Array.isArray(node);\n keys = inArray\n ? node\n : (_node$kind = visitorKeys[node.kind]) !== null &&\n _node$kind !== void 0\n ? _node$kind\n : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n // New root\n return edits[edits.length - 1][1];\n }\n\n return root;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nexport function visitInParallel(visitors) {\n const skipping = new Array(visitors.length).fill(null);\n const mergedVisitor = Object.create(null);\n\n for (const kind of Object.values(Kind)) {\n let hasVisitor = false;\n const enterList = new Array(visitors.length).fill(undefined);\n const leaveList = new Array(visitors.length).fill(undefined);\n\n for (let i = 0; i < visitors.length; ++i) {\n const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n hasVisitor || (hasVisitor = enter != null || leave != null);\n enterList[i] = enter;\n leaveList[i] = leave;\n }\n\n if (!hasVisitor) {\n continue;\n }\n\n const mergedEnterLeave = {\n enter(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _enterList$i;\n\n const result =\n (_enterList$i = enterList[i]) === null || _enterList$i === void 0\n ? void 0\n : _enterList$i.apply(visitors[i], args);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n },\n\n leave(...args) {\n const node = args[0];\n\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n var _leaveList$i;\n\n const result =\n (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0\n ? void 0\n : _leaveList$i.apply(visitors[i], args);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n },\n };\n mergedVisitor[kind] = mergedEnterLeave;\n }\n\n return mergedVisitor;\n}\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\n\nexport function getEnterLeaveForKind(visitor, kind) {\n const kindVisitor = visitor[kind];\n\n if (typeof kindVisitor === 'object') {\n // { Kind: { enter() {}, leave() {} } }\n return kindVisitor;\n } else if (typeof kindVisitor === 'function') {\n // { Kind() {} }\n return {\n enter: kindVisitor,\n leave: undefined,\n };\n } // { enter() {}, leave() {} }\n\n return {\n enter: visitor.enter,\n leave: visitor.leave,\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n *\n * @deprecated Please use `getEnterLeaveForKind` instead. Will be removed in v17\n */\n\n/* c8 ignore next 8 */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n const { enter, leave } = getEnterLeaveForKind(visitor, kind);\n return isLeaving ? leave : enter;\n}\n","import { InvariantError } from \"../../utilities/globals/index.js\";\nexport var serializeFetchParameter = function (p, label) {\n var serialized;\n try {\n serialized = JSON.stringify(p);\n }\n catch (e) {\n var parseError = __DEV__ ? new InvariantError(\"Network request failed. \".concat(label, \" is not serializable: \").concat(e.message)) : new InvariantError(21);\n parseError.parseError = e;\n throw parseError;\n }\n return serialized;\n};\n//# sourceMappingURL=serializeFetchParameter.js.map","export var throwServerError = function (response, result, message) {\n var error = new Error(message);\n error.name = 'ServerError';\n error.response = response;\n error.statusCode = response.status;\n error.result = result;\n throw error;\n};\n//# sourceMappingURL=throwServerError.js.map","import { throwServerError } from \"../utils/index.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function parseAndCheckHttpResponse(operations) {\n return function (response) { return response\n .text()\n .then(function (bodyText) {\n try {\n return JSON.parse(bodyText);\n }\n catch (err) {\n var parseError = err;\n parseError.name = 'ServerParseError';\n parseError.response = response;\n parseError.statusCode = response.status;\n parseError.bodyText = bodyText;\n throw parseError;\n }\n })\n .then(function (result) {\n if (response.status >= 300) {\n throwServerError(response, result, \"Response not successful: Received status code \".concat(response.status));\n }\n if (!Array.isArray(result) &&\n !hasOwnProperty.call(result, 'data') &&\n !hasOwnProperty.call(result, 'errors')) {\n throwServerError(response, result, \"Server response was missing for query '\".concat(Array.isArray(operations)\n ? operations.map(function (op) { return op.operationName; })\n : operations.operationName, \"'.\"));\n }\n return result;\n }); };\n}\n//# sourceMappingURL=parseAndCheckHttpResponse.js.map","import { InvariantError } from \"../../utilities/globals/index.js\";\nexport var checkFetcher = function (fetcher) {\n if (!fetcher && typeof fetch === 'undefined') {\n throw __DEV__ ? new InvariantError(\"\\n\\\"fetch\\\" has not been found globally and no fetcher has been configured. To fix this, install a fetch package (like https://www.npmjs.com/package/cross-fetch), instantiate the fetcher, and pass it into your HttpLink constructor. For example:\\n\\nimport fetch from 'cross-fetch';\\nimport { ApolloClient, HttpLink } from '@apollo/client';\\nconst client = new ApolloClient({\\n link: new HttpLink({ uri: '/graphql', fetch })\\n});\\n \") : new InvariantError(20);\n }\n};\n//# sourceMappingURL=checkFetcher.js.map","/**\n * Prints a string as a GraphQL StringValue literal. Replaces control characters\n * and excluded characters (\" U+0022 and \\\\ U+005C) with escape sequences.\n */\nexport function printString(str) {\n return `\"${str.replace(escapedRegExp, escapedReplacer)}\"`;\n} // eslint-disable-next-line no-control-regex\n\nconst escapedRegExp = /[\\x00-\\x1f\\x22\\x5c\\x7f-\\x9f]/g;\n\nfunction escapedReplacer(str) {\n return escapeSequences[str.charCodeAt(0)];\n} // prettier-ignore\n\nconst escapeSequences = [\n '\\\\u0000',\n '\\\\u0001',\n '\\\\u0002',\n '\\\\u0003',\n '\\\\u0004',\n '\\\\u0005',\n '\\\\u0006',\n '\\\\u0007',\n '\\\\b',\n '\\\\t',\n '\\\\n',\n '\\\\u000B',\n '\\\\f',\n '\\\\r',\n '\\\\u000E',\n '\\\\u000F',\n '\\\\u0010',\n '\\\\u0011',\n '\\\\u0012',\n '\\\\u0013',\n '\\\\u0014',\n '\\\\u0015',\n '\\\\u0016',\n '\\\\u0017',\n '\\\\u0018',\n '\\\\u0019',\n '\\\\u001A',\n '\\\\u001B',\n '\\\\u001C',\n '\\\\u001D',\n '\\\\u001E',\n '\\\\u001F',\n '',\n '',\n '\\\\\"',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 2F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 3F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 4F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\\\\\',\n '',\n '',\n '', // 5F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '', // 6F\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '\\\\u007F',\n '\\\\u0080',\n '\\\\u0081',\n '\\\\u0082',\n '\\\\u0083',\n '\\\\u0084',\n '\\\\u0085',\n '\\\\u0086',\n '\\\\u0087',\n '\\\\u0088',\n '\\\\u0089',\n '\\\\u008A',\n '\\\\u008B',\n '\\\\u008C',\n '\\\\u008D',\n '\\\\u008E',\n '\\\\u008F',\n '\\\\u0090',\n '\\\\u0091',\n '\\\\u0092',\n '\\\\u0093',\n '\\\\u0094',\n '\\\\u0095',\n '\\\\u0096',\n '\\\\u0097',\n '\\\\u0098',\n '\\\\u0099',\n '\\\\u009A',\n '\\\\u009B',\n '\\\\u009C',\n '\\\\u009D',\n '\\\\u009E',\n '\\\\u009F',\n];\n","import { printBlockString } from './blockString.mjs';\nimport { printString } from './printString.mjs';\nimport { visit } from './visitor.mjs';\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n return visit(ast, printDocASTReducer);\n}\nconst MAX_LINE_LENGTH = 80;\nconst printDocASTReducer = {\n Name: {\n leave: (node) => node.value,\n },\n Variable: {\n leave: (node) => '$' + node.name,\n },\n // Document\n Document: {\n leave: (node) => join(node.definitions, '\\n\\n'),\n },\n OperationDefinition: {\n leave(node) {\n const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n const prefix = join(\n [\n node.operation,\n join([node.name, varDefs]),\n join(node.directives, ' '),\n ],\n ' ',\n ); // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return (prefix === 'query' ? '' : prefix + ' ') + node.selectionSet;\n },\n },\n VariableDefinition: {\n leave: ({ variable, type, defaultValue, directives }) =>\n variable +\n ': ' +\n type +\n wrap(' = ', defaultValue) +\n wrap(' ', join(directives, ' ')),\n },\n SelectionSet: {\n leave: ({ selections }) => block(selections),\n },\n Field: {\n leave({ alias, name, arguments: args, directives, selectionSet }) {\n const prefix = wrap('', alias, ': ') + name;\n let argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n },\n Argument: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Fragments\n FragmentSpread: {\n leave: ({ name, directives }) =>\n '...' + name + wrap(' ', join(directives, ' ')),\n },\n InlineFragment: {\n leave: ({ typeCondition, directives, selectionSet }) =>\n join(\n [\n '...',\n wrap('on ', typeCondition),\n join(directives, ' '),\n selectionSet,\n ],\n ' ',\n ),\n },\n FragmentDefinition: {\n leave: (\n { name, typeCondition, variableDefinitions, directives, selectionSet }, // Note: fragment variable definitions are experimental and may be changed\n ) =>\n // or removed in the future.\n `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` +\n `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` +\n selectionSet,\n },\n // Value\n IntValue: {\n leave: ({ value }) => value,\n },\n FloatValue: {\n leave: ({ value }) => value,\n },\n StringValue: {\n leave: ({ value, block: isBlockString }) =>\n isBlockString ? printBlockString(value) : printString(value),\n },\n BooleanValue: {\n leave: ({ value }) => (value ? 'true' : 'false'),\n },\n NullValue: {\n leave: () => 'null',\n },\n EnumValue: {\n leave: ({ value }) => value,\n },\n ListValue: {\n leave: ({ values }) => '[' + join(values, ', ') + ']',\n },\n ObjectValue: {\n leave: ({ fields }) => '{' + join(fields, ', ') + '}',\n },\n ObjectField: {\n leave: ({ name, value }) => name + ': ' + value,\n },\n // Directive\n Directive: {\n leave: ({ name, arguments: args }) =>\n '@' + name + wrap('(', join(args, ', '), ')'),\n },\n // Type\n NamedType: {\n leave: ({ name }) => name,\n },\n ListType: {\n leave: ({ type }) => '[' + type + ']',\n },\n NonNullType: {\n leave: ({ type }) => type + '!',\n },\n // Type System Definitions\n SchemaDefinition: {\n leave: ({ description, directives, operationTypes }) =>\n wrap('', description, '\\n') +\n join(['schema', join(directives, ' '), block(operationTypes)], ' '),\n },\n OperationTypeDefinition: {\n leave: ({ operation, type }) => operation + ': ' + type,\n },\n ScalarTypeDefinition: {\n leave: ({ description, name, directives }) =>\n wrap('', description, '\\n') +\n join(['scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap('', description, '\\n') +\n join(\n [\n 'type',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n FieldDefinition: {\n leave: ({ description, name, arguments: args, type, directives }) =>\n wrap('', description, '\\n') +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n ': ' +\n type +\n wrap(' ', join(directives, ' ')),\n },\n InputValueDefinition: {\n leave: ({ description, name, type, defaultValue, directives }) =>\n wrap('', description, '\\n') +\n join(\n [name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')],\n ' ',\n ),\n },\n InterfaceTypeDefinition: {\n leave: ({ description, name, interfaces, directives, fields }) =>\n wrap('', description, '\\n') +\n join(\n [\n 'interface',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n UnionTypeDefinition: {\n leave: ({ description, name, directives, types }) =>\n wrap('', description, '\\n') +\n join(\n ['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))],\n ' ',\n ),\n },\n EnumTypeDefinition: {\n leave: ({ description, name, directives, values }) =>\n wrap('', description, '\\n') +\n join(['enum', name, join(directives, ' '), block(values)], ' '),\n },\n EnumValueDefinition: {\n leave: ({ description, name, directives }) =>\n wrap('', description, '\\n') + join([name, join(directives, ' ')], ' '),\n },\n InputObjectTypeDefinition: {\n leave: ({ description, name, directives, fields }) =>\n wrap('', description, '\\n') +\n join(['input', name, join(directives, ' '), block(fields)], ' '),\n },\n DirectiveDefinition: {\n leave: ({ description, name, arguments: args, repeatable, locations }) =>\n wrap('', description, '\\n') +\n 'directive @' +\n name +\n (hasMultilineItems(args)\n ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n : wrap('(', join(args, ', '), ')')) +\n (repeatable ? ' repeatable' : '') +\n ' on ' +\n join(locations, ' | '),\n },\n SchemaExtension: {\n leave: ({ directives, operationTypes }) =>\n join(\n ['extend schema', join(directives, ' '), block(operationTypes)],\n ' ',\n ),\n },\n ScalarTypeExtension: {\n leave: ({ name, directives }) =>\n join(['extend scalar', name, join(directives, ' ')], ' '),\n },\n ObjectTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join(\n [\n 'extend type',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n InterfaceTypeExtension: {\n leave: ({ name, interfaces, directives, fields }) =>\n join(\n [\n 'extend interface',\n name,\n wrap('implements ', join(interfaces, ' & ')),\n join(directives, ' '),\n block(fields),\n ],\n ' ',\n ),\n },\n UnionTypeExtension: {\n leave: ({ name, directives, types }) =>\n join(\n [\n 'extend union',\n name,\n join(directives, ' '),\n wrap('= ', join(types, ' | ')),\n ],\n ' ',\n ),\n },\n EnumTypeExtension: {\n leave: ({ name, directives, values }) =>\n join(['extend enum', name, join(directives, ' '), block(values)], ' '),\n },\n InputObjectTypeExtension: {\n leave: ({ name, directives, fields }) =>\n join(['extend input', name, join(directives, ' '), block(fields)], ' '),\n },\n};\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\nfunction join(maybeArray, separator = '') {\n var _maybeArray$filter$jo;\n\n return (_maybeArray$filter$jo =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.filter((x) => x).join(separator)) !== null &&\n _maybeArray$filter$jo !== void 0\n ? _maybeArray$filter$jo\n : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an indented `{ }` block.\n */\n\nfunction block(array) {\n return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\nfunction wrap(start, maybeString, end = '') {\n return maybeString != null && maybeString !== ''\n ? start + maybeString + end\n : '';\n}\n\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction hasMultilineItems(maybeArray) {\n var _maybeArray$some;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n return (_maybeArray$some =\n maybeArray === null || maybeArray === void 0\n ? void 0\n : maybeArray.some((str) => str.includes('\\n'))) !== null &&\n _maybeArray$some !== void 0\n ? _maybeArray$some\n : false;\n}\n","import { __assign, __spreadArray } from \"tslib\";\nimport { print } from 'graphql';\n;\nvar defaultHttpOptions = {\n includeQuery: true,\n includeExtensions: false,\n};\nvar defaultHeaders = {\n accept: '*/*',\n 'content-type': 'application/json',\n};\nvar defaultOptions = {\n method: 'POST',\n};\nexport var fallbackHttpConfig = {\n http: defaultHttpOptions,\n headers: defaultHeaders,\n options: defaultOptions,\n};\nexport var defaultPrinter = function (ast, printer) { return printer(ast); };\nexport function selectHttpOptionsAndBody(operation, fallbackConfig) {\n var configs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n configs[_i - 2] = arguments[_i];\n }\n configs.unshift(fallbackConfig);\n return selectHttpOptionsAndBodyInternal.apply(void 0, __spreadArray([operation,\n defaultPrinter], configs, false));\n}\nexport function selectHttpOptionsAndBodyInternal(operation, printer) {\n var configs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n configs[_i - 2] = arguments[_i];\n }\n var options = {};\n var http = {};\n configs.forEach(function (config) {\n options = __assign(__assign(__assign({}, options), config.options), { headers: __assign(__assign({}, options.headers), headersToLowerCase(config.headers)) });\n if (config.credentials) {\n options.credentials = config.credentials;\n }\n http = __assign(__assign({}, http), config.http);\n });\n var operationName = operation.operationName, extensions = operation.extensions, variables = operation.variables, query = operation.query;\n var body = { operationName: operationName, variables: variables };\n if (http.includeExtensions)\n body.extensions = extensions;\n if (http.includeQuery)\n body.query = printer(query, print);\n return {\n options: options,\n body: body,\n };\n}\n;\nfunction headersToLowerCase(headers) {\n if (headers) {\n var normalized_1 = Object.create(null);\n Object.keys(Object(headers)).forEach(function (name) {\n normalized_1[name.toLowerCase()] = headers[name];\n });\n return normalized_1;\n }\n return headers;\n}\n//# sourceMappingURL=selectHttpOptionsAndBody.js.map","import { Observable } from \"../../utilities/index.js\";\nexport function fromError(errorValue) {\n return new Observable(function (observer) {\n observer.error(errorValue);\n });\n}\n//# sourceMappingURL=fromError.js.map","import { __assign, __rest } from \"tslib\";\nimport \"../../utilities/globals/index.js\";\nimport { visit } from 'graphql';\nimport { ApolloLink } from \"../core/index.js\";\nimport { Observable } from \"../../utilities/index.js\";\nimport { serializeFetchParameter } from \"./serializeFetchParameter.js\";\nimport { selectURI } from \"./selectURI.js\";\nimport { parseAndCheckHttpResponse } from \"./parseAndCheckHttpResponse.js\";\nimport { checkFetcher } from \"./checkFetcher.js\";\nimport { selectHttpOptionsAndBodyInternal, defaultPrinter, fallbackHttpConfig } from \"./selectHttpOptionsAndBody.js\";\nimport { createSignalIfSupported } from \"./createSignalIfSupported.js\";\nimport { rewriteURIForGET } from \"./rewriteURIForGET.js\";\nimport { fromError } from \"../utils/index.js\";\nimport { maybe } from \"../../utilities/index.js\";\nvar backupFetch = maybe(function () { return fetch; });\nexport var createHttpLink = function (linkOptions) {\n if (linkOptions === void 0) { linkOptions = {}; }\n var _a = linkOptions.uri, uri = _a === void 0 ? '/graphql' : _a, preferredFetch = linkOptions.fetch, _b = linkOptions.print, print = _b === void 0 ? defaultPrinter : _b, includeExtensions = linkOptions.includeExtensions, useGETForQueries = linkOptions.useGETForQueries, _c = linkOptions.includeUnusedVariables, includeUnusedVariables = _c === void 0 ? false : _c, requestOptions = __rest(linkOptions, [\"uri\", \"fetch\", \"print\", \"includeExtensions\", \"useGETForQueries\", \"includeUnusedVariables\"]);\n if (__DEV__) {\n checkFetcher(preferredFetch || backupFetch);\n }\n var linkConfig = {\n http: { includeExtensions: includeExtensions },\n options: requestOptions.fetchOptions,\n credentials: requestOptions.credentials,\n headers: requestOptions.headers,\n };\n return new ApolloLink(function (operation) {\n var chosenURI = selectURI(operation, uri);\n var context = operation.getContext();\n var clientAwarenessHeaders = {};\n if (context.clientAwareness) {\n var _a = context.clientAwareness, name_1 = _a.name, version = _a.version;\n if (name_1) {\n clientAwarenessHeaders['apollographql-client-name'] = name_1;\n }\n if (version) {\n clientAwarenessHeaders['apollographql-client-version'] = version;\n }\n }\n var contextHeaders = __assign(__assign({}, clientAwarenessHeaders), context.headers);\n var contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: contextHeaders,\n };\n var _b = selectHttpOptionsAndBodyInternal(operation, print, fallbackHttpConfig, linkConfig, contextConfig), options = _b.options, body = _b.body;\n if (body.variables && !includeUnusedVariables) {\n var unusedNames_1 = new Set(Object.keys(body.variables));\n visit(operation.query, {\n Variable: function (node, _key, parent) {\n if (parent && parent.kind !== 'VariableDefinition') {\n unusedNames_1.delete(node.name.value);\n }\n },\n });\n if (unusedNames_1.size) {\n body.variables = __assign({}, body.variables);\n unusedNames_1.forEach(function (name) {\n delete body.variables[name];\n });\n }\n }\n var controller;\n if (!options.signal) {\n var _c = createSignalIfSupported(), _controller = _c.controller, signal = _c.signal;\n controller = _controller;\n if (controller)\n options.signal = signal;\n }\n var definitionIsMutation = function (d) {\n return d.kind === 'OperationDefinition' && d.operation === 'mutation';\n };\n if (useGETForQueries &&\n !operation.query.definitions.some(definitionIsMutation)) {\n options.method = 'GET';\n }\n if (options.method === 'GET') {\n var _d = rewriteURIForGET(chosenURI, body), newURI = _d.newURI, parseError = _d.parseError;\n if (parseError) {\n return fromError(parseError);\n }\n chosenURI = newURI;\n }\n else {\n try {\n options.body = serializeFetchParameter(body, 'Payload');\n }\n catch (parseError) {\n return fromError(parseError);\n }\n }\n return new Observable(function (observer) {\n var currentFetch = preferredFetch || maybe(function () { return fetch; }) || backupFetch;\n currentFetch(chosenURI, options)\n .then(function (response) {\n operation.setContext({ response: response });\n return response;\n })\n .then(parseAndCheckHttpResponse(operation))\n .then(function (result) {\n observer.next(result);\n observer.complete();\n return result;\n })\n .catch(function (err) {\n if (err.name === 'AbortError')\n return;\n if (err.result && err.result.errors && err.result.data) {\n observer.next(err.result);\n }\n observer.error(err);\n });\n return function () {\n if (controller)\n controller.abort();\n };\n });\n });\n};\n//# sourceMappingURL=createHttpLink.js.map","export var selectURI = function (operation, fallbackURI) {\n var context = operation.getContext();\n var contextURI = context.uri;\n if (contextURI) {\n return contextURI;\n }\n else if (typeof fallbackURI === 'function') {\n return fallbackURI(operation);\n }\n else {\n return fallbackURI || '/graphql';\n }\n};\n//# sourceMappingURL=selectURI.js.map","export var createSignalIfSupported = function () {\n if (typeof AbortController === 'undefined')\n return { controller: false, signal: false };\n var controller = new AbortController();\n var signal = controller.signal;\n return { controller: controller, signal: signal };\n};\n//# sourceMappingURL=createSignalIfSupported.js.map","import { serializeFetchParameter } from \"./serializeFetchParameter.js\";\nexport function rewriteURIForGET(chosenURI, body) {\n var queryParams = [];\n var addQueryParam = function (key, value) {\n queryParams.push(\"\".concat(key, \"=\").concat(encodeURIComponent(value)));\n };\n if ('query' in body) {\n addQueryParam('query', body.query);\n }\n if (body.operationName) {\n addQueryParam('operationName', body.operationName);\n }\n if (body.variables) {\n var serializedVariables = void 0;\n try {\n serializedVariables = serializeFetchParameter(body.variables, 'Variables map');\n }\n catch (parseError) {\n return { parseError: parseError };\n }\n addQueryParam('variables', serializedVariables);\n }\n if (body.extensions) {\n var serializedExtensions = void 0;\n try {\n serializedExtensions = serializeFetchParameter(body.extensions, 'Extensions map');\n }\n catch (parseError) {\n return { parseError: parseError };\n }\n addQueryParam('extensions', serializedExtensions);\n }\n var fragment = '', preFragment = chosenURI;\n var fragmentStart = chosenURI.indexOf('#');\n if (fragmentStart !== -1) {\n fragment = chosenURI.substr(fragmentStart);\n preFragment = chosenURI.substr(0, fragmentStart);\n }\n var queryParamsPrefix = preFragment.indexOf('?') === -1 ? '?' : '&';\n var newURI = preFragment + queryParamsPrefix + queryParams.join('&') + fragment;\n return { newURI: newURI };\n}\n//# sourceMappingURL=rewriteURIForGET.js.map","import { __extends } from \"tslib\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { createHttpLink } from \"./createHttpLink.js\";\nvar HttpLink = (function (_super) {\n __extends(HttpLink, _super);\n function HttpLink(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, createHttpLink(options).request) || this;\n _this.options = options;\n return _this;\n }\n return HttpLink;\n}(ApolloLink));\nexport { HttpLink };\n//# sourceMappingURL=HttpLink.js.map","import { ApolloLink } from \"./ApolloLink.js\";\nexport var execute = ApolloLink.execute;\n//# sourceMappingURL=execute.js.map","import { invariant } from \"../globals/index.js\";\nimport { visit, } from 'graphql';\nexport function shouldInclude(_a, variables) {\n var directives = _a.directives;\n if (!directives || !directives.length) {\n return true;\n }\n return getInclusionDirectives(directives).every(function (_a) {\n var directive = _a.directive, ifArgument = _a.ifArgument;\n var evaledValue = false;\n if (ifArgument.value.kind === 'Variable') {\n evaledValue = variables && variables[ifArgument.value.name.value];\n __DEV__ ? invariant(evaledValue !== void 0, \"Invalid variable referenced in @\".concat(directive.name.value, \" directive.\")) : invariant(evaledValue !== void 0, 37);\n }\n else {\n evaledValue = ifArgument.value.value;\n }\n return directive.name.value === 'skip' ? !evaledValue : evaledValue;\n });\n}\nexport function getDirectiveNames(root) {\n var names = [];\n visit(root, {\n Directive: function (node) {\n names.push(node.name.value);\n },\n });\n return names;\n}\nexport function hasDirectives(names, root) {\n return getDirectiveNames(root).some(function (name) { return names.indexOf(name) > -1; });\n}\nexport function hasClientExports(document) {\n return (document &&\n hasDirectives(['client'], document) &&\n hasDirectives(['export'], document));\n}\nfunction isInclusionDirective(_a) {\n var value = _a.name.value;\n return value === 'skip' || value === 'include';\n}\nexport function getInclusionDirectives(directives) {\n var result = [];\n if (directives && directives.length) {\n directives.forEach(function (directive) {\n if (!isInclusionDirective(directive))\n return;\n var directiveArguments = directive.arguments;\n var directiveName = directive.name.value;\n __DEV__ ? invariant(directiveArguments && directiveArguments.length === 1, \"Incorrect number of arguments for the @\".concat(directiveName, \" directive.\")) : invariant(directiveArguments && directiveArguments.length === 1, 38);\n var ifArgument = directiveArguments[0];\n __DEV__ ? invariant(ifArgument.name && ifArgument.name.value === 'if', \"Invalid argument for the @\".concat(directiveName, \" directive.\")) : invariant(ifArgument.name && ifArgument.name.value === 'if', 39);\n var ifValue = ifArgument.value;\n __DEV__ ? invariant(ifValue &&\n (ifValue.kind === 'Variable' || ifValue.kind === 'BooleanValue'), \"Argument for the @\".concat(directiveName, \" directive must be a variable or a boolean value.\")) : invariant(ifValue &&\n (ifValue.kind === 'Variable' || ifValue.kind === 'BooleanValue'), 40);\n result.push({ directive: directive, ifArgument: ifArgument });\n });\n }\n return result;\n}\n//# sourceMappingURL=directives.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { isNonNullObject } from \"./objects.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function mergeDeep() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return mergeDeepArray(sources);\n}\nexport function mergeDeepArray(sources) {\n var target = sources[0] || {};\n var count = sources.length;\n if (count > 1) {\n var merger = new DeepMerger();\n for (var i = 1; i < count; ++i) {\n target = merger.merge(target, sources[i]);\n }\n }\n return target;\n}\nvar defaultReconciler = function (target, source, property) {\n return this.merge(target[property], source[property]);\n};\nvar DeepMerger = (function () {\n function DeepMerger(reconciler) {\n if (reconciler === void 0) { reconciler = defaultReconciler; }\n this.reconciler = reconciler;\n this.isObject = isNonNullObject;\n this.pastCopies = new Set();\n }\n DeepMerger.prototype.merge = function (target, source) {\n var _this = this;\n var context = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n context[_i - 2] = arguments[_i];\n }\n if (isNonNullObject(source) && isNonNullObject(target)) {\n Object.keys(source).forEach(function (sourceKey) {\n if (hasOwnProperty.call(target, sourceKey)) {\n var targetValue = target[sourceKey];\n if (source[sourceKey] !== targetValue) {\n var result = _this.reconciler.apply(_this, __spreadArray([target, source, sourceKey], context, false));\n if (result !== targetValue) {\n target = _this.shallowCopyForMerge(target);\n target[sourceKey] = result;\n }\n }\n }\n else {\n target = _this.shallowCopyForMerge(target);\n target[sourceKey] = source[sourceKey];\n }\n });\n return target;\n }\n return source;\n };\n DeepMerger.prototype.shallowCopyForMerge = function (value) {\n if (isNonNullObject(value)) {\n if (this.pastCopies.has(value)) {\n if (!Object.isFrozen(value))\n return value;\n this.pastCopies.delete(value);\n }\n if (Array.isArray(value)) {\n value = value.slice(0);\n }\n else {\n value = __assign({ __proto__: Object.getPrototypeOf(value) }, value);\n }\n this.pastCopies.add(value);\n }\n return value;\n };\n return DeepMerger;\n}());\nexport { DeepMerger };\n//# sourceMappingURL=mergeDeep.js.map","import { isReference, isField, DeepMerger, resultKeyNameFromField, shouldInclude, isNonNullObject, compact, } from \"../../utilities/index.js\";\nexport var hasOwn = Object.prototype.hasOwnProperty;\nexport function defaultDataIdFromObject(_a, context) {\n var __typename = _a.__typename, id = _a.id, _id = _a._id;\n if (typeof __typename === \"string\") {\n if (context) {\n context.keyObject =\n id !== void 0 ? { id: id } :\n _id !== void 0 ? { _id: _id } :\n void 0;\n }\n if (id === void 0)\n id = _id;\n if (id !== void 0) {\n return \"\".concat(__typename, \":\").concat((typeof id === \"number\" ||\n typeof id === \"string\") ? id : JSON.stringify(id));\n }\n }\n}\nvar defaultConfig = {\n dataIdFromObject: defaultDataIdFromObject,\n addTypename: true,\n resultCaching: true,\n canonizeResults: false,\n};\nexport function normalizeConfig(config) {\n return compact(defaultConfig, config);\n}\nexport function shouldCanonizeResults(config) {\n var value = config.canonizeResults;\n return value === void 0 ? defaultConfig.canonizeResults : value;\n}\nexport function getTypenameFromStoreObject(store, objectOrReference) {\n return isReference(objectOrReference)\n ? store.get(objectOrReference.__ref, \"__typename\")\n : objectOrReference && objectOrReference.__typename;\n}\nexport var TypeOrFieldNameRegExp = /^[_a-z][_0-9a-z]*/i;\nexport function fieldNameFromStoreName(storeFieldName) {\n var match = storeFieldName.match(TypeOrFieldNameRegExp);\n return match ? match[0] : storeFieldName;\n}\nexport function selectionSetMatchesResult(selectionSet, result, variables) {\n if (isNonNullObject(result)) {\n return isArray(result)\n ? result.every(function (item) { return selectionSetMatchesResult(selectionSet, item, variables); })\n : selectionSet.selections.every(function (field) {\n if (isField(field) && shouldInclude(field, variables)) {\n var key = resultKeyNameFromField(field);\n return hasOwn.call(result, key) &&\n (!field.selectionSet ||\n selectionSetMatchesResult(field.selectionSet, result[key], variables));\n }\n return true;\n });\n }\n return false;\n}\nexport function storeValueIsStoreObject(value) {\n return isNonNullObject(value) &&\n !isReference(value) &&\n !isArray(value);\n}\nexport function makeProcessedFieldsMerger() {\n return new DeepMerger;\n}\nexport var isArray = function (a) { return Array.isArray(a); };\n//# sourceMappingURL=helpers.js.map","import { __assign } from \"tslib\";\nimport \"../../utilities/globals/index.js\";\nimport { Trie } from \"@wry/trie\";\nimport { canUseWeakMap, canUseWeakSet, isNonNullObject as isObjectOrArray, } from \"../../utilities/index.js\";\nimport { isArray } from \"./helpers.js\";\nfunction shallowCopy(value) {\n if (isObjectOrArray(value)) {\n return isArray(value)\n ? value.slice(0)\n : __assign({ __proto__: Object.getPrototypeOf(value) }, value);\n }\n return value;\n}\nvar ObjectCanon = (function () {\n function ObjectCanon() {\n this.known = new (canUseWeakSet ? WeakSet : Set)();\n this.pool = new Trie(canUseWeakMap);\n this.passes = new WeakMap();\n this.keysByJSON = new Map();\n this.empty = this.admit({});\n }\n ObjectCanon.prototype.isKnown = function (value) {\n return isObjectOrArray(value) && this.known.has(value);\n };\n ObjectCanon.prototype.pass = function (value) {\n if (isObjectOrArray(value)) {\n var copy = shallowCopy(value);\n this.passes.set(copy, value);\n return copy;\n }\n return value;\n };\n ObjectCanon.prototype.admit = function (value) {\n var _this = this;\n if (isObjectOrArray(value)) {\n var original = this.passes.get(value);\n if (original)\n return original;\n var proto = Object.getPrototypeOf(value);\n switch (proto) {\n case Array.prototype: {\n if (this.known.has(value))\n return value;\n var array = value.map(this.admit, this);\n var node = this.pool.lookupArray(array);\n if (!node.array) {\n this.known.add(node.array = array);\n if (__DEV__) {\n Object.freeze(array);\n }\n }\n return node.array;\n }\n case null:\n case Object.prototype: {\n if (this.known.has(value))\n return value;\n var proto_1 = Object.getPrototypeOf(value);\n var array_1 = [proto_1];\n var keys = this.sortedKeys(value);\n array_1.push(keys.json);\n var firstValueIndex_1 = array_1.length;\n keys.sorted.forEach(function (key) {\n array_1.push(_this.admit(value[key]));\n });\n var node = this.pool.lookupArray(array_1);\n if (!node.object) {\n var obj_1 = node.object = Object.create(proto_1);\n this.known.add(obj_1);\n keys.sorted.forEach(function (key, i) {\n obj_1[key] = array_1[firstValueIndex_1 + i];\n });\n if (__DEV__) {\n Object.freeze(obj_1);\n }\n }\n return node.object;\n }\n }\n }\n return value;\n };\n ObjectCanon.prototype.sortedKeys = function (obj) {\n var keys = Object.keys(obj);\n var node = this.pool.lookupArray(keys);\n if (!node.keys) {\n keys.sort();\n var json = JSON.stringify(keys);\n if (!(node.keys = this.keysByJSON.get(json))) {\n this.keysByJSON.set(json, node.keys = { sorted: keys, json: json });\n }\n }\n return node.keys;\n };\n return ObjectCanon;\n}());\nexport { ObjectCanon };\nexport var canonicalStringify = Object.assign(function (value) {\n if (isObjectOrArray(value)) {\n if (stringifyCanon === void 0) {\n resetCanonicalStringify();\n }\n var canonical = stringifyCanon.admit(value);\n var json = stringifyCache.get(canonical);\n if (json === void 0) {\n stringifyCache.set(canonical, json = JSON.stringify(canonical));\n }\n return json;\n }\n return JSON.stringify(value);\n}, {\n reset: resetCanonicalStringify,\n});\nvar stringifyCanon;\nvar stringifyCache;\nfunction resetCanonicalStringify() {\n stringifyCanon = new ObjectCanon;\n stringifyCache = new (canUseWeakMap ? WeakMap : Map)();\n}\n//# sourceMappingURL=object-canon.js.map","import { Observable } from \"./Observable.js\";\nexport function asyncMap(observable, mapFn, catchFn) {\n return new Observable(function (observer) {\n var next = observer.next, error = observer.error, complete = observer.complete;\n var activeCallbackCount = 0;\n var completed = false;\n var promiseQueue = {\n then: function (callback) {\n return new Promise(function (resolve) { return resolve(callback()); });\n },\n };\n function makeCallback(examiner, delegate) {\n if (examiner) {\n return function (arg) {\n ++activeCallbackCount;\n var both = function () { return examiner(arg); };\n promiseQueue = promiseQueue.then(both, both).then(function (result) {\n --activeCallbackCount;\n next && next.call(observer, result);\n if (completed) {\n handler.complete();\n }\n }, function (error) {\n --activeCallbackCount;\n throw error;\n }).catch(function (caught) {\n error && error.call(observer, caught);\n });\n };\n }\n else {\n return function (arg) { return delegate && delegate.call(observer, arg); };\n }\n }\n var handler = {\n next: makeCallback(mapFn, next),\n error: makeCallback(catchFn, error),\n complete: function () {\n completed = true;\n if (!activeCallbackCount) {\n complete && complete.call(observer);\n }\n },\n };\n var sub = observable.subscribe(handler);\n return function () { return sub.unsubscribe(); };\n });\n}\n//# sourceMappingURL=asyncMap.js.map","export function graphQLResultHasError(result) {\n return (result.errors && result.errors.length > 0) || false;\n}\n//# sourceMappingURL=errorHandling.js.map","export function filterInPlace(array, test, context) {\n var target = 0;\n array.forEach(function (elem, i) {\n if (test.call(this, elem, i, array)) {\n array[target++] = elem;\n }\n }, context);\n array.length = target;\n return array;\n}\n//# sourceMappingURL=filterInPlace.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { invariant } from \"../globals/index.js\";\nimport { visit, } from 'graphql';\nimport { checkDocument, getOperationDefinition, getFragmentDefinition, getFragmentDefinitions, getMainDefinition, } from \"./getFromAST.js\";\nimport { filterInPlace } from \"../common/filterInPlace.js\";\nimport { isField, isInlineFragment } from \"./storeUtils.js\";\nimport { createFragmentMap, } from \"./fragments.js\";\nvar TYPENAME_FIELD = {\n kind: 'Field',\n name: {\n kind: 'Name',\n value: '__typename',\n },\n};\nfunction isEmpty(op, fragments) {\n return op.selectionSet.selections.every(function (selection) {\n return selection.kind === 'FragmentSpread' &&\n isEmpty(fragments[selection.name.value], fragments);\n });\n}\nfunction nullIfDocIsEmpty(doc) {\n return isEmpty(getOperationDefinition(doc) || getFragmentDefinition(doc), createFragmentMap(getFragmentDefinitions(doc)))\n ? null\n : doc;\n}\nfunction getDirectiveMatcher(directives) {\n return function directiveMatcher(directive) {\n return directives.some(function (dir) {\n return (dir.name && dir.name === directive.name.value) ||\n (dir.test && dir.test(directive));\n });\n };\n}\nexport function removeDirectivesFromDocument(directives, doc) {\n var variablesInUse = Object.create(null);\n var variablesToRemove = [];\n var fragmentSpreadsInUse = Object.create(null);\n var fragmentSpreadsToRemove = [];\n var modifiedDoc = nullIfDocIsEmpty(visit(doc, {\n Variable: {\n enter: function (node, _key, parent) {\n if (parent.kind !== 'VariableDefinition') {\n variablesInUse[node.name.value] = true;\n }\n },\n },\n Field: {\n enter: function (node) {\n if (directives && node.directives) {\n var shouldRemoveField = directives.some(function (directive) { return directive.remove; });\n if (shouldRemoveField &&\n node.directives &&\n node.directives.some(getDirectiveMatcher(directives))) {\n if (node.arguments) {\n node.arguments.forEach(function (arg) {\n if (arg.value.kind === 'Variable') {\n variablesToRemove.push({\n name: arg.value.name.value,\n });\n }\n });\n }\n if (node.selectionSet) {\n getAllFragmentSpreadsFromSelectionSet(node.selectionSet).forEach(function (frag) {\n fragmentSpreadsToRemove.push({\n name: frag.name.value,\n });\n });\n }\n return null;\n }\n }\n },\n },\n FragmentSpread: {\n enter: function (node) {\n fragmentSpreadsInUse[node.name.value] = true;\n },\n },\n Directive: {\n enter: function (node) {\n if (getDirectiveMatcher(directives)(node)) {\n return null;\n }\n },\n },\n }));\n if (modifiedDoc &&\n filterInPlace(variablesToRemove, function (v) { return !!v.name && !variablesInUse[v.name]; }).length) {\n modifiedDoc = removeArgumentsFromDocument(variablesToRemove, modifiedDoc);\n }\n if (modifiedDoc &&\n filterInPlace(fragmentSpreadsToRemove, function (fs) { return !!fs.name && !fragmentSpreadsInUse[fs.name]; })\n .length) {\n modifiedDoc = removeFragmentSpreadFromDocument(fragmentSpreadsToRemove, modifiedDoc);\n }\n return modifiedDoc;\n}\nexport var addTypenameToDocument = Object.assign(function (doc) {\n return visit(doc, {\n SelectionSet: {\n enter: function (node, _key, parent) {\n if (parent &&\n parent.kind === 'OperationDefinition') {\n return;\n }\n var selections = node.selections;\n if (!selections) {\n return;\n }\n var skip = selections.some(function (selection) {\n return (isField(selection) &&\n (selection.name.value === '__typename' ||\n selection.name.value.lastIndexOf('__', 0) === 0));\n });\n if (skip) {\n return;\n }\n var field = parent;\n if (isField(field) &&\n field.directives &&\n field.directives.some(function (d) { return d.name.value === 'export'; })) {\n return;\n }\n return __assign(__assign({}, node), { selections: __spreadArray(__spreadArray([], selections, true), [TYPENAME_FIELD], false) });\n },\n },\n });\n}, {\n added: function (field) {\n return field === TYPENAME_FIELD;\n },\n});\nvar connectionRemoveConfig = {\n test: function (directive) {\n var willRemove = directive.name.value === 'connection';\n if (willRemove) {\n if (!directive.arguments ||\n !directive.arguments.some(function (arg) { return arg.name.value === 'key'; })) {\n __DEV__ && invariant.warn('Removing an @connection directive even though it does not have a key. ' +\n 'You may want to use the key parameter to specify a store key.');\n }\n }\n return willRemove;\n },\n};\nexport function removeConnectionDirectiveFromDocument(doc) {\n return removeDirectivesFromDocument([connectionRemoveConfig], checkDocument(doc));\n}\nfunction hasDirectivesInSelectionSet(directives, selectionSet, nestedCheck) {\n if (nestedCheck === void 0) { nestedCheck = true; }\n return (!!selectionSet &&\n selectionSet.selections &&\n selectionSet.selections.some(function (selection) {\n return hasDirectivesInSelection(directives, selection, nestedCheck);\n }));\n}\nfunction hasDirectivesInSelection(directives, selection, nestedCheck) {\n if (nestedCheck === void 0) { nestedCheck = true; }\n if (!isField(selection)) {\n return true;\n }\n if (!selection.directives) {\n return false;\n }\n return (selection.directives.some(getDirectiveMatcher(directives)) ||\n (nestedCheck &&\n hasDirectivesInSelectionSet(directives, selection.selectionSet, nestedCheck)));\n}\nfunction getArgumentMatcher(config) {\n return function argumentMatcher(argument) {\n return config.some(function (aConfig) {\n return argument.value &&\n argument.value.kind === 'Variable' &&\n argument.value.name &&\n (aConfig.name === argument.value.name.value ||\n (aConfig.test && aConfig.test(argument)));\n });\n };\n}\nexport function removeArgumentsFromDocument(config, doc) {\n var argMatcher = getArgumentMatcher(config);\n return nullIfDocIsEmpty(visit(doc, {\n OperationDefinition: {\n enter: function (node) {\n return __assign(__assign({}, node), { variableDefinitions: node.variableDefinitions ? node.variableDefinitions.filter(function (varDef) {\n return !config.some(function (arg) { return arg.name === varDef.variable.name.value; });\n }) : [] });\n },\n },\n Field: {\n enter: function (node) {\n var shouldRemoveField = config.some(function (argConfig) { return argConfig.remove; });\n if (shouldRemoveField) {\n var argMatchCount_1 = 0;\n if (node.arguments) {\n node.arguments.forEach(function (arg) {\n if (argMatcher(arg)) {\n argMatchCount_1 += 1;\n }\n });\n }\n if (argMatchCount_1 === 1) {\n return null;\n }\n }\n },\n },\n Argument: {\n enter: function (node) {\n if (argMatcher(node)) {\n return null;\n }\n },\n },\n }));\n}\nexport function removeFragmentSpreadFromDocument(config, doc) {\n function enter(node) {\n if (config.some(function (def) { return def.name === node.name.value; })) {\n return null;\n }\n }\n return nullIfDocIsEmpty(visit(doc, {\n FragmentSpread: { enter: enter },\n FragmentDefinition: { enter: enter },\n }));\n}\nfunction getAllFragmentSpreadsFromSelectionSet(selectionSet) {\n var allFragments = [];\n selectionSet.selections.forEach(function (selection) {\n if ((isField(selection) || isInlineFragment(selection)) &&\n selection.selectionSet) {\n getAllFragmentSpreadsFromSelectionSet(selection.selectionSet).forEach(function (frag) { return allFragments.push(frag); });\n }\n else if (selection.kind === 'FragmentSpread') {\n allFragments.push(selection);\n }\n });\n return allFragments;\n}\nexport function buildQueryFromSelectionSet(document) {\n var definition = getMainDefinition(document);\n var definitionOperation = definition.operation;\n if (definitionOperation === 'query') {\n return document;\n }\n var modifiedDoc = visit(document, {\n OperationDefinition: {\n enter: function (node) {\n return __assign(__assign({}, node), { operation: 'query' });\n },\n },\n });\n return modifiedDoc;\n}\nexport function removeClientSetsFromDocument(document) {\n checkDocument(document);\n var modifiedDoc = removeDirectivesFromDocument([\n {\n test: function (directive) { return directive.name.value === 'client'; },\n remove: true,\n },\n ], document);\n if (modifiedDoc) {\n modifiedDoc = visit(modifiedDoc, {\n FragmentDefinition: {\n enter: function (node) {\n if (node.selectionSet) {\n var isTypenameOnly = node.selectionSet.selections.every(function (selection) {\n return isField(selection) && selection.name.value === '__typename';\n });\n if (isTypenameOnly) {\n return null;\n }\n }\n },\n },\n });\n }\n return modifiedDoc;\n}\n//# sourceMappingURL=transform.js.map","var prefixCounts = new Map();\nexport function makeUniqueId(prefix) {\n var count = prefixCounts.get(prefix) || 1;\n prefixCounts.set(prefix, count + 1);\n return \"\".concat(prefix, \":\").concat(count, \":\").concat(Math.random().toString(36).slice(2));\n}\n//# sourceMappingURL=makeUniqueId.js.map","export function iterateObserversSafely(observers, method, argument) {\n var observersWithMethod = [];\n observers.forEach(function (obs) { return obs[method] && observersWithMethod.push(obs); });\n observersWithMethod.forEach(function (obs) { return obs[method](argument); });\n}\n//# sourceMappingURL=iteration.js.map","import { Observable } from \"./Observable.js\";\nimport { canUseSymbol } from \"../common/canUse.js\";\nexport function fixObservableSubclass(subclass) {\n function set(key) {\n Object.defineProperty(subclass, key, { value: Observable });\n }\n if (canUseSymbol && Symbol.species) {\n set(Symbol.species);\n }\n set(\"@@species\");\n return subclass;\n}\n//# sourceMappingURL=subclassing.js.map","import { __extends } from \"tslib\";\nimport { Observable } from \"./Observable.js\";\nimport { iterateObserversSafely } from \"./iteration.js\";\nimport { fixObservableSubclass } from \"./subclassing.js\";\nfunction isPromiseLike(value) {\n return value && typeof value.then === \"function\";\n}\nvar Concast = (function (_super) {\n __extends(Concast, _super);\n function Concast(sources) {\n var _this = _super.call(this, function (observer) {\n _this.addObserver(observer);\n return function () { return _this.removeObserver(observer); };\n }) || this;\n _this.observers = new Set();\n _this.addCount = 0;\n _this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n _this.handlers = {\n next: function (result) {\n if (_this.sub !== null) {\n _this.latest = [\"next\", result];\n iterateObserversSafely(_this.observers, \"next\", result);\n }\n },\n error: function (error) {\n var sub = _this.sub;\n if (sub !== null) {\n if (sub)\n setTimeout(function () { return sub.unsubscribe(); });\n _this.sub = null;\n _this.latest = [\"error\", error];\n _this.reject(error);\n iterateObserversSafely(_this.observers, \"error\", error);\n }\n },\n complete: function () {\n if (_this.sub !== null) {\n var value = _this.sources.shift();\n if (!value) {\n _this.sub = null;\n if (_this.latest &&\n _this.latest[0] === \"next\") {\n _this.resolve(_this.latest[1]);\n }\n else {\n _this.resolve();\n }\n iterateObserversSafely(_this.observers, \"complete\");\n }\n else if (isPromiseLike(value)) {\n value.then(function (obs) { return _this.sub = obs.subscribe(_this.handlers); });\n }\n else {\n _this.sub = value.subscribe(_this.handlers);\n }\n }\n },\n };\n _this.cancel = function (reason) {\n _this.reject(reason);\n _this.sources = [];\n _this.handlers.complete();\n };\n _this.promise.catch(function (_) { });\n if (typeof sources === \"function\") {\n sources = [new Observable(sources)];\n }\n if (isPromiseLike(sources)) {\n sources.then(function (iterable) { return _this.start(iterable); }, _this.handlers.error);\n }\n else {\n _this.start(sources);\n }\n return _this;\n }\n Concast.prototype.start = function (sources) {\n if (this.sub !== void 0)\n return;\n this.sources = Array.from(sources);\n this.handlers.complete();\n };\n Concast.prototype.deliverLastMessage = function (observer) {\n if (this.latest) {\n var nextOrError = this.latest[0];\n var method = observer[nextOrError];\n if (method) {\n method.call(observer, this.latest[1]);\n }\n if (this.sub === null &&\n nextOrError === \"next\" &&\n observer.complete) {\n observer.complete();\n }\n }\n };\n Concast.prototype.addObserver = function (observer) {\n if (!this.observers.has(observer)) {\n this.deliverLastMessage(observer);\n this.observers.add(observer);\n ++this.addCount;\n }\n };\n Concast.prototype.removeObserver = function (observer, quietly) {\n if (this.observers.delete(observer) &&\n --this.addCount < 1 &&\n !quietly) {\n this.handlers.error(new Error(\"Observable cancelled prematurely\"));\n }\n };\n Concast.prototype.cleanup = function (callback) {\n var _this = this;\n var called = false;\n var once = function () {\n if (!called) {\n called = true;\n _this.observers.delete(observer);\n callback();\n }\n };\n var observer = {\n next: once,\n error: once,\n complete: once,\n };\n var count = this.addCount;\n this.addObserver(observer);\n this.addCount = count;\n };\n return Concast;\n}(Observable));\nexport { Concast };\nfixObservableSubclass(Concast);\n//# sourceMappingURL=Concast.js.map","var toString = Object.prototype.toString;\nexport function cloneDeep(value) {\n return cloneDeepHelper(value);\n}\nfunction cloneDeepHelper(val, seen) {\n switch (toString.call(val)) {\n case \"[object Array]\": {\n seen = seen || new Map;\n if (seen.has(val))\n return seen.get(val);\n var copy_1 = val.slice(0);\n seen.set(val, copy_1);\n copy_1.forEach(function (child, i) {\n copy_1[i] = cloneDeepHelper(child, seen);\n });\n return copy_1;\n }\n case \"[object Object]\": {\n seen = seen || new Map;\n if (seen.has(val))\n return seen.get(val);\n var copy_2 = Object.create(Object.getPrototypeOf(val));\n seen.set(val, copy_2);\n Object.keys(val).forEach(function (key) {\n copy_2[key] = cloneDeepHelper(val[key], seen);\n });\n return copy_2;\n }\n default:\n return val;\n }\n}\n//# sourceMappingURL=cloneDeep.js.map","import { __assign, __extends } from \"tslib\";\nimport { invariant } from \"../utilities/globals/index.js\";\nimport { equal } from '@wry/equality';\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport { cloneDeep, getOperationDefinition, Observable, iterateObserversSafely, isNonEmptyArray, fixObservableSubclass, getQueryDefinition, mergeOptions, } from \"../utilities/index.js\";\nvar assign = Object.assign, hasOwnProperty = Object.hasOwnProperty;\nvar ObservableQuery = (function (_super) {\n __extends(ObservableQuery, _super);\n function ObservableQuery(_a) {\n var queryManager = _a.queryManager, queryInfo = _a.queryInfo, options = _a.options;\n var _this = _super.call(this, function (observer) {\n try {\n var subObserver = observer._subscription._observer;\n if (subObserver && !subObserver.error) {\n subObserver.error = defaultSubscriptionObserverErrorCallback;\n }\n }\n catch (_a) { }\n var first = !_this.observers.size;\n _this.observers.add(observer);\n var last = _this.last;\n if (last && last.error) {\n observer.error && observer.error(last.error);\n }\n else if (last && last.result) {\n observer.next && observer.next(last.result);\n }\n if (first) {\n _this.reobserve().catch(function () { });\n }\n return function () {\n if (_this.observers.delete(observer) && !_this.observers.size) {\n _this.tearDownQuery();\n }\n };\n }) || this;\n _this.observers = new Set();\n _this.subscriptions = new Set();\n _this.queryInfo = queryInfo;\n _this.queryManager = queryManager;\n _this.isTornDown = false;\n _this.options = __assign({ initialFetchPolicy: options.fetchPolicy || \"cache-first\" }, options);\n _this.queryId = queryInfo.queryId || queryManager.generateQueryId();\n var opDef = getOperationDefinition(_this.query);\n _this.queryName = opDef && opDef.name && opDef.name.value;\n return _this;\n }\n Object.defineProperty(ObservableQuery.prototype, \"query\", {\n get: function () {\n return this.queryManager.transform(this.options.query).document;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ObservableQuery.prototype, \"variables\", {\n get: function () {\n return this.options.variables;\n },\n enumerable: false,\n configurable: true\n });\n ObservableQuery.prototype.result = function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var observer = {\n next: function (result) {\n resolve(result);\n _this.observers.delete(observer);\n if (!_this.observers.size) {\n _this.queryManager.removeQuery(_this.queryId);\n }\n setTimeout(function () {\n subscription.unsubscribe();\n }, 0);\n },\n error: reject,\n };\n var subscription = _this.subscribe(observer);\n });\n };\n ObservableQuery.prototype.getCurrentResult = function (saveAsLastResult) {\n if (saveAsLastResult === void 0) { saveAsLastResult = true; }\n var lastResult = this.getLastResult(true);\n var networkStatus = this.queryInfo.networkStatus ||\n (lastResult && lastResult.networkStatus) ||\n NetworkStatus.ready;\n var result = __assign(__assign({}, lastResult), { loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus });\n var _a = this.options.fetchPolicy, fetchPolicy = _a === void 0 ? \"cache-first\" : _a;\n if (fetchPolicy === 'network-only' ||\n fetchPolicy === 'no-cache' ||\n fetchPolicy === 'standby' ||\n this.queryManager.transform(this.options.query).hasForcedResolvers) {\n }\n else {\n var diff = this.queryInfo.getDiff();\n if (diff.complete || this.options.returnPartialData) {\n result.data = diff.result;\n }\n if (equal(result.data, {})) {\n result.data = void 0;\n }\n if (diff.complete) {\n delete result.partial;\n if (diff.complete &&\n result.networkStatus === NetworkStatus.loading &&\n (fetchPolicy === 'cache-first' ||\n fetchPolicy === 'cache-only')) {\n result.networkStatus = NetworkStatus.ready;\n result.loading = false;\n }\n }\n else {\n result.partial = true;\n }\n if (__DEV__ &&\n !diff.complete &&\n !this.options.partialRefetch &&\n !result.loading &&\n !result.data &&\n !result.error) {\n logMissingFieldErrors(diff.missing);\n }\n }\n if (saveAsLastResult) {\n this.updateLastResult(result);\n }\n return result;\n };\n ObservableQuery.prototype.isDifferentFromLastResult = function (newResult) {\n return !this.last || !equal(this.last.result, newResult);\n };\n ObservableQuery.prototype.getLast = function (key, variablesMustMatch) {\n var last = this.last;\n if (last &&\n last[key] &&\n (!variablesMustMatch || equal(last.variables, this.variables))) {\n return last[key];\n }\n };\n ObservableQuery.prototype.getLastResult = function (variablesMustMatch) {\n return this.getLast(\"result\", variablesMustMatch);\n };\n ObservableQuery.prototype.getLastError = function (variablesMustMatch) {\n return this.getLast(\"error\", variablesMustMatch);\n };\n ObservableQuery.prototype.resetLastResults = function () {\n delete this.last;\n this.isTornDown = false;\n };\n ObservableQuery.prototype.resetQueryStoreErrors = function () {\n this.queryManager.resetErrors(this.queryId);\n };\n ObservableQuery.prototype.refetch = function (variables) {\n var _a;\n var reobserveOptions = {\n pollInterval: 0,\n };\n var fetchPolicy = this.options.fetchPolicy;\n if (fetchPolicy === 'cache-and-network') {\n reobserveOptions.fetchPolicy = fetchPolicy;\n }\n else if (fetchPolicy === 'no-cache') {\n reobserveOptions.fetchPolicy = 'no-cache';\n }\n else {\n reobserveOptions.fetchPolicy = 'network-only';\n }\n if (__DEV__ && variables && hasOwnProperty.call(variables, \"variables\")) {\n var queryDef = getQueryDefinition(this.query);\n var vars = queryDef.variableDefinitions;\n if (!vars || !vars.some(function (v) { return v.variable.name.value === \"variables\"; })) {\n __DEV__ && invariant.warn(\"Called refetch(\".concat(JSON.stringify(variables), \") for query \").concat(((_a = queryDef.name) === null || _a === void 0 ? void 0 : _a.value) || JSON.stringify(queryDef), \", which does not declare a $variables variable.\\nDid you mean to call refetch(variables) instead of refetch({ variables })?\"));\n }\n }\n if (variables && !equal(this.options.variables, variables)) {\n reobserveOptions.variables = this.options.variables = __assign(__assign({}, this.options.variables), variables);\n }\n this.queryInfo.resetLastWrite();\n return this.reobserve(reobserveOptions, NetworkStatus.refetch);\n };\n ObservableQuery.prototype.fetchMore = function (fetchMoreOptions) {\n var _this = this;\n var combinedOptions = __assign(__assign({}, (fetchMoreOptions.query ? fetchMoreOptions : __assign(__assign(__assign(__assign({}, this.options), { query: this.query }), fetchMoreOptions), { variables: __assign(__assign({}, this.options.variables), fetchMoreOptions.variables) }))), { fetchPolicy: \"no-cache\" });\n var qid = this.queryManager.generateQueryId();\n var queryInfo = this.queryInfo;\n var originalNetworkStatus = queryInfo.networkStatus;\n queryInfo.networkStatus = NetworkStatus.fetchMore;\n if (combinedOptions.notifyOnNetworkStatusChange) {\n this.observe();\n }\n var updatedQuerySet = new Set();\n return this.queryManager.fetchQuery(qid, combinedOptions, NetworkStatus.fetchMore).then(function (fetchMoreResult) {\n _this.queryManager.removeQuery(qid);\n if (queryInfo.networkStatus === NetworkStatus.fetchMore) {\n queryInfo.networkStatus = originalNetworkStatus;\n }\n _this.queryManager.cache.batch({\n update: function (cache) {\n var updateQuery = fetchMoreOptions.updateQuery;\n if (updateQuery) {\n cache.updateQuery({\n query: _this.query,\n variables: _this.variables,\n returnPartialData: true,\n optimistic: false,\n }, function (previous) { return updateQuery(previous, {\n fetchMoreResult: fetchMoreResult.data,\n variables: combinedOptions.variables,\n }); });\n }\n else {\n cache.writeQuery({\n query: combinedOptions.query,\n variables: combinedOptions.variables,\n data: fetchMoreResult.data,\n });\n }\n },\n onWatchUpdated: function (watch) {\n updatedQuerySet.add(watch.query);\n },\n });\n return fetchMoreResult;\n }).finally(function () {\n if (!updatedQuerySet.has(_this.query)) {\n reobserveCacheFirst(_this);\n }\n });\n };\n ObservableQuery.prototype.subscribeToMore = function (options) {\n var _this = this;\n var subscription = this.queryManager\n .startGraphQLSubscription({\n query: options.document,\n variables: options.variables,\n context: options.context,\n })\n .subscribe({\n next: function (subscriptionData) {\n var updateQuery = options.updateQuery;\n if (updateQuery) {\n _this.updateQuery(function (previous, _a) {\n var variables = _a.variables;\n return updateQuery(previous, {\n subscriptionData: subscriptionData,\n variables: variables,\n });\n });\n }\n },\n error: function (err) {\n if (options.onError) {\n options.onError(err);\n return;\n }\n __DEV__ && invariant.error('Unhandled GraphQL subscription error', err);\n },\n });\n this.subscriptions.add(subscription);\n return function () {\n if (_this.subscriptions.delete(subscription)) {\n subscription.unsubscribe();\n }\n };\n };\n ObservableQuery.prototype.setOptions = function (newOptions) {\n return this.reobserve(newOptions);\n };\n ObservableQuery.prototype.setVariables = function (variables) {\n if (equal(this.variables, variables)) {\n return this.observers.size\n ? this.result()\n : Promise.resolve();\n }\n this.options.variables = variables;\n if (!this.observers.size) {\n return Promise.resolve();\n }\n return this.reobserve({\n fetchPolicy: this.options.initialFetchPolicy,\n variables: variables,\n }, NetworkStatus.setVariables);\n };\n ObservableQuery.prototype.updateQuery = function (mapFn) {\n var queryManager = this.queryManager;\n var result = queryManager.cache.diff({\n query: this.options.query,\n variables: this.variables,\n returnPartialData: true,\n optimistic: false,\n }).result;\n var newResult = mapFn(result, {\n variables: this.variables,\n });\n if (newResult) {\n queryManager.cache.writeQuery({\n query: this.options.query,\n data: newResult,\n variables: this.variables,\n });\n queryManager.broadcastQueries();\n }\n };\n ObservableQuery.prototype.startPolling = function (pollInterval) {\n this.options.pollInterval = pollInterval;\n this.updatePolling();\n };\n ObservableQuery.prototype.stopPolling = function () {\n this.options.pollInterval = 0;\n this.updatePolling();\n };\n ObservableQuery.prototype.applyNextFetchPolicy = function (reason, options) {\n if (options.nextFetchPolicy) {\n var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? \"cache-first\" : _a, _b = options.initialFetchPolicy, initialFetchPolicy = _b === void 0 ? fetchPolicy : _b;\n if (typeof options.nextFetchPolicy === \"function\") {\n options.fetchPolicy = options.nextFetchPolicy(fetchPolicy, {\n reason: reason,\n options: options,\n observable: this,\n initialFetchPolicy: initialFetchPolicy,\n });\n }\n else if (reason === \"variables-changed\") {\n options.fetchPolicy = initialFetchPolicy;\n }\n else {\n options.fetchPolicy = options.nextFetchPolicy;\n }\n }\n return options.fetchPolicy;\n };\n ObservableQuery.prototype.fetch = function (options, newNetworkStatus) {\n this.queryManager.setObservableQuery(this);\n return this.queryManager.fetchQueryObservable(this.queryId, options, newNetworkStatus);\n };\n ObservableQuery.prototype.updatePolling = function () {\n var _this = this;\n if (this.queryManager.ssrMode) {\n return;\n }\n var _a = this, pollingInfo = _a.pollingInfo, pollInterval = _a.options.pollInterval;\n if (!pollInterval) {\n if (pollingInfo) {\n clearTimeout(pollingInfo.timeout);\n delete this.pollingInfo;\n }\n return;\n }\n if (pollingInfo &&\n pollingInfo.interval === pollInterval) {\n return;\n }\n __DEV__ ? invariant(pollInterval, 'Attempted to start a polling query without a polling interval.') : invariant(pollInterval, 10);\n var info = pollingInfo || (this.pollingInfo = {});\n info.interval = pollInterval;\n var maybeFetch = function () {\n if (_this.pollingInfo) {\n if (!isNetworkRequestInFlight(_this.queryInfo.networkStatus)) {\n _this.reobserve({\n fetchPolicy: \"network-only\",\n }, NetworkStatus.poll).then(poll, poll);\n }\n else {\n poll();\n }\n }\n ;\n };\n var poll = function () {\n var info = _this.pollingInfo;\n if (info) {\n clearTimeout(info.timeout);\n info.timeout = setTimeout(maybeFetch, info.interval);\n }\n };\n poll();\n };\n ObservableQuery.prototype.updateLastResult = function (newResult, variables) {\n if (variables === void 0) { variables = this.variables; }\n this.last = __assign(__assign({}, this.last), { result: this.queryManager.assumeImmutableResults\n ? newResult\n : cloneDeep(newResult), variables: variables });\n if (!isNonEmptyArray(newResult.errors)) {\n delete this.last.error;\n }\n return this.last;\n };\n ObservableQuery.prototype.reobserve = function (newOptions, newNetworkStatus) {\n var _this = this;\n this.isTornDown = false;\n var useDisposableConcast = newNetworkStatus === NetworkStatus.refetch ||\n newNetworkStatus === NetworkStatus.fetchMore ||\n newNetworkStatus === NetworkStatus.poll;\n var oldVariables = this.options.variables;\n var oldFetchPolicy = this.options.fetchPolicy;\n var mergedOptions = mergeOptions(this.options, newOptions || {});\n var options = useDisposableConcast\n ? mergedOptions\n : assign(this.options, mergedOptions);\n if (!useDisposableConcast) {\n this.updatePolling();\n if (newOptions &&\n newOptions.variables &&\n !equal(newOptions.variables, oldVariables) &&\n (!newOptions.fetchPolicy || newOptions.fetchPolicy === oldFetchPolicy)) {\n this.applyNextFetchPolicy(\"variables-changed\", options);\n if (newNetworkStatus === void 0) {\n newNetworkStatus = NetworkStatus.setVariables;\n }\n }\n }\n var variables = options.variables && __assign({}, options.variables);\n var concast = this.fetch(options, newNetworkStatus);\n var observer = {\n next: function (result) {\n _this.reportResult(result, variables);\n },\n error: function (error) {\n _this.reportError(error, variables);\n },\n };\n if (!useDisposableConcast) {\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer, true);\n }\n this.concast = concast;\n this.observer = observer;\n }\n concast.addObserver(observer);\n return concast.promise;\n };\n ObservableQuery.prototype.observe = function () {\n this.reportResult(this.getCurrentResult(false), this.variables);\n };\n ObservableQuery.prototype.reportResult = function (result, variables) {\n var lastError = this.getLastError();\n if (lastError || this.isDifferentFromLastResult(result)) {\n if (lastError || !result.partial || this.options.returnPartialData) {\n this.updateLastResult(result, variables);\n }\n iterateObserversSafely(this.observers, 'next', result);\n }\n };\n ObservableQuery.prototype.reportError = function (error, variables) {\n var errorResult = __assign(__assign({}, this.getLastResult()), { error: error, errors: error.graphQLErrors, networkStatus: NetworkStatus.error, loading: false });\n this.updateLastResult(errorResult, variables);\n iterateObserversSafely(this.observers, 'error', this.last.error = error);\n };\n ObservableQuery.prototype.hasObservers = function () {\n return this.observers.size > 0;\n };\n ObservableQuery.prototype.tearDownQuery = function () {\n if (this.isTornDown)\n return;\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n delete this.concast;\n delete this.observer;\n }\n this.stopPolling();\n this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });\n this.subscriptions.clear();\n this.queryManager.stopQuery(this.queryId);\n this.observers.clear();\n this.isTornDown = true;\n };\n return ObservableQuery;\n}(Observable));\nexport { ObservableQuery };\nfixObservableSubclass(ObservableQuery);\nexport function reobserveCacheFirst(obsQuery) {\n var _a = obsQuery.options, fetchPolicy = _a.fetchPolicy, nextFetchPolicy = _a.nextFetchPolicy;\n if (fetchPolicy === \"cache-and-network\" ||\n fetchPolicy === \"network-only\") {\n return obsQuery.reobserve({\n fetchPolicy: \"cache-first\",\n nextFetchPolicy: function () {\n this.nextFetchPolicy = nextFetchPolicy;\n if (typeof nextFetchPolicy === \"function\") {\n return nextFetchPolicy.apply(this, arguments);\n }\n return fetchPolicy;\n },\n });\n }\n return obsQuery.reobserve();\n}\nfunction defaultSubscriptionObserverErrorCallback(error) {\n __DEV__ && invariant.error('Unhandled error', error.message, error.stack);\n}\nexport function logMissingFieldErrors(missing) {\n if (__DEV__ && missing) {\n __DEV__ && invariant.debug(\"Missing cache result fields: \".concat(JSON.stringify(missing)), missing);\n }\n}\n//# sourceMappingURL=ObservableQuery.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { invariant } from \"../utilities/globals/index.js\";\nimport { visit, BREAK, } from 'graphql';\nimport { argumentsObjectFromField, buildQueryFromSelectionSet, createFragmentMap, getFragmentDefinitions, getMainDefinition, hasDirectives, isField, isInlineFragment, mergeDeep, mergeDeepArray, removeClientSetsFromDocument, resultKeyNameFromField, shouldInclude, } from \"../utilities/index.js\";\nimport { cacheSlot } from \"../cache/index.js\";\nvar LocalState = (function () {\n function LocalState(_a) {\n var cache = _a.cache, client = _a.client, resolvers = _a.resolvers, fragmentMatcher = _a.fragmentMatcher;\n this.cache = cache;\n if (client) {\n this.client = client;\n }\n if (resolvers) {\n this.addResolvers(resolvers);\n }\n if (fragmentMatcher) {\n this.setFragmentMatcher(fragmentMatcher);\n }\n }\n LocalState.prototype.addResolvers = function (resolvers) {\n var _this = this;\n this.resolvers = this.resolvers || {};\n if (Array.isArray(resolvers)) {\n resolvers.forEach(function (resolverGroup) {\n _this.resolvers = mergeDeep(_this.resolvers, resolverGroup);\n });\n }\n else {\n this.resolvers = mergeDeep(this.resolvers, resolvers);\n }\n };\n LocalState.prototype.setResolvers = function (resolvers) {\n this.resolvers = {};\n this.addResolvers(resolvers);\n };\n LocalState.prototype.getResolvers = function () {\n return this.resolvers || {};\n };\n LocalState.prototype.runResolvers = function (_a) {\n var document = _a.document, remoteResult = _a.remoteResult, context = _a.context, variables = _a.variables, _b = _a.onlyRunForcedResolvers, onlyRunForcedResolvers = _b === void 0 ? false : _b;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_c) {\n if (document) {\n return [2, this.resolveDocument(document, remoteResult.data, context, variables, this.fragmentMatcher, onlyRunForcedResolvers).then(function (localResult) { return (__assign(__assign({}, remoteResult), { data: localResult.result })); })];\n }\n return [2, remoteResult];\n });\n });\n };\n LocalState.prototype.setFragmentMatcher = function (fragmentMatcher) {\n this.fragmentMatcher = fragmentMatcher;\n };\n LocalState.prototype.getFragmentMatcher = function () {\n return this.fragmentMatcher;\n };\n LocalState.prototype.clientQuery = function (document) {\n if (hasDirectives(['client'], document)) {\n if (this.resolvers) {\n return document;\n }\n }\n return null;\n };\n LocalState.prototype.serverQuery = function (document) {\n return removeClientSetsFromDocument(document);\n };\n LocalState.prototype.prepareContext = function (context) {\n var cache = this.cache;\n return __assign(__assign({}, context), { cache: cache, getCacheKey: function (obj) {\n return cache.identify(obj);\n } });\n };\n LocalState.prototype.addExportedVariables = function (document, variables, context) {\n if (variables === void 0) { variables = {}; }\n if (context === void 0) { context = {}; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (document) {\n return [2, this.resolveDocument(document, this.buildRootValueFromCache(document, variables) || {}, this.prepareContext(context), variables).then(function (data) { return (__assign(__assign({}, variables), data.exportedVariables)); })];\n }\n return [2, __assign({}, variables)];\n });\n });\n };\n LocalState.prototype.shouldForceResolvers = function (document) {\n var forceResolvers = false;\n visit(document, {\n Directive: {\n enter: function (node) {\n if (node.name.value === 'client' && node.arguments) {\n forceResolvers = node.arguments.some(function (arg) {\n return arg.name.value === 'always' &&\n arg.value.kind === 'BooleanValue' &&\n arg.value.value === true;\n });\n if (forceResolvers) {\n return BREAK;\n }\n }\n },\n },\n });\n return forceResolvers;\n };\n LocalState.prototype.buildRootValueFromCache = function (document, variables) {\n return this.cache.diff({\n query: buildQueryFromSelectionSet(document),\n variables: variables,\n returnPartialData: true,\n optimistic: false,\n }).result;\n };\n LocalState.prototype.resolveDocument = function (document, rootValue, context, variables, fragmentMatcher, onlyRunForcedResolvers) {\n if (context === void 0) { context = {}; }\n if (variables === void 0) { variables = {}; }\n if (fragmentMatcher === void 0) { fragmentMatcher = function () { return true; }; }\n if (onlyRunForcedResolvers === void 0) { onlyRunForcedResolvers = false; }\n return __awaiter(this, void 0, void 0, function () {\n var mainDefinition, fragments, fragmentMap, definitionOperation, defaultOperationType, _a, cache, client, execContext;\n return __generator(this, function (_b) {\n mainDefinition = getMainDefinition(document);\n fragments = getFragmentDefinitions(document);\n fragmentMap = createFragmentMap(fragments);\n definitionOperation = mainDefinition\n .operation;\n defaultOperationType = definitionOperation\n ? definitionOperation.charAt(0).toUpperCase() +\n definitionOperation.slice(1)\n : 'Query';\n _a = this, cache = _a.cache, client = _a.client;\n execContext = {\n fragmentMap: fragmentMap,\n context: __assign(__assign({}, context), { cache: cache, client: client }),\n variables: variables,\n fragmentMatcher: fragmentMatcher,\n defaultOperationType: defaultOperationType,\n exportedVariables: {},\n onlyRunForcedResolvers: onlyRunForcedResolvers,\n };\n return [2, this.resolveSelectionSet(mainDefinition.selectionSet, rootValue, execContext).then(function (result) { return ({\n result: result,\n exportedVariables: execContext.exportedVariables,\n }); })];\n });\n });\n };\n LocalState.prototype.resolveSelectionSet = function (selectionSet, rootValue, execContext) {\n return __awaiter(this, void 0, void 0, function () {\n var fragmentMap, context, variables, resultsToMerge, execute;\n var _this = this;\n return __generator(this, function (_a) {\n fragmentMap = execContext.fragmentMap, context = execContext.context, variables = execContext.variables;\n resultsToMerge = [rootValue];\n execute = function (selection) { return __awaiter(_this, void 0, void 0, function () {\n var fragment, typeCondition;\n return __generator(this, function (_a) {\n if (!shouldInclude(selection, variables)) {\n return [2];\n }\n if (isField(selection)) {\n return [2, this.resolveField(selection, rootValue, execContext).then(function (fieldResult) {\n var _a;\n if (typeof fieldResult !== 'undefined') {\n resultsToMerge.push((_a = {},\n _a[resultKeyNameFromField(selection)] = fieldResult,\n _a));\n }\n })];\n }\n if (isInlineFragment(selection)) {\n fragment = selection;\n }\n else {\n fragment = fragmentMap[selection.name.value];\n __DEV__ ? invariant(fragment, \"No fragment named \".concat(selection.name.value)) : invariant(fragment, 9);\n }\n if (fragment && fragment.typeCondition) {\n typeCondition = fragment.typeCondition.name.value;\n if (execContext.fragmentMatcher(rootValue, typeCondition, context)) {\n return [2, this.resolveSelectionSet(fragment.selectionSet, rootValue, execContext).then(function (fragmentResult) {\n resultsToMerge.push(fragmentResult);\n })];\n }\n }\n return [2];\n });\n }); };\n return [2, Promise.all(selectionSet.selections.map(execute)).then(function () {\n return mergeDeepArray(resultsToMerge);\n })];\n });\n });\n };\n LocalState.prototype.resolveField = function (field, rootValue, execContext) {\n return __awaiter(this, void 0, void 0, function () {\n var variables, fieldName, aliasedFieldName, aliasUsed, defaultResult, resultPromise, resolverType, resolverMap, resolve;\n var _this = this;\n return __generator(this, function (_a) {\n variables = execContext.variables;\n fieldName = field.name.value;\n aliasedFieldName = resultKeyNameFromField(field);\n aliasUsed = fieldName !== aliasedFieldName;\n defaultResult = rootValue[aliasedFieldName] || rootValue[fieldName];\n resultPromise = Promise.resolve(defaultResult);\n if (!execContext.onlyRunForcedResolvers ||\n this.shouldForceResolvers(field)) {\n resolverType = rootValue.__typename || execContext.defaultOperationType;\n resolverMap = this.resolvers && this.resolvers[resolverType];\n if (resolverMap) {\n resolve = resolverMap[aliasUsed ? fieldName : aliasedFieldName];\n if (resolve) {\n resultPromise = Promise.resolve(cacheSlot.withValue(this.cache, resolve, [\n rootValue,\n argumentsObjectFromField(field, variables),\n execContext.context,\n { field: field, fragmentMap: execContext.fragmentMap },\n ]));\n }\n }\n }\n return [2, resultPromise.then(function (result) {\n if (result === void 0) { result = defaultResult; }\n if (field.directives) {\n field.directives.forEach(function (directive) {\n if (directive.name.value === 'export' && directive.arguments) {\n directive.arguments.forEach(function (arg) {\n if (arg.name.value === 'as' && arg.value.kind === 'StringValue') {\n execContext.exportedVariables[arg.value.value] = result;\n }\n });\n }\n });\n }\n if (!field.selectionSet) {\n return result;\n }\n if (result == null) {\n return result;\n }\n if (Array.isArray(result)) {\n return _this.resolveSubSelectedArray(field, result, execContext);\n }\n if (field.selectionSet) {\n return _this.resolveSelectionSet(field.selectionSet, result, execContext);\n }\n })];\n });\n });\n };\n LocalState.prototype.resolveSubSelectedArray = function (field, result, execContext) {\n var _this = this;\n return Promise.all(result.map(function (item) {\n if (item === null) {\n return null;\n }\n if (Array.isArray(item)) {\n return _this.resolveSubSelectedArray(field, item, execContext);\n }\n if (field.selectionSet) {\n return _this.resolveSelectionSet(field.selectionSet, item, execContext);\n }\n }));\n };\n return LocalState;\n}());\nexport { LocalState };\n//# sourceMappingURL=LocalState.js.map","import { __assign } from \"tslib\";\nimport { equal } from \"@wry/equality\";\nimport { reobserveCacheFirst } from \"./ObservableQuery.js\";\nimport { isNonEmptyArray, graphQLResultHasError, canUseWeakMap, } from \"../utilities/index.js\";\nimport { NetworkStatus, isNetworkRequestInFlight, } from \"./networkStatus.js\";\n;\nvar destructiveMethodCounts = new (canUseWeakMap ? WeakMap : Map)();\nfunction wrapDestructiveCacheMethod(cache, methodName) {\n var original = cache[methodName];\n if (typeof original === \"function\") {\n cache[methodName] = function () {\n destructiveMethodCounts.set(cache, (destructiveMethodCounts.get(cache) + 1) % 1e15);\n return original.apply(this, arguments);\n };\n }\n}\nfunction cancelNotifyTimeout(info) {\n if (info[\"notifyTimeout\"]) {\n clearTimeout(info[\"notifyTimeout\"]);\n info[\"notifyTimeout\"] = void 0;\n }\n}\nvar QueryInfo = (function () {\n function QueryInfo(queryManager, queryId) {\n if (queryId === void 0) { queryId = queryManager.generateQueryId(); }\n this.queryId = queryId;\n this.listeners = new Set();\n this.document = null;\n this.lastRequestId = 1;\n this.subscriptions = new Set();\n this.stopped = false;\n this.dirty = false;\n this.observableQuery = null;\n var cache = this.cache = queryManager.cache;\n if (!destructiveMethodCounts.has(cache)) {\n destructiveMethodCounts.set(cache, 0);\n wrapDestructiveCacheMethod(cache, \"evict\");\n wrapDestructiveCacheMethod(cache, \"modify\");\n wrapDestructiveCacheMethod(cache, \"reset\");\n }\n }\n QueryInfo.prototype.init = function (query) {\n var networkStatus = query.networkStatus || NetworkStatus.loading;\n if (this.variables &&\n this.networkStatus !== NetworkStatus.loading &&\n !equal(this.variables, query.variables)) {\n networkStatus = NetworkStatus.setVariables;\n }\n if (!equal(query.variables, this.variables)) {\n this.lastDiff = void 0;\n }\n Object.assign(this, {\n document: query.document,\n variables: query.variables,\n networkError: null,\n graphQLErrors: this.graphQLErrors || [],\n networkStatus: networkStatus,\n });\n if (query.observableQuery) {\n this.setObservableQuery(query.observableQuery);\n }\n if (query.lastRequestId) {\n this.lastRequestId = query.lastRequestId;\n }\n return this;\n };\n QueryInfo.prototype.reset = function () {\n cancelNotifyTimeout(this);\n this.lastDiff = void 0;\n this.dirty = false;\n };\n QueryInfo.prototype.getDiff = function (variables) {\n if (variables === void 0) { variables = this.variables; }\n var options = this.getDiffOptions(variables);\n if (this.lastDiff && equal(options, this.lastDiff.options)) {\n return this.lastDiff.diff;\n }\n this.updateWatch(this.variables = variables);\n var oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return { complete: false };\n }\n var diff = this.cache.diff(options);\n this.updateLastDiff(diff, options);\n return diff;\n };\n QueryInfo.prototype.updateLastDiff = function (diff, options) {\n this.lastDiff = diff ? {\n diff: diff,\n options: options || this.getDiffOptions(),\n } : void 0;\n };\n QueryInfo.prototype.getDiffOptions = function (variables) {\n var _a;\n if (variables === void 0) { variables = this.variables; }\n return {\n query: this.document,\n variables: variables,\n returnPartialData: true,\n optimistic: true,\n canonizeResults: (_a = this.observableQuery) === null || _a === void 0 ? void 0 : _a.options.canonizeResults,\n };\n };\n QueryInfo.prototype.setDiff = function (diff) {\n var _this = this;\n var oldDiff = this.lastDiff && this.lastDiff.diff;\n this.updateLastDiff(diff);\n if (!this.dirty &&\n !equal(oldDiff && oldDiff.result, diff && diff.result)) {\n this.dirty = true;\n if (!this.notifyTimeout) {\n this.notifyTimeout = setTimeout(function () { return _this.notify(); }, 0);\n }\n }\n };\n QueryInfo.prototype.setObservableQuery = function (oq) {\n var _this = this;\n if (oq === this.observableQuery)\n return;\n if (this.oqListener) {\n this.listeners.delete(this.oqListener);\n }\n this.observableQuery = oq;\n if (oq) {\n oq[\"queryInfo\"] = this;\n this.listeners.add(this.oqListener = function () {\n var diff = _this.getDiff();\n if (diff.fromOptimisticTransaction) {\n oq[\"observe\"]();\n }\n else {\n reobserveCacheFirst(oq);\n }\n });\n }\n else {\n delete this.oqListener;\n }\n };\n QueryInfo.prototype.notify = function () {\n var _this = this;\n cancelNotifyTimeout(this);\n if (this.shouldNotify()) {\n this.listeners.forEach(function (listener) { return listener(_this); });\n }\n this.dirty = false;\n };\n QueryInfo.prototype.shouldNotify = function () {\n if (!this.dirty || !this.listeners.size) {\n return false;\n }\n if (isNetworkRequestInFlight(this.networkStatus) &&\n this.observableQuery) {\n var fetchPolicy = this.observableQuery.options.fetchPolicy;\n if (fetchPolicy !== \"cache-only\" &&\n fetchPolicy !== \"cache-and-network\") {\n return false;\n }\n }\n return true;\n };\n QueryInfo.prototype.stop = function () {\n if (!this.stopped) {\n this.stopped = true;\n this.reset();\n this.cancel();\n this.cancel = QueryInfo.prototype.cancel;\n this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });\n var oq = this.observableQuery;\n if (oq)\n oq.stopPolling();\n }\n };\n QueryInfo.prototype.cancel = function () { };\n QueryInfo.prototype.updateWatch = function (variables) {\n var _this = this;\n if (variables === void 0) { variables = this.variables; }\n var oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return;\n }\n var watchOptions = __assign(__assign({}, this.getDiffOptions(variables)), { watcher: this, callback: function (diff) { return _this.setDiff(diff); } });\n if (!this.lastWatch ||\n !equal(watchOptions, this.lastWatch)) {\n this.cancel();\n this.cancel = this.cache.watch(this.lastWatch = watchOptions);\n }\n };\n QueryInfo.prototype.resetLastWrite = function () {\n this.lastWrite = void 0;\n };\n QueryInfo.prototype.shouldWrite = function (result, variables) {\n var lastWrite = this.lastWrite;\n return !(lastWrite &&\n lastWrite.dmCount === destructiveMethodCounts.get(this.cache) &&\n equal(variables, lastWrite.variables) &&\n equal(result.data, lastWrite.result.data));\n };\n QueryInfo.prototype.markResult = function (result, options, cacheWriteBehavior) {\n var _this = this;\n this.graphQLErrors = isNonEmptyArray(result.errors) ? result.errors : [];\n this.reset();\n if (options.fetchPolicy === 'no-cache') {\n this.updateLastDiff({ result: result.data, complete: true }, this.getDiffOptions(options.variables));\n }\n else if (cacheWriteBehavior !== 0) {\n if (shouldWriteResult(result, options.errorPolicy)) {\n this.cache.performTransaction(function (cache) {\n if (_this.shouldWrite(result, options.variables)) {\n cache.writeQuery({\n query: _this.document,\n data: result.data,\n variables: options.variables,\n overwrite: cacheWriteBehavior === 1,\n });\n _this.lastWrite = {\n result: result,\n variables: options.variables,\n dmCount: destructiveMethodCounts.get(_this.cache),\n };\n }\n else {\n if (_this.lastDiff &&\n _this.lastDiff.diff.complete) {\n result.data = _this.lastDiff.diff.result;\n return;\n }\n }\n var diffOptions = _this.getDiffOptions(options.variables);\n var diff = cache.diff(diffOptions);\n if (!_this.stopped) {\n _this.updateWatch(options.variables);\n }\n _this.updateLastDiff(diff, diffOptions);\n if (diff.complete) {\n result.data = diff.result;\n }\n });\n }\n else {\n this.lastWrite = void 0;\n }\n }\n };\n QueryInfo.prototype.markReady = function () {\n this.networkError = null;\n return this.networkStatus = NetworkStatus.ready;\n };\n QueryInfo.prototype.markError = function (error) {\n this.networkStatus = NetworkStatus.error;\n this.lastWrite = void 0;\n this.reset();\n if (error.graphQLErrors) {\n this.graphQLErrors = error.graphQLErrors;\n }\n if (error.networkError) {\n this.networkError = error.networkError;\n }\n return error;\n };\n return QueryInfo;\n}());\nexport { QueryInfo };\nexport function shouldWriteResult(result, errorPolicy) {\n if (errorPolicy === void 0) { errorPolicy = \"none\"; }\n var ignoreErrors = errorPolicy === \"ignore\" ||\n errorPolicy === \"all\";\n var writeWithErrors = !graphQLResultHasError(result);\n if (!writeWithErrors && ignoreErrors && result.data) {\n writeWithErrors = true;\n }\n return writeWithErrors;\n}\n//# sourceMappingURL=QueryInfo.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { invariant, InvariantError } from \"../utilities/globals/index.js\";\nimport { equal } from '@wry/equality';\nimport { execute } from \"../link/core/index.js\";\nimport { canonicalStringify } from \"../cache/index.js\";\nimport { getDefaultValues, getOperationDefinition, getOperationName, hasClientExports, graphQLResultHasError, removeConnectionDirectiveFromDocument, canUseWeakMap, Observable, asyncMap, isNonEmptyArray, Concast, makeUniqueId, isDocumentNode, isNonNullObject, } from \"../utilities/index.js\";\nimport { ApolloError, isApolloError } from \"../errors/index.js\";\nimport { ObservableQuery, logMissingFieldErrors } from \"./ObservableQuery.js\";\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport { LocalState } from \"./LocalState.js\";\nimport { QueryInfo, shouldWriteResult, } from \"./QueryInfo.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar QueryManager = (function () {\n function QueryManager(_a) {\n var cache = _a.cache, link = _a.link, defaultOptions = _a.defaultOptions, _b = _a.queryDeduplication, queryDeduplication = _b === void 0 ? false : _b, onBroadcast = _a.onBroadcast, _c = _a.ssrMode, ssrMode = _c === void 0 ? false : _c, _d = _a.clientAwareness, clientAwareness = _d === void 0 ? {} : _d, localState = _a.localState, assumeImmutableResults = _a.assumeImmutableResults;\n this.clientAwareness = {};\n this.queries = new Map();\n this.fetchCancelFns = new Map();\n this.transformCache = new (canUseWeakMap ? WeakMap : Map)();\n this.queryIdCounter = 1;\n this.requestIdCounter = 1;\n this.mutationIdCounter = 1;\n this.inFlightLinkObservables = new Map();\n this.cache = cache;\n this.link = link;\n this.defaultOptions = defaultOptions || Object.create(null);\n this.queryDeduplication = queryDeduplication;\n this.clientAwareness = clientAwareness;\n this.localState = localState || new LocalState({ cache: cache });\n this.ssrMode = ssrMode;\n this.assumeImmutableResults = !!assumeImmutableResults;\n if ((this.onBroadcast = onBroadcast)) {\n this.mutationStore = Object.create(null);\n }\n }\n QueryManager.prototype.stop = function () {\n var _this = this;\n this.queries.forEach(function (_info, queryId) {\n _this.stopQueryNoBroadcast(queryId);\n });\n this.cancelPendingFetches(__DEV__ ? new InvariantError('QueryManager stopped while query was in flight') : new InvariantError(11));\n };\n QueryManager.prototype.cancelPendingFetches = function (error) {\n this.fetchCancelFns.forEach(function (cancel) { return cancel(error); });\n this.fetchCancelFns.clear();\n };\n QueryManager.prototype.mutate = function (_a) {\n var _b, _c;\n var mutation = _a.mutation, variables = _a.variables, optimisticResponse = _a.optimisticResponse, updateQueries = _a.updateQueries, _d = _a.refetchQueries, refetchQueries = _d === void 0 ? [] : _d, _e = _a.awaitRefetchQueries, awaitRefetchQueries = _e === void 0 ? false : _e, updateWithProxyFn = _a.update, onQueryUpdated = _a.onQueryUpdated, _f = _a.fetchPolicy, fetchPolicy = _f === void 0 ? ((_b = this.defaultOptions.mutate) === null || _b === void 0 ? void 0 : _b.fetchPolicy) || \"network-only\" : _f, _g = _a.errorPolicy, errorPolicy = _g === void 0 ? ((_c = this.defaultOptions.mutate) === null || _c === void 0 ? void 0 : _c.errorPolicy) || \"none\" : _g, keepRootFields = _a.keepRootFields, context = _a.context;\n return __awaiter(this, void 0, void 0, function () {\n var mutationId, mutationStoreValue, self;\n return __generator(this, function (_h) {\n switch (_h.label) {\n case 0:\n __DEV__ ? invariant(mutation, 'mutation option is required. You must specify your GraphQL document in the mutation option.') : invariant(mutation, 12);\n __DEV__ ? invariant(fetchPolicy === 'network-only' ||\n fetchPolicy === 'no-cache', \"Mutations support only 'network-only' or 'no-cache' fetchPolicy strings. The default `network-only` behavior automatically writes mutation results to the cache. Passing `no-cache` skips the cache write.\") : invariant(fetchPolicy === 'network-only' ||\n fetchPolicy === 'no-cache', 13);\n mutationId = this.generateMutationId();\n mutation = this.transform(mutation).document;\n variables = this.getVariables(mutation, variables);\n if (!this.transform(mutation).hasClientExports) return [3, 2];\n return [4, this.localState.addExportedVariables(mutation, variables, context)];\n case 1:\n variables = (_h.sent());\n _h.label = 2;\n case 2:\n mutationStoreValue = this.mutationStore &&\n (this.mutationStore[mutationId] = {\n mutation: mutation,\n variables: variables,\n loading: true,\n error: null,\n });\n if (optimisticResponse) {\n this.markMutationOptimistic(optimisticResponse, {\n mutationId: mutationId,\n document: mutation,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n context: context,\n updateQueries: updateQueries,\n update: updateWithProxyFn,\n keepRootFields: keepRootFields,\n });\n }\n this.broadcastQueries();\n self = this;\n return [2, new Promise(function (resolve, reject) {\n return asyncMap(self.getObservableFromLink(mutation, __assign(__assign({}, context), { optimisticResponse: optimisticResponse }), variables, false), function (result) {\n if (graphQLResultHasError(result) && errorPolicy === 'none') {\n throw new ApolloError({\n graphQLErrors: result.errors,\n });\n }\n if (mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = null;\n }\n var storeResult = __assign({}, result);\n if (typeof refetchQueries === \"function\") {\n refetchQueries = refetchQueries(storeResult);\n }\n if (errorPolicy === 'ignore' &&\n graphQLResultHasError(storeResult)) {\n delete storeResult.errors;\n }\n return self.markMutationResult({\n mutationId: mutationId,\n result: storeResult,\n document: mutation,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n context: context,\n update: updateWithProxyFn,\n updateQueries: updateQueries,\n awaitRefetchQueries: awaitRefetchQueries,\n refetchQueries: refetchQueries,\n removeOptimistic: optimisticResponse ? mutationId : void 0,\n onQueryUpdated: onQueryUpdated,\n keepRootFields: keepRootFields,\n });\n }).subscribe({\n next: function (storeResult) {\n self.broadcastQueries();\n resolve(storeResult);\n },\n error: function (err) {\n if (mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = err;\n }\n if (optimisticResponse) {\n self.cache.removeOptimistic(mutationId);\n }\n self.broadcastQueries();\n reject(err instanceof ApolloError ? err : new ApolloError({\n networkError: err,\n }));\n },\n });\n })];\n }\n });\n });\n };\n QueryManager.prototype.markMutationResult = function (mutation, cache) {\n var _this = this;\n if (cache === void 0) { cache = this.cache; }\n var result = mutation.result;\n var cacheWrites = [];\n var skipCache = mutation.fetchPolicy === \"no-cache\";\n if (!skipCache && shouldWriteResult(result, mutation.errorPolicy)) {\n cacheWrites.push({\n result: result.data,\n dataId: 'ROOT_MUTATION',\n query: mutation.document,\n variables: mutation.variables,\n });\n var updateQueries_1 = mutation.updateQueries;\n if (updateQueries_1) {\n this.queries.forEach(function (_a, queryId) {\n var observableQuery = _a.observableQuery;\n var queryName = observableQuery && observableQuery.queryName;\n if (!queryName || !hasOwnProperty.call(updateQueries_1, queryName)) {\n return;\n }\n var updater = updateQueries_1[queryName];\n var _b = _this.queries.get(queryId), document = _b.document, variables = _b.variables;\n var _c = cache.diff({\n query: document,\n variables: variables,\n returnPartialData: true,\n optimistic: false,\n }), currentQueryResult = _c.result, complete = _c.complete;\n if (complete && currentQueryResult) {\n var nextQueryResult = updater(currentQueryResult, {\n mutationResult: result,\n queryName: document && getOperationName(document) || void 0,\n queryVariables: variables,\n });\n if (nextQueryResult) {\n cacheWrites.push({\n result: nextQueryResult,\n dataId: 'ROOT_QUERY',\n query: document,\n variables: variables,\n });\n }\n }\n });\n }\n }\n if (cacheWrites.length > 0 ||\n mutation.refetchQueries ||\n mutation.update ||\n mutation.onQueryUpdated ||\n mutation.removeOptimistic) {\n var results_1 = [];\n this.refetchQueries({\n updateCache: function (cache) {\n if (!skipCache) {\n cacheWrites.forEach(function (write) { return cache.write(write); });\n }\n var update = mutation.update;\n if (update) {\n if (!skipCache) {\n var diff = cache.diff({\n id: \"ROOT_MUTATION\",\n query: _this.transform(mutation.document).asQuery,\n variables: mutation.variables,\n optimistic: false,\n returnPartialData: true,\n });\n if (diff.complete) {\n result = __assign(__assign({}, result), { data: diff.result });\n }\n }\n update(cache, result, {\n context: mutation.context,\n variables: mutation.variables,\n });\n }\n if (!skipCache && !mutation.keepRootFields) {\n cache.modify({\n id: 'ROOT_MUTATION',\n fields: function (value, _a) {\n var fieldName = _a.fieldName, DELETE = _a.DELETE;\n return fieldName === \"__typename\" ? value : DELETE;\n },\n });\n }\n },\n include: mutation.refetchQueries,\n optimistic: false,\n removeOptimistic: mutation.removeOptimistic,\n onQueryUpdated: mutation.onQueryUpdated || null,\n }).forEach(function (result) { return results_1.push(result); });\n if (mutation.awaitRefetchQueries || mutation.onQueryUpdated) {\n return Promise.all(results_1).then(function () { return result; });\n }\n }\n return Promise.resolve(result);\n };\n QueryManager.prototype.markMutationOptimistic = function (optimisticResponse, mutation) {\n var _this = this;\n var data = typeof optimisticResponse === \"function\"\n ? optimisticResponse(mutation.variables)\n : optimisticResponse;\n return this.cache.recordOptimisticTransaction(function (cache) {\n try {\n _this.markMutationResult(__assign(__assign({}, mutation), { result: { data: data } }), cache);\n }\n catch (error) {\n __DEV__ && invariant.error(error);\n }\n }, mutation.mutationId);\n };\n QueryManager.prototype.fetchQuery = function (queryId, options, networkStatus) {\n return this.fetchQueryObservable(queryId, options, networkStatus).promise;\n };\n QueryManager.prototype.getQueryStore = function () {\n var store = Object.create(null);\n this.queries.forEach(function (info, queryId) {\n store[queryId] = {\n variables: info.variables,\n networkStatus: info.networkStatus,\n networkError: info.networkError,\n graphQLErrors: info.graphQLErrors,\n };\n });\n return store;\n };\n QueryManager.prototype.resetErrors = function (queryId) {\n var queryInfo = this.queries.get(queryId);\n if (queryInfo) {\n queryInfo.networkError = undefined;\n queryInfo.graphQLErrors = [];\n }\n };\n QueryManager.prototype.transform = function (document) {\n var transformCache = this.transformCache;\n if (!transformCache.has(document)) {\n var transformed = this.cache.transformDocument(document);\n var forLink = removeConnectionDirectiveFromDocument(this.cache.transformForLink(transformed));\n var clientQuery = this.localState.clientQuery(transformed);\n var serverQuery = forLink && this.localState.serverQuery(forLink);\n var cacheEntry_1 = {\n document: transformed,\n hasClientExports: hasClientExports(transformed),\n hasForcedResolvers: this.localState.shouldForceResolvers(transformed),\n clientQuery: clientQuery,\n serverQuery: serverQuery,\n defaultVars: getDefaultValues(getOperationDefinition(transformed)),\n asQuery: __assign(__assign({}, transformed), { definitions: transformed.definitions.map(function (def) {\n if (def.kind === \"OperationDefinition\" &&\n def.operation !== \"query\") {\n return __assign(__assign({}, def), { operation: \"query\" });\n }\n return def;\n }) })\n };\n var add = function (doc) {\n if (doc && !transformCache.has(doc)) {\n transformCache.set(doc, cacheEntry_1);\n }\n };\n add(document);\n add(transformed);\n add(clientQuery);\n add(serverQuery);\n }\n return transformCache.get(document);\n };\n QueryManager.prototype.getVariables = function (document, variables) {\n return __assign(__assign({}, this.transform(document).defaultVars), variables);\n };\n QueryManager.prototype.watchQuery = function (options) {\n options = __assign(__assign({}, options), { variables: this.getVariables(options.query, options.variables) });\n if (typeof options.notifyOnNetworkStatusChange === 'undefined') {\n options.notifyOnNetworkStatusChange = false;\n }\n var queryInfo = new QueryInfo(this);\n var observable = new ObservableQuery({\n queryManager: this,\n queryInfo: queryInfo,\n options: options,\n });\n this.queries.set(observable.queryId, queryInfo);\n queryInfo.init({\n document: observable.query,\n observableQuery: observable,\n variables: observable.variables,\n });\n return observable;\n };\n QueryManager.prototype.query = function (options, queryId) {\n var _this = this;\n if (queryId === void 0) { queryId = this.generateQueryId(); }\n __DEV__ ? invariant(options.query, 'query option is required. You must specify your GraphQL document ' +\n 'in the query option.') : invariant(options.query, 14);\n __DEV__ ? invariant(options.query.kind === 'Document', 'You must wrap the query string in a \"gql\" tag.') : invariant(options.query.kind === 'Document', 15);\n __DEV__ ? invariant(!options.returnPartialData, 'returnPartialData option only supported on watchQuery.') : invariant(!options.returnPartialData, 16);\n __DEV__ ? invariant(!options.pollInterval, 'pollInterval option only supported on watchQuery.') : invariant(!options.pollInterval, 17);\n return this.fetchQuery(queryId, options).finally(function () { return _this.stopQuery(queryId); });\n };\n QueryManager.prototype.generateQueryId = function () {\n return String(this.queryIdCounter++);\n };\n QueryManager.prototype.generateRequestId = function () {\n return this.requestIdCounter++;\n };\n QueryManager.prototype.generateMutationId = function () {\n return String(this.mutationIdCounter++);\n };\n QueryManager.prototype.stopQueryInStore = function (queryId) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.broadcastQueries();\n };\n QueryManager.prototype.stopQueryInStoreNoBroadcast = function (queryId) {\n var queryInfo = this.queries.get(queryId);\n if (queryInfo)\n queryInfo.stop();\n };\n QueryManager.prototype.clearStore = function (options) {\n if (options === void 0) { options = {\n discardWatches: true,\n }; }\n this.cancelPendingFetches(__DEV__ ? new InvariantError('Store reset while query was in flight (not completed in link chain)') : new InvariantError(18));\n this.queries.forEach(function (queryInfo) {\n if (queryInfo.observableQuery) {\n queryInfo.networkStatus = NetworkStatus.loading;\n }\n else {\n queryInfo.stop();\n }\n });\n if (this.mutationStore) {\n this.mutationStore = Object.create(null);\n }\n return this.cache.reset(options);\n };\n QueryManager.prototype.getObservableQueries = function (include) {\n var _this = this;\n if (include === void 0) { include = \"active\"; }\n var queries = new Map();\n var queryNamesAndDocs = new Map();\n var legacyQueryOptions = new Set();\n if (Array.isArray(include)) {\n include.forEach(function (desc) {\n if (typeof desc === \"string\") {\n queryNamesAndDocs.set(desc, false);\n }\n else if (isDocumentNode(desc)) {\n queryNamesAndDocs.set(_this.transform(desc).document, false);\n }\n else if (isNonNullObject(desc) && desc.query) {\n legacyQueryOptions.add(desc);\n }\n });\n }\n this.queries.forEach(function (_a, queryId) {\n var oq = _a.observableQuery, document = _a.document;\n if (oq) {\n if (include === \"all\") {\n queries.set(queryId, oq);\n return;\n }\n var queryName = oq.queryName, fetchPolicy = oq.options.fetchPolicy;\n if (fetchPolicy === \"standby\" ||\n (include === \"active\" && !oq.hasObservers())) {\n return;\n }\n if (include === \"active\" ||\n (queryName && queryNamesAndDocs.has(queryName)) ||\n (document && queryNamesAndDocs.has(document))) {\n queries.set(queryId, oq);\n if (queryName)\n queryNamesAndDocs.set(queryName, true);\n if (document)\n queryNamesAndDocs.set(document, true);\n }\n }\n });\n if (legacyQueryOptions.size) {\n legacyQueryOptions.forEach(function (options) {\n var queryId = makeUniqueId(\"legacyOneTimeQuery\");\n var queryInfo = _this.getQuery(queryId).init({\n document: options.query,\n variables: options.variables,\n });\n var oq = new ObservableQuery({\n queryManager: _this,\n queryInfo: queryInfo,\n options: __assign(__assign({}, options), { fetchPolicy: \"network-only\" }),\n });\n invariant(oq.queryId === queryId);\n queryInfo.setObservableQuery(oq);\n queries.set(queryId, oq);\n });\n }\n if (__DEV__ && queryNamesAndDocs.size) {\n queryNamesAndDocs.forEach(function (included, nameOrDoc) {\n if (!included) {\n __DEV__ && invariant.warn(\"Unknown query \".concat(typeof nameOrDoc === \"string\" ? \"named \" : \"\").concat(JSON.stringify(nameOrDoc, null, 2), \" requested in refetchQueries options.include array\"));\n }\n });\n }\n return queries;\n };\n QueryManager.prototype.reFetchObservableQueries = function (includeStandby) {\n var _this = this;\n if (includeStandby === void 0) { includeStandby = false; }\n var observableQueryPromises = [];\n this.getObservableQueries(includeStandby ? \"all\" : \"active\").forEach(function (observableQuery, queryId) {\n var fetchPolicy = observableQuery.options.fetchPolicy;\n observableQuery.resetLastResults();\n if (includeStandby ||\n (fetchPolicy !== \"standby\" &&\n fetchPolicy !== \"cache-only\")) {\n observableQueryPromises.push(observableQuery.refetch());\n }\n _this.getQuery(queryId).setDiff(null);\n });\n this.broadcastQueries();\n return Promise.all(observableQueryPromises);\n };\n QueryManager.prototype.setObservableQuery = function (observableQuery) {\n this.getQuery(observableQuery.queryId).setObservableQuery(observableQuery);\n };\n QueryManager.prototype.startGraphQLSubscription = function (_a) {\n var _this = this;\n var query = _a.query, fetchPolicy = _a.fetchPolicy, errorPolicy = _a.errorPolicy, variables = _a.variables, _b = _a.context, context = _b === void 0 ? {} : _b;\n query = this.transform(query).document;\n variables = this.getVariables(query, variables);\n var makeObservable = function (variables) {\n return _this.getObservableFromLink(query, context, variables).map(function (result) {\n if (fetchPolicy !== 'no-cache') {\n if (shouldWriteResult(result, errorPolicy)) {\n _this.cache.write({\n query: query,\n result: result.data,\n dataId: 'ROOT_SUBSCRIPTION',\n variables: variables,\n });\n }\n _this.broadcastQueries();\n }\n if (graphQLResultHasError(result)) {\n throw new ApolloError({\n graphQLErrors: result.errors,\n });\n }\n return result;\n });\n };\n if (this.transform(query).hasClientExports) {\n var observablePromise_1 = this.localState.addExportedVariables(query, variables, context).then(makeObservable);\n return new Observable(function (observer) {\n var sub = null;\n observablePromise_1.then(function (observable) { return sub = observable.subscribe(observer); }, observer.error);\n return function () { return sub && sub.unsubscribe(); };\n });\n }\n return makeObservable(variables);\n };\n QueryManager.prototype.stopQuery = function (queryId) {\n this.stopQueryNoBroadcast(queryId);\n this.broadcastQueries();\n };\n QueryManager.prototype.stopQueryNoBroadcast = function (queryId) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.removeQuery(queryId);\n };\n QueryManager.prototype.removeQuery = function (queryId) {\n this.fetchCancelFns.delete(queryId);\n if (this.queries.has(queryId)) {\n this.getQuery(queryId).stop();\n this.queries.delete(queryId);\n }\n };\n QueryManager.prototype.broadcastQueries = function () {\n if (this.onBroadcast)\n this.onBroadcast();\n this.queries.forEach(function (info) { return info.notify(); });\n };\n QueryManager.prototype.getLocalState = function () {\n return this.localState;\n };\n QueryManager.prototype.getObservableFromLink = function (query, context, variables, deduplication) {\n var _this = this;\n var _a;\n if (deduplication === void 0) { deduplication = (_a = context === null || context === void 0 ? void 0 : context.queryDeduplication) !== null && _a !== void 0 ? _a : this.queryDeduplication; }\n var observable;\n var serverQuery = this.transform(query).serverQuery;\n if (serverQuery) {\n var _b = this, inFlightLinkObservables_1 = _b.inFlightLinkObservables, link = _b.link;\n var operation = {\n query: serverQuery,\n variables: variables,\n operationName: getOperationName(serverQuery) || void 0,\n context: this.prepareContext(__assign(__assign({}, context), { forceFetch: !deduplication })),\n };\n context = operation.context;\n if (deduplication) {\n var byVariables_1 = inFlightLinkObservables_1.get(serverQuery) || new Map();\n inFlightLinkObservables_1.set(serverQuery, byVariables_1);\n var varJson_1 = canonicalStringify(variables);\n observable = byVariables_1.get(varJson_1);\n if (!observable) {\n var concast = new Concast([\n execute(link, operation)\n ]);\n byVariables_1.set(varJson_1, observable = concast);\n concast.cleanup(function () {\n if (byVariables_1.delete(varJson_1) &&\n byVariables_1.size < 1) {\n inFlightLinkObservables_1.delete(serverQuery);\n }\n });\n }\n }\n else {\n observable = new Concast([\n execute(link, operation)\n ]);\n }\n }\n else {\n observable = new Concast([\n Observable.of({ data: {} })\n ]);\n context = this.prepareContext(context);\n }\n var clientQuery = this.transform(query).clientQuery;\n if (clientQuery) {\n observable = asyncMap(observable, function (result) {\n return _this.localState.runResolvers({\n document: clientQuery,\n remoteResult: result,\n context: context,\n variables: variables,\n });\n });\n }\n return observable;\n };\n QueryManager.prototype.getResultsFromLink = function (queryInfo, cacheWriteBehavior, options) {\n var requestId = queryInfo.lastRequestId = this.generateRequestId();\n return asyncMap(this.getObservableFromLink(queryInfo.document, options.context, options.variables), function (result) {\n var hasErrors = isNonEmptyArray(result.errors);\n if (requestId >= queryInfo.lastRequestId) {\n if (hasErrors && options.errorPolicy === \"none\") {\n throw queryInfo.markError(new ApolloError({\n graphQLErrors: result.errors,\n }));\n }\n queryInfo.markResult(result, options, cacheWriteBehavior);\n queryInfo.markReady();\n }\n var aqr = {\n data: result.data,\n loading: false,\n networkStatus: NetworkStatus.ready,\n };\n if (hasErrors && options.errorPolicy !== \"ignore\") {\n aqr.errors = result.errors;\n aqr.networkStatus = NetworkStatus.error;\n }\n return aqr;\n }, function (networkError) {\n var error = isApolloError(networkError)\n ? networkError\n : new ApolloError({ networkError: networkError });\n if (requestId >= queryInfo.lastRequestId) {\n queryInfo.markError(error);\n }\n throw error;\n });\n };\n QueryManager.prototype.fetchQueryObservable = function (queryId, options, networkStatus) {\n var _this = this;\n if (networkStatus === void 0) { networkStatus = NetworkStatus.loading; }\n var query = this.transform(options.query).document;\n var variables = this.getVariables(query, options.variables);\n var queryInfo = this.getQuery(queryId);\n var defaults = this.defaultOptions.watchQuery;\n var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? defaults && defaults.fetchPolicy || \"cache-first\" : _a, _b = options.errorPolicy, errorPolicy = _b === void 0 ? defaults && defaults.errorPolicy || \"none\" : _b, _c = options.returnPartialData, returnPartialData = _c === void 0 ? false : _c, _d = options.notifyOnNetworkStatusChange, notifyOnNetworkStatusChange = _d === void 0 ? false : _d, _e = options.context, context = _e === void 0 ? {} : _e;\n var normalized = Object.assign({}, options, {\n query: query,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n returnPartialData: returnPartialData,\n notifyOnNetworkStatusChange: notifyOnNetworkStatusChange,\n context: context,\n });\n var fromVariables = function (variables) {\n normalized.variables = variables;\n return _this.fetchQueryByPolicy(queryInfo, normalized, networkStatus);\n };\n this.fetchCancelFns.set(queryId, function (reason) {\n setTimeout(function () { return concast.cancel(reason); });\n });\n var concast = new Concast(this.transform(normalized.query).hasClientExports\n ? this.localState.addExportedVariables(normalized.query, normalized.variables, normalized.context).then(fromVariables)\n : fromVariables(normalized.variables));\n concast.cleanup(function () {\n _this.fetchCancelFns.delete(queryId);\n if (queryInfo.observableQuery) {\n queryInfo.observableQuery[\"applyNextFetchPolicy\"](\"after-fetch\", options);\n }\n });\n return concast;\n };\n QueryManager.prototype.refetchQueries = function (_a) {\n var _this = this;\n var updateCache = _a.updateCache, include = _a.include, _b = _a.optimistic, optimistic = _b === void 0 ? false : _b, _c = _a.removeOptimistic, removeOptimistic = _c === void 0 ? optimistic ? makeUniqueId(\"refetchQueries\") : void 0 : _c, onQueryUpdated = _a.onQueryUpdated;\n var includedQueriesById = new Map();\n if (include) {\n this.getObservableQueries(include).forEach(function (oq, queryId) {\n includedQueriesById.set(queryId, {\n oq: oq,\n lastDiff: _this.getQuery(queryId).getDiff(),\n });\n });\n }\n var results = new Map;\n if (updateCache) {\n this.cache.batch({\n update: updateCache,\n optimistic: optimistic && removeOptimistic || false,\n removeOptimistic: removeOptimistic,\n onWatchUpdated: function (watch, diff, lastDiff) {\n var oq = watch.watcher instanceof QueryInfo &&\n watch.watcher.observableQuery;\n if (oq) {\n if (onQueryUpdated) {\n includedQueriesById.delete(oq.queryId);\n var result = onQueryUpdated(oq, diff, lastDiff);\n if (result === true) {\n result = oq.refetch();\n }\n if (result !== false) {\n results.set(oq, result);\n }\n return result;\n }\n if (onQueryUpdated !== null) {\n includedQueriesById.set(oq.queryId, { oq: oq, lastDiff: lastDiff, diff: diff });\n }\n }\n },\n });\n }\n if (includedQueriesById.size) {\n includedQueriesById.forEach(function (_a, queryId) {\n var oq = _a.oq, lastDiff = _a.lastDiff, diff = _a.diff;\n var result;\n if (onQueryUpdated) {\n if (!diff) {\n var info = oq[\"queryInfo\"];\n info.reset();\n diff = info.getDiff();\n }\n result = onQueryUpdated(oq, diff, lastDiff);\n }\n if (!onQueryUpdated || result === true) {\n result = oq.refetch();\n }\n if (result !== false) {\n results.set(oq, result);\n }\n if (queryId.indexOf(\"legacyOneTimeQuery\") >= 0) {\n _this.stopQueryNoBroadcast(queryId);\n }\n });\n }\n if (removeOptimistic) {\n this.cache.removeOptimistic(removeOptimistic);\n }\n return results;\n };\n QueryManager.prototype.fetchQueryByPolicy = function (queryInfo, _a, networkStatus) {\n var _this = this;\n var query = _a.query, variables = _a.variables, fetchPolicy = _a.fetchPolicy, refetchWritePolicy = _a.refetchWritePolicy, errorPolicy = _a.errorPolicy, returnPartialData = _a.returnPartialData, context = _a.context, notifyOnNetworkStatusChange = _a.notifyOnNetworkStatusChange;\n var oldNetworkStatus = queryInfo.networkStatus;\n queryInfo.init({\n document: this.transform(query).document,\n variables: variables,\n networkStatus: networkStatus,\n });\n var readCache = function () { return queryInfo.getDiff(variables); };\n var resultsFromCache = function (diff, networkStatus) {\n if (networkStatus === void 0) { networkStatus = queryInfo.networkStatus || NetworkStatus.loading; }\n var data = diff.result;\n if (__DEV__ &&\n !returnPartialData &&\n !equal(data, {})) {\n logMissingFieldErrors(diff.missing);\n }\n var fromData = function (data) { return Observable.of(__assign({ data: data, loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus }, (diff.complete ? null : { partial: true }))); };\n if (data && _this.transform(query).hasForcedResolvers) {\n return _this.localState.runResolvers({\n document: query,\n remoteResult: { data: data },\n context: context,\n variables: variables,\n onlyRunForcedResolvers: true,\n }).then(function (resolved) { return fromData(resolved.data || void 0); });\n }\n return fromData(data);\n };\n var cacheWriteBehavior = fetchPolicy === \"no-cache\" ? 0 :\n (networkStatus === NetworkStatus.refetch &&\n refetchWritePolicy !== \"merge\") ? 1\n : 2;\n var resultsFromLink = function () { return _this.getResultsFromLink(queryInfo, cacheWriteBehavior, {\n variables: variables,\n context: context,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n }); };\n var shouldNotify = notifyOnNetworkStatusChange &&\n typeof oldNetworkStatus === \"number\" &&\n oldNetworkStatus !== networkStatus &&\n isNetworkRequestInFlight(networkStatus);\n switch (fetchPolicy) {\n default:\n case \"cache-first\": {\n var diff = readCache();\n if (diff.complete) {\n return [\n resultsFromCache(diff, queryInfo.markReady()),\n ];\n }\n if (returnPartialData || shouldNotify) {\n return [\n resultsFromCache(diff),\n resultsFromLink(),\n ];\n }\n return [\n resultsFromLink(),\n ];\n }\n case \"cache-and-network\": {\n var diff = readCache();\n if (diff.complete || returnPartialData || shouldNotify) {\n return [\n resultsFromCache(diff),\n resultsFromLink(),\n ];\n }\n return [\n resultsFromLink(),\n ];\n }\n case \"cache-only\":\n return [\n resultsFromCache(readCache(), queryInfo.markReady()),\n ];\n case \"network-only\":\n if (shouldNotify) {\n return [\n resultsFromCache(readCache()),\n resultsFromLink(),\n ];\n }\n return [resultsFromLink()];\n case \"no-cache\":\n if (shouldNotify) {\n return [\n resultsFromCache(queryInfo.getDiff()),\n resultsFromLink(),\n ];\n }\n return [resultsFromLink()];\n case \"standby\":\n return [];\n }\n };\n QueryManager.prototype.getQuery = function (queryId) {\n if (queryId && !this.queries.has(queryId)) {\n this.queries.set(queryId, new QueryInfo(this, queryId));\n }\n return this.queries.get(queryId);\n };\n QueryManager.prototype.prepareContext = function (context) {\n if (context === void 0) { context = {}; }\n var newContext = this.localState.prepareContext(context);\n return __assign(__assign({}, newContext), { clientAwareness: this.clientAwareness });\n };\n return QueryManager;\n}());\nexport { QueryManager };\n//# sourceMappingURL=QueryManager.js.map","import { __assign } from \"tslib\";\nimport { invariant, InvariantError } from \"../utilities/globals/index.js\";\nimport { ApolloLink, execute } from \"../link/core/index.js\";\nimport { version } from \"../version.js\";\nimport { HttpLink } from \"../link/http/index.js\";\nimport { QueryManager } from \"./QueryManager.js\";\nimport { LocalState, } from \"./LocalState.js\";\nvar hasSuggestedDevtools = false;\nimport { mergeOptions } from \"../utilities/index.js\";\nexport { mergeOptions };\nvar ApolloClient = (function () {\n function ApolloClient(options) {\n var _this = this;\n this.resetStoreCallbacks = [];\n this.clearStoreCallbacks = [];\n var uri = options.uri, credentials = options.credentials, headers = options.headers, cache = options.cache, _a = options.ssrMode, ssrMode = _a === void 0 ? false : _a, _b = options.ssrForceFetchDelay, ssrForceFetchDelay = _b === void 0 ? 0 : _b, _c = options.connectToDevTools, connectToDevTools = _c === void 0 ? typeof window === 'object' &&\n !window.__APOLLO_CLIENT__ &&\n __DEV__ : _c, _d = options.queryDeduplication, queryDeduplication = _d === void 0 ? true : _d, defaultOptions = options.defaultOptions, _e = options.assumeImmutableResults, assumeImmutableResults = _e === void 0 ? false : _e, resolvers = options.resolvers, typeDefs = options.typeDefs, fragmentMatcher = options.fragmentMatcher, clientAwarenessName = options.name, clientAwarenessVersion = options.version;\n var link = options.link;\n if (!link) {\n link = uri\n ? new HttpLink({ uri: uri, credentials: credentials, headers: headers })\n : ApolloLink.empty();\n }\n if (!cache) {\n throw __DEV__ ? new InvariantError(\"To initialize Apollo Client, you must specify a 'cache' property \" +\n \"in the options object. \\n\" +\n \"For more information, please visit: https://go.apollo.dev/c/docs\") : new InvariantError(7);\n }\n this.link = link;\n this.cache = cache;\n this.disableNetworkFetches = ssrMode || ssrForceFetchDelay > 0;\n this.queryDeduplication = queryDeduplication;\n this.defaultOptions = defaultOptions || Object.create(null);\n this.typeDefs = typeDefs;\n if (ssrForceFetchDelay) {\n setTimeout(function () { return (_this.disableNetworkFetches = false); }, ssrForceFetchDelay);\n }\n this.watchQuery = this.watchQuery.bind(this);\n this.query = this.query.bind(this);\n this.mutate = this.mutate.bind(this);\n this.resetStore = this.resetStore.bind(this);\n this.reFetchObservableQueries = this.reFetchObservableQueries.bind(this);\n if (connectToDevTools && typeof window === 'object') {\n window.__APOLLO_CLIENT__ = this;\n }\n if (!hasSuggestedDevtools && __DEV__) {\n hasSuggestedDevtools = true;\n if (typeof window !== 'undefined' &&\n window.document &&\n window.top === window.self &&\n !window.__APOLLO_DEVTOOLS_GLOBAL_HOOK__) {\n var nav = window.navigator;\n var ua = nav && nav.userAgent;\n var url = void 0;\n if (typeof ua === \"string\") {\n if (ua.indexOf(\"Chrome/\") > -1) {\n url = \"https://chrome.google.com/webstore/detail/\" +\n \"apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm\";\n }\n else if (ua.indexOf(\"Firefox/\") > -1) {\n url = \"https://addons.mozilla.org/en-US/firefox/addon/apollo-developer-tools/\";\n }\n }\n if (url) {\n __DEV__ && invariant.log(\"Download the Apollo DevTools for a better development \" +\n \"experience: \" + url);\n }\n }\n }\n this.version = version;\n this.localState = new LocalState({\n cache: cache,\n client: this,\n resolvers: resolvers,\n fragmentMatcher: fragmentMatcher,\n });\n this.queryManager = new QueryManager({\n cache: this.cache,\n link: this.link,\n defaultOptions: this.defaultOptions,\n queryDeduplication: queryDeduplication,\n ssrMode: ssrMode,\n clientAwareness: {\n name: clientAwarenessName,\n version: clientAwarenessVersion,\n },\n localState: this.localState,\n assumeImmutableResults: assumeImmutableResults,\n onBroadcast: connectToDevTools ? function () {\n if (_this.devToolsHookCb) {\n _this.devToolsHookCb({\n action: {},\n state: {\n queries: _this.queryManager.getQueryStore(),\n mutations: _this.queryManager.mutationStore || {},\n },\n dataWithOptimisticResults: _this.cache.extract(true),\n });\n }\n } : void 0,\n });\n }\n ApolloClient.prototype.stop = function () {\n this.queryManager.stop();\n };\n ApolloClient.prototype.watchQuery = function (options) {\n if (this.defaultOptions.watchQuery) {\n options = mergeOptions(this.defaultOptions.watchQuery, options);\n }\n if (this.disableNetworkFetches &&\n (options.fetchPolicy === 'network-only' ||\n options.fetchPolicy === 'cache-and-network')) {\n options = __assign(__assign({}, options), { fetchPolicy: 'cache-first' });\n }\n return this.queryManager.watchQuery(options);\n };\n ApolloClient.prototype.query = function (options) {\n if (this.defaultOptions.query) {\n options = mergeOptions(this.defaultOptions.query, options);\n }\n __DEV__ ? invariant(options.fetchPolicy !== 'cache-and-network', 'The cache-and-network fetchPolicy does not work with client.query, because ' +\n 'client.query can only return a single result. Please use client.watchQuery ' +\n 'to receive multiple results from the cache and the network, or consider ' +\n 'using a different fetchPolicy, such as cache-first or network-only.') : invariant(options.fetchPolicy !== 'cache-and-network', 8);\n if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {\n options = __assign(__assign({}, options), { fetchPolicy: 'cache-first' });\n }\n return this.queryManager.query(options);\n };\n ApolloClient.prototype.mutate = function (options) {\n if (this.defaultOptions.mutate) {\n options = mergeOptions(this.defaultOptions.mutate, options);\n }\n return this.queryManager.mutate(options);\n };\n ApolloClient.prototype.subscribe = function (options) {\n return this.queryManager.startGraphQLSubscription(options);\n };\n ApolloClient.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return this.cache.readQuery(options, optimistic);\n };\n ApolloClient.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return this.cache.readFragment(options, optimistic);\n };\n ApolloClient.prototype.writeQuery = function (options) {\n this.cache.writeQuery(options);\n this.queryManager.broadcastQueries();\n };\n ApolloClient.prototype.writeFragment = function (options) {\n this.cache.writeFragment(options);\n this.queryManager.broadcastQueries();\n };\n ApolloClient.prototype.__actionHookForDevTools = function (cb) {\n this.devToolsHookCb = cb;\n };\n ApolloClient.prototype.__requestRaw = function (payload) {\n return execute(this.link, payload);\n };\n ApolloClient.prototype.resetStore = function () {\n var _this = this;\n return Promise.resolve()\n .then(function () { return _this.queryManager.clearStore({\n discardWatches: false,\n }); })\n .then(function () { return Promise.all(_this.resetStoreCallbacks.map(function (fn) { return fn(); })); })\n .then(function () { return _this.reFetchObservableQueries(); });\n };\n ApolloClient.prototype.clearStore = function () {\n var _this = this;\n return Promise.resolve()\n .then(function () { return _this.queryManager.clearStore({\n discardWatches: true,\n }); })\n .then(function () { return Promise.all(_this.clearStoreCallbacks.map(function (fn) { return fn(); })); });\n };\n ApolloClient.prototype.onResetStore = function (cb) {\n var _this = this;\n this.resetStoreCallbacks.push(cb);\n return function () {\n _this.resetStoreCallbacks = _this.resetStoreCallbacks.filter(function (c) { return c !== cb; });\n };\n };\n ApolloClient.prototype.onClearStore = function (cb) {\n var _this = this;\n this.clearStoreCallbacks.push(cb);\n return function () {\n _this.clearStoreCallbacks = _this.clearStoreCallbacks.filter(function (c) { return c !== cb; });\n };\n };\n ApolloClient.prototype.reFetchObservableQueries = function (includeStandby) {\n return this.queryManager.reFetchObservableQueries(includeStandby);\n };\n ApolloClient.prototype.refetchQueries = function (options) {\n var map = this.queryManager.refetchQueries(options);\n var queries = [];\n var results = [];\n map.forEach(function (result, obsQuery) {\n queries.push(obsQuery);\n results.push(result);\n });\n var result = Promise.all(results);\n result.queries = queries;\n result.results = results;\n result.catch(function (error) {\n __DEV__ && invariant.debug(\"In client.refetchQueries, Promise.all promise rejected with error \".concat(error));\n });\n return result;\n };\n ApolloClient.prototype.getObservableQueries = function (include) {\n if (include === void 0) { include = \"active\"; }\n return this.queryManager.getObservableQueries(include);\n };\n ApolloClient.prototype.extract = function (optimistic) {\n return this.cache.extract(optimistic);\n };\n ApolloClient.prototype.restore = function (serializedState) {\n return this.cache.restore(serializedState);\n };\n ApolloClient.prototype.addResolvers = function (resolvers) {\n this.localState.addResolvers(resolvers);\n };\n ApolloClient.prototype.setResolvers = function (resolvers) {\n this.localState.setResolvers(resolvers);\n };\n ApolloClient.prototype.getResolvers = function () {\n return this.localState.getResolvers();\n };\n ApolloClient.prototype.setLocalStateFragmentMatcher = function (fragmentMatcher) {\n this.localState.setFragmentMatcher(fragmentMatcher);\n };\n ApolloClient.prototype.setLink = function (newLink) {\n this.link = this.queryManager.link = newLink;\n };\n return ApolloClient;\n}());\nexport { ApolloClient };\n//# sourceMappingURL=ApolloClient.js.map","export var version = '3.6.2';\n//# sourceMappingURL=version.js.map","import { __assign, __rest } from \"tslib\";\nimport { wrap } from 'optimism';\nimport { getFragmentQueryDocument, } from \"../../utilities/index.js\";\nvar ApolloCache = (function () {\n function ApolloCache() {\n this.getFragmentDoc = wrap(getFragmentQueryDocument);\n }\n ApolloCache.prototype.batch = function (options) {\n var _this = this;\n var optimisticId = typeof options.optimistic === \"string\" ? options.optimistic :\n options.optimistic === false ? null : void 0;\n var updateResult;\n this.performTransaction(function () { return updateResult = options.update(_this); }, optimisticId);\n return updateResult;\n };\n ApolloCache.prototype.recordOptimisticTransaction = function (transaction, optimisticId) {\n this.performTransaction(transaction, optimisticId);\n };\n ApolloCache.prototype.transformDocument = function (document) {\n return document;\n };\n ApolloCache.prototype.identify = function (object) {\n return;\n };\n ApolloCache.prototype.gc = function () {\n return [];\n };\n ApolloCache.prototype.modify = function (options) {\n return false;\n };\n ApolloCache.prototype.transformForLink = function (document) {\n return document;\n };\n ApolloCache.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read(__assign(__assign({}, options), { rootId: options.id || 'ROOT_QUERY', optimistic: optimistic }));\n };\n ApolloCache.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read(__assign(__assign({}, options), { query: this.getFragmentDoc(options.fragment, options.fragmentName), rootId: options.id, optimistic: optimistic }));\n };\n ApolloCache.prototype.writeQuery = function (_a) {\n var id = _a.id, data = _a.data, options = __rest(_a, [\"id\", \"data\"]);\n return this.write(Object.assign(options, {\n dataId: id || 'ROOT_QUERY',\n result: data,\n }));\n };\n ApolloCache.prototype.writeFragment = function (_a) {\n var id = _a.id, data = _a.data, fragment = _a.fragment, fragmentName = _a.fragmentName, options = __rest(_a, [\"id\", \"data\", \"fragment\", \"fragmentName\"]);\n return this.write(Object.assign(options, {\n query: this.getFragmentDoc(fragment, fragmentName),\n dataId: id,\n result: data,\n }));\n };\n ApolloCache.prototype.updateQuery = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readQuery(options);\n var data = update(value);\n if (data === void 0 || data === null)\n return value;\n cache.writeQuery(__assign(__assign({}, options), { data: data }));\n return data;\n },\n });\n };\n ApolloCache.prototype.updateFragment = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readFragment(options);\n var data = update(value);\n if (data === void 0 || data === null)\n return value;\n cache.writeFragment(__assign(__assign({}, options), { data: data }));\n return data;\n },\n });\n };\n return ApolloCache;\n}());\nexport { ApolloCache };\n//# sourceMappingURL=cache.js.map","var MissingFieldError = (function () {\n function MissingFieldError(message, path, query, variables) {\n this.message = message;\n this.path = path;\n this.query = query;\n this.variables = variables;\n }\n return MissingFieldError;\n}());\nexport { MissingFieldError };\n//# sourceMappingURL=common.js.map","import { __assign, __extends, __rest } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { dep } from 'optimism';\nimport { equal } from '@wry/equality';\nimport { Trie } from '@wry/trie';\nimport { isReference, makeReference, DeepMerger, maybeDeepFreeze, canUseWeakMap, isNonNullObject, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName } from \"./helpers.js\";\nvar DELETE = Object.create(null);\nvar delModifier = function () { return DELETE; };\nvar INVALIDATE = Object.create(null);\nvar EntityStore = (function () {\n function EntityStore(policies, group) {\n var _this = this;\n this.policies = policies;\n this.group = group;\n this.data = Object.create(null);\n this.rootIds = Object.create(null);\n this.refs = Object.create(null);\n this.getFieldValue = function (objectOrReference, storeFieldName) { return maybeDeepFreeze(isReference(objectOrReference)\n ? _this.get(objectOrReference.__ref, storeFieldName)\n : objectOrReference && objectOrReference[storeFieldName]); };\n this.canRead = function (objOrRef) {\n return isReference(objOrRef)\n ? _this.has(objOrRef.__ref)\n : typeof objOrRef === \"object\";\n };\n this.toReference = function (objOrIdOrRef, mergeIntoStore) {\n if (typeof objOrIdOrRef === \"string\") {\n return makeReference(objOrIdOrRef);\n }\n if (isReference(objOrIdOrRef)) {\n return objOrIdOrRef;\n }\n var id = _this.policies.identify(objOrIdOrRef)[0];\n if (id) {\n var ref = makeReference(id);\n if (mergeIntoStore) {\n _this.merge(id, objOrIdOrRef);\n }\n return ref;\n }\n };\n }\n EntityStore.prototype.toObject = function () {\n return __assign({}, this.data);\n };\n EntityStore.prototype.has = function (dataId) {\n return this.lookup(dataId, true) !== void 0;\n };\n EntityStore.prototype.get = function (dataId, fieldName) {\n this.group.depend(dataId, fieldName);\n if (hasOwn.call(this.data, dataId)) {\n var storeObject = this.data[dataId];\n if (storeObject && hasOwn.call(storeObject, fieldName)) {\n return storeObject[fieldName];\n }\n }\n if (fieldName === \"__typename\" &&\n hasOwn.call(this.policies.rootTypenamesById, dataId)) {\n return this.policies.rootTypenamesById[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.get(dataId, fieldName);\n }\n };\n EntityStore.prototype.lookup = function (dataId, dependOnExistence) {\n if (dependOnExistence)\n this.group.depend(dataId, \"__exists\");\n if (hasOwn.call(this.data, dataId)) {\n return this.data[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.lookup(dataId, dependOnExistence);\n }\n if (this.policies.rootTypenamesById[dataId]) {\n return Object.create(null);\n }\n };\n EntityStore.prototype.merge = function (older, newer) {\n var _this = this;\n var dataId;\n if (isReference(older))\n older = older.__ref;\n if (isReference(newer))\n newer = newer.__ref;\n var existing = typeof older === \"string\"\n ? this.lookup(dataId = older)\n : older;\n var incoming = typeof newer === \"string\"\n ? this.lookup(dataId = newer)\n : newer;\n if (!incoming)\n return;\n __DEV__ ? invariant(typeof dataId === \"string\", \"store.merge expects a string ID\") : invariant(typeof dataId === \"string\", 1);\n var merged = new DeepMerger(storeObjectReconciler).merge(existing, incoming);\n this.data[dataId] = merged;\n if (merged !== existing) {\n delete this.refs[dataId];\n if (this.group.caching) {\n var fieldsToDirty_1 = Object.create(null);\n if (!existing)\n fieldsToDirty_1.__exists = 1;\n Object.keys(incoming).forEach(function (storeFieldName) {\n if (!existing || existing[storeFieldName] !== merged[storeFieldName]) {\n fieldsToDirty_1[storeFieldName] = 1;\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName &&\n !_this.policies.hasKeyArgs(merged.__typename, fieldName)) {\n fieldsToDirty_1[fieldName] = 1;\n }\n if (merged[storeFieldName] === void 0 && !(_this instanceof Layer)) {\n delete merged[storeFieldName];\n }\n }\n });\n if (fieldsToDirty_1.__typename &&\n !(existing && existing.__typename) &&\n this.policies.rootTypenamesById[dataId] === merged.__typename) {\n delete fieldsToDirty_1.__typename;\n }\n Object.keys(fieldsToDirty_1).forEach(function (fieldName) { return _this.group.dirty(dataId, fieldName); });\n }\n }\n };\n EntityStore.prototype.modify = function (dataId, fields) {\n var _this = this;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var changedFields_1 = Object.create(null);\n var needToMerge_1 = false;\n var allDeleted_1 = true;\n var sharedDetails_1 = {\n DELETE: DELETE,\n INVALIDATE: INVALIDATE,\n isReference: isReference,\n toReference: this.toReference,\n canRead: this.canRead,\n readField: function (fieldNameOrOptions, from) { return _this.policies.readField(typeof fieldNameOrOptions === \"string\" ? {\n fieldName: fieldNameOrOptions,\n from: from || makeReference(dataId),\n } : fieldNameOrOptions, { store: _this }); },\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var fieldValue = storeObject[storeFieldName];\n if (fieldValue === void 0)\n return;\n var modify = typeof fields === \"function\"\n ? fields\n : fields[storeFieldName] || fields[fieldName];\n if (modify) {\n var newValue = modify === delModifier ? DELETE :\n modify(maybeDeepFreeze(fieldValue), __assign(__assign({}, sharedDetails_1), { fieldName: fieldName, storeFieldName: storeFieldName, storage: _this.getStorage(dataId, storeFieldName) }));\n if (newValue === INVALIDATE) {\n _this.group.dirty(dataId, storeFieldName);\n }\n else {\n if (newValue === DELETE)\n newValue = void 0;\n if (newValue !== fieldValue) {\n changedFields_1[storeFieldName] = newValue;\n needToMerge_1 = true;\n fieldValue = newValue;\n }\n }\n }\n if (fieldValue !== void 0) {\n allDeleted_1 = false;\n }\n });\n if (needToMerge_1) {\n this.merge(dataId, changedFields_1);\n if (allDeleted_1) {\n if (this instanceof Layer) {\n this.data[dataId] = void 0;\n }\n else {\n delete this.data[dataId];\n }\n this.group.dirty(dataId, \"__exists\");\n }\n return true;\n }\n }\n return false;\n };\n EntityStore.prototype.delete = function (dataId, fieldName, args) {\n var _a;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var typename = this.getFieldValue(storeObject, \"__typename\");\n var storeFieldName = fieldName && args\n ? this.policies.getStoreFieldName({ typename: typename, fieldName: fieldName, args: args })\n : fieldName;\n return this.modify(dataId, storeFieldName ? (_a = {},\n _a[storeFieldName] = delModifier,\n _a) : delModifier);\n }\n return false;\n };\n EntityStore.prototype.evict = function (options, limit) {\n var evicted = false;\n if (options.id) {\n if (hasOwn.call(this.data, options.id)) {\n evicted = this.delete(options.id, options.fieldName, options.args);\n }\n if (this instanceof Layer && this !== limit) {\n evicted = this.parent.evict(options, limit) || evicted;\n }\n if (options.fieldName || evicted) {\n this.group.dirty(options.id, options.fieldName || \"__exists\");\n }\n }\n return evicted;\n };\n EntityStore.prototype.clear = function () {\n this.replace(null);\n };\n EntityStore.prototype.extract = function () {\n var _this = this;\n var obj = this.toObject();\n var extraRootIds = [];\n this.getRootIdSet().forEach(function (id) {\n if (!hasOwn.call(_this.policies.rootTypenamesById, id)) {\n extraRootIds.push(id);\n }\n });\n if (extraRootIds.length) {\n obj.__META = { extraRootIds: extraRootIds.sort() };\n }\n return obj;\n };\n EntityStore.prototype.replace = function (newData) {\n var _this = this;\n Object.keys(this.data).forEach(function (dataId) {\n if (!(newData && hasOwn.call(newData, dataId))) {\n _this.delete(dataId);\n }\n });\n if (newData) {\n var __META = newData.__META, rest_1 = __rest(newData, [\"__META\"]);\n Object.keys(rest_1).forEach(function (dataId) {\n _this.merge(dataId, rest_1[dataId]);\n });\n if (__META) {\n __META.extraRootIds.forEach(this.retain, this);\n }\n }\n };\n EntityStore.prototype.retain = function (rootId) {\n return this.rootIds[rootId] = (this.rootIds[rootId] || 0) + 1;\n };\n EntityStore.prototype.release = function (rootId) {\n if (this.rootIds[rootId] > 0) {\n var count = --this.rootIds[rootId];\n if (!count)\n delete this.rootIds[rootId];\n return count;\n }\n return 0;\n };\n EntityStore.prototype.getRootIdSet = function (ids) {\n if (ids === void 0) { ids = new Set(); }\n Object.keys(this.rootIds).forEach(ids.add, ids);\n if (this instanceof Layer) {\n this.parent.getRootIdSet(ids);\n }\n else {\n Object.keys(this.policies.rootTypenamesById).forEach(ids.add, ids);\n }\n return ids;\n };\n EntityStore.prototype.gc = function () {\n var _this = this;\n var ids = this.getRootIdSet();\n var snapshot = this.toObject();\n ids.forEach(function (id) {\n if (hasOwn.call(snapshot, id)) {\n Object.keys(_this.findChildRefIds(id)).forEach(ids.add, ids);\n delete snapshot[id];\n }\n });\n var idsToRemove = Object.keys(snapshot);\n if (idsToRemove.length) {\n var root_1 = this;\n while (root_1 instanceof Layer)\n root_1 = root_1.parent;\n idsToRemove.forEach(function (id) { return root_1.delete(id); });\n }\n return idsToRemove;\n };\n EntityStore.prototype.findChildRefIds = function (dataId) {\n if (!hasOwn.call(this.refs, dataId)) {\n var found_1 = this.refs[dataId] = Object.create(null);\n var root = this.data[dataId];\n if (!root)\n return found_1;\n var workSet_1 = new Set([root]);\n workSet_1.forEach(function (obj) {\n if (isReference(obj)) {\n found_1[obj.__ref] = true;\n }\n if (isNonNullObject(obj)) {\n Object.keys(obj).forEach(function (key) {\n var child = obj[key];\n if (isNonNullObject(child)) {\n workSet_1.add(child);\n }\n });\n }\n });\n }\n return this.refs[dataId];\n };\n EntityStore.prototype.makeCacheKey = function () {\n return this.group.keyMaker.lookupArray(arguments);\n };\n return EntityStore;\n}());\nexport { EntityStore };\nvar CacheGroup = (function () {\n function CacheGroup(caching, parent) {\n if (parent === void 0) { parent = null; }\n this.caching = caching;\n this.parent = parent;\n this.d = null;\n this.resetCaching();\n }\n CacheGroup.prototype.resetCaching = function () {\n this.d = this.caching ? dep() : null;\n this.keyMaker = new Trie(canUseWeakMap);\n };\n CacheGroup.prototype.depend = function (dataId, storeFieldName) {\n if (this.d) {\n this.d(makeDepKey(dataId, storeFieldName));\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName) {\n this.d(makeDepKey(dataId, fieldName));\n }\n if (this.parent) {\n this.parent.depend(dataId, storeFieldName);\n }\n }\n };\n CacheGroup.prototype.dirty = function (dataId, storeFieldName) {\n if (this.d) {\n this.d.dirty(makeDepKey(dataId, storeFieldName), storeFieldName === \"__exists\" ? \"forget\" : \"setDirty\");\n }\n };\n return CacheGroup;\n}());\nfunction makeDepKey(dataId, storeFieldName) {\n return storeFieldName + '#' + dataId;\n}\nexport function maybeDependOnExistenceOfEntity(store, entityId) {\n if (supportsResultCaching(store)) {\n store.group.depend(entityId, \"__exists\");\n }\n}\n(function (EntityStore) {\n var Root = (function (_super) {\n __extends(Root, _super);\n function Root(_a) {\n var policies = _a.policies, _b = _a.resultCaching, resultCaching = _b === void 0 ? true : _b, seed = _a.seed;\n var _this = _super.call(this, policies, new CacheGroup(resultCaching)) || this;\n _this.stump = new Stump(_this);\n _this.storageTrie = new Trie(canUseWeakMap);\n if (seed)\n _this.replace(seed);\n return _this;\n }\n Root.prototype.addLayer = function (layerId, replay) {\n return this.stump.addLayer(layerId, replay);\n };\n Root.prototype.removeLayer = function () {\n return this;\n };\n Root.prototype.getStorage = function () {\n return this.storageTrie.lookupArray(arguments);\n };\n return Root;\n }(EntityStore));\n EntityStore.Root = Root;\n})(EntityStore || (EntityStore = {}));\nvar Layer = (function (_super) {\n __extends(Layer, _super);\n function Layer(id, parent, replay, group) {\n var _this = _super.call(this, parent.policies, group) || this;\n _this.id = id;\n _this.parent = parent;\n _this.replay = replay;\n _this.group = group;\n replay(_this);\n return _this;\n }\n Layer.prototype.addLayer = function (layerId, replay) {\n return new Layer(layerId, this, replay, this.group);\n };\n Layer.prototype.removeLayer = function (layerId) {\n var _this = this;\n var parent = this.parent.removeLayer(layerId);\n if (layerId === this.id) {\n if (this.group.caching) {\n Object.keys(this.data).forEach(function (dataId) {\n var ownStoreObject = _this.data[dataId];\n var parentStoreObject = parent[\"lookup\"](dataId);\n if (!parentStoreObject) {\n _this.delete(dataId);\n }\n else if (!ownStoreObject) {\n _this.group.dirty(dataId, \"__exists\");\n Object.keys(parentStoreObject).forEach(function (storeFieldName) {\n _this.group.dirty(dataId, storeFieldName);\n });\n }\n else if (ownStoreObject !== parentStoreObject) {\n Object.keys(ownStoreObject).forEach(function (storeFieldName) {\n if (!equal(ownStoreObject[storeFieldName], parentStoreObject[storeFieldName])) {\n _this.group.dirty(dataId, storeFieldName);\n }\n });\n }\n });\n }\n return parent;\n }\n if (parent === this.parent)\n return this;\n return parent.addLayer(this.id, this.replay);\n };\n Layer.prototype.toObject = function () {\n return __assign(__assign({}, this.parent.toObject()), this.data);\n };\n Layer.prototype.findChildRefIds = function (dataId) {\n var fromParent = this.parent.findChildRefIds(dataId);\n return hasOwn.call(this.data, dataId) ? __assign(__assign({}, fromParent), _super.prototype.findChildRefIds.call(this, dataId)) : fromParent;\n };\n Layer.prototype.getStorage = function () {\n var p = this.parent;\n while (p.parent)\n p = p.parent;\n return p.getStorage.apply(p, arguments);\n };\n return Layer;\n}(EntityStore));\nvar Stump = (function (_super) {\n __extends(Stump, _super);\n function Stump(root) {\n return _super.call(this, \"EntityStore.Stump\", root, function () { }, new CacheGroup(root.group.caching, root.group)) || this;\n }\n Stump.prototype.removeLayer = function () {\n return this;\n };\n Stump.prototype.merge = function () {\n return this.parent.merge.apply(this.parent, arguments);\n };\n return Stump;\n}(Layer));\nfunction storeObjectReconciler(existingObject, incomingObject, property) {\n var existingValue = existingObject[property];\n var incomingValue = incomingObject[property];\n return equal(existingValue, incomingValue) ? existingValue : incomingValue;\n}\nexport function supportsResultCaching(store) {\n return !!(store instanceof EntityStore && store.group.caching);\n}\n//# sourceMappingURL=entityStore.js.map","import { __assign } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { wrap } from 'optimism';\nimport { isField, resultKeyNameFromField, isReference, makeReference, createFragmentMap, shouldInclude, addTypenameToDocument, getDefaultValues, getFragmentDefinitions, getMainDefinition, getQueryDefinition, DeepMerger, getFragmentFromSelection, maybeDeepFreeze, isNonNullObject, canUseWeakMap, compact, } from \"../../utilities/index.js\";\nimport { maybeDependOnExistenceOfEntity, supportsResultCaching } from \"./entityStore.js\";\nimport { getTypenameFromStoreObject, isArray, shouldCanonizeResults } from \"./helpers.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { canonicalStringify, ObjectCanon } from \"./object-canon.js\";\n;\nfunction execSelectionSetKeyArgs(options) {\n return [\n options.selectionSet,\n options.objectOrReference,\n options.context,\n options.context.canonizeResults,\n ];\n}\nvar StoreReader = (function () {\n function StoreReader(config) {\n var _this = this;\n this.knownResults = new (canUseWeakMap ? WeakMap : Map)();\n this.config = compact(config, {\n addTypename: config.addTypename !== false,\n canonizeResults: shouldCanonizeResults(config),\n });\n this.canon = config.canon || new ObjectCanon;\n this.executeSelectionSet = wrap(function (options) {\n var _a;\n var canonizeResults = options.context.canonizeResults;\n var peekArgs = execSelectionSetKeyArgs(options);\n peekArgs[3] = !canonizeResults;\n var other = (_a = _this.executeSelectionSet).peek.apply(_a, peekArgs);\n if (other) {\n if (canonizeResults) {\n return __assign(__assign({}, other), { result: _this.canon.admit(other.result) });\n }\n return other;\n }\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n return _this.execSelectionSetImpl(options);\n }, {\n max: this.config.resultCacheMaxSize,\n keyArgs: execSelectionSetKeyArgs,\n makeCacheKey: function (selectionSet, parent, context, canonizeResults) {\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(selectionSet, isReference(parent) ? parent.__ref : parent, context.varString, canonizeResults);\n }\n }\n });\n this.executeSubSelectedArray = wrap(function (options) {\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n return _this.execSubSelectedArrayImpl(options);\n }, {\n max: this.config.resultCacheMaxSize,\n makeCacheKey: function (_a) {\n var field = _a.field, array = _a.array, context = _a.context;\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(field, array, context.varString);\n }\n }\n });\n }\n StoreReader.prototype.resetCanon = function () {\n this.canon = new ObjectCanon;\n };\n StoreReader.prototype.diffQueryAgainstStore = function (_a) {\n var store = _a.store, query = _a.query, _b = _a.rootId, rootId = _b === void 0 ? 'ROOT_QUERY' : _b, variables = _a.variables, _c = _a.returnPartialData, returnPartialData = _c === void 0 ? true : _c, _d = _a.canonizeResults, canonizeResults = _d === void 0 ? this.config.canonizeResults : _d;\n var policies = this.config.cache.policies;\n variables = __assign(__assign({}, getDefaultValues(getQueryDefinition(query))), variables);\n var rootRef = makeReference(rootId);\n var merger = new DeepMerger;\n var execResult = this.executeSelectionSet({\n selectionSet: getMainDefinition(query).selectionSet,\n objectOrReference: rootRef,\n enclosingRef: rootRef,\n context: {\n store: store,\n query: query,\n policies: policies,\n variables: variables,\n varString: canonicalStringify(variables),\n canonizeResults: canonizeResults,\n fragmentMap: createFragmentMap(getFragmentDefinitions(query)),\n merge: function (a, b) {\n return merger.merge(a, b);\n },\n },\n });\n var missing;\n if (execResult.missing) {\n missing = [new MissingFieldError(firstMissing(execResult.missing), execResult.missing, query, variables)];\n if (!returnPartialData) {\n throw missing[0];\n }\n }\n return {\n result: execResult.result,\n complete: !missing,\n missing: missing,\n };\n };\n StoreReader.prototype.isFresh = function (result, parent, selectionSet, context) {\n if (supportsResultCaching(context.store) &&\n this.knownResults.get(result) === selectionSet) {\n var latest = this.executeSelectionSet.peek(selectionSet, parent, context, this.canon.isKnown(result));\n if (latest && result === latest.result) {\n return true;\n }\n }\n return false;\n };\n StoreReader.prototype.execSelectionSetImpl = function (_a) {\n var _this = this;\n var selectionSet = _a.selectionSet, objectOrReference = _a.objectOrReference, enclosingRef = _a.enclosingRef, context = _a.context;\n if (isReference(objectOrReference) &&\n !context.policies.rootTypenamesById[objectOrReference.__ref] &&\n !context.store.has(objectOrReference.__ref)) {\n return {\n result: this.canon.empty,\n missing: \"Dangling reference to missing \".concat(objectOrReference.__ref, \" object\"),\n };\n }\n var variables = context.variables, policies = context.policies, store = context.store;\n var typename = store.getFieldValue(objectOrReference, \"__typename\");\n var result = {};\n var missing;\n if (this.config.addTypename &&\n typeof typename === \"string\" &&\n !policies.rootIdsByTypename[typename]) {\n result = { __typename: typename };\n }\n function handleMissing(result, resultName) {\n var _a;\n if (result.missing) {\n missing = context.merge(missing, (_a = {}, _a[resultName] = result.missing, _a));\n }\n return result.result;\n }\n var workSet = new Set(selectionSet.selections);\n workSet.forEach(function (selection) {\n var _a, _b;\n if (!shouldInclude(selection, variables))\n return;\n if (isField(selection)) {\n var fieldValue = policies.readField({\n fieldName: selection.name.value,\n field: selection,\n variables: context.variables,\n from: objectOrReference,\n }, context);\n var resultName = resultKeyNameFromField(selection);\n if (fieldValue === void 0) {\n if (!addTypenameToDocument.added(selection)) {\n missing = context.merge(missing, (_a = {},\n _a[resultName] = \"Can't find field '\".concat(selection.name.value, \"' on \").concat(isReference(objectOrReference)\n ? objectOrReference.__ref + \" object\"\n : \"object \" + JSON.stringify(objectOrReference, null, 2)),\n _a));\n }\n }\n else if (isArray(fieldValue)) {\n fieldValue = handleMissing(_this.executeSubSelectedArray({\n field: selection,\n array: fieldValue,\n enclosingRef: enclosingRef,\n context: context,\n }), resultName);\n }\n else if (!selection.selectionSet) {\n if (context.canonizeResults) {\n fieldValue = _this.canon.pass(fieldValue);\n }\n }\n else if (fieldValue != null) {\n fieldValue = handleMissing(_this.executeSelectionSet({\n selectionSet: selection.selectionSet,\n objectOrReference: fieldValue,\n enclosingRef: isReference(fieldValue) ? fieldValue : enclosingRef,\n context: context,\n }), resultName);\n }\n if (fieldValue !== void 0) {\n result = context.merge(result, (_b = {}, _b[resultName] = fieldValue, _b));\n }\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.fragmentMap);\n if (fragment && policies.fragmentMatches(fragment, typename)) {\n fragment.selectionSet.selections.forEach(workSet.add, workSet);\n }\n }\n });\n var finalResult = { result: result, missing: missing };\n var frozen = context.canonizeResults\n ? this.canon.admit(finalResult)\n : maybeDeepFreeze(finalResult);\n if (frozen.result) {\n this.knownResults.set(frozen.result, selectionSet);\n }\n return frozen;\n };\n StoreReader.prototype.execSubSelectedArrayImpl = function (_a) {\n var _this = this;\n var field = _a.field, array = _a.array, enclosingRef = _a.enclosingRef, context = _a.context;\n var missing;\n function handleMissing(childResult, i) {\n var _a;\n if (childResult.missing) {\n missing = context.merge(missing, (_a = {}, _a[i] = childResult.missing, _a));\n }\n return childResult.result;\n }\n if (field.selectionSet) {\n array = array.filter(context.store.canRead);\n }\n array = array.map(function (item, i) {\n if (item === null) {\n return null;\n }\n if (isArray(item)) {\n return handleMissing(_this.executeSubSelectedArray({\n field: field,\n array: item,\n enclosingRef: enclosingRef,\n context: context,\n }), i);\n }\n if (field.selectionSet) {\n return handleMissing(_this.executeSelectionSet({\n selectionSet: field.selectionSet,\n objectOrReference: item,\n enclosingRef: isReference(item) ? item : enclosingRef,\n context: context,\n }), i);\n }\n if (__DEV__) {\n assertSelectionSetForIdValue(context.store, field, item);\n }\n return item;\n });\n return {\n result: context.canonizeResults ? this.canon.admit(array) : array,\n missing: missing,\n };\n };\n return StoreReader;\n}());\nexport { StoreReader };\nfunction firstMissing(tree) {\n try {\n JSON.stringify(tree, function (_, value) {\n if (typeof value === \"string\")\n throw value;\n return value;\n });\n }\n catch (result) {\n return result;\n }\n}\nfunction assertSelectionSetForIdValue(store, field, fieldValue) {\n if (!field.selectionSet) {\n var workSet_1 = new Set([fieldValue]);\n workSet_1.forEach(function (value) {\n if (isNonNullObject(value)) {\n __DEV__ ? invariant(!isReference(value), \"Missing selection set for object of type \".concat(getTypenameFromStoreObject(store, value), \" returned for query field \").concat(field.name.value)) : invariant(!isReference(value), 5);\n Object.values(value).forEach(workSet_1.add, workSet_1);\n }\n });\n }\n}\n//# sourceMappingURL=readFromStore.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport { argumentsObjectFromField, DeepMerger, isNonEmptyArray, isNonNullObject, } from \"../../utilities/index.js\";\nimport { hasOwn, isArray } from \"./helpers.js\";\nvar specifierInfoCache = Object.create(null);\nfunction lookupSpecifierInfo(spec) {\n var cacheKey = JSON.stringify(spec);\n return specifierInfoCache[cacheKey] ||\n (specifierInfoCache[cacheKey] = Object.create(null));\n}\nexport function keyFieldsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return info.keyFieldsFn || (info.keyFieldsFn = function (object, context) {\n var extract = function (from, key) { return context.readField(key, from); };\n var keyObject = context.keyObject = collectSpecifierPaths(specifier, function (schemaKeyPath) {\n var extracted = extractKeyPath(context.storeObject, schemaKeyPath, extract);\n if (extracted === void 0 &&\n object !== context.storeObject &&\n hasOwn.call(object, schemaKeyPath[0])) {\n extracted = extractKeyPath(object, schemaKeyPath, extractKey);\n }\n __DEV__ ? invariant(extracted !== void 0, \"Missing field '\".concat(schemaKeyPath.join('.'), \"' while extracting keyFields from \").concat(JSON.stringify(object))) : invariant(extracted !== void 0, 2);\n return extracted;\n });\n return \"\".concat(context.typename, \":\").concat(JSON.stringify(keyObject));\n });\n}\nexport function keyArgsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return info.keyArgsFn || (info.keyArgsFn = function (args, _a) {\n var field = _a.field, variables = _a.variables, fieldName = _a.fieldName;\n var collected = collectSpecifierPaths(specifier, function (keyPath) {\n var firstKey = keyPath[0];\n var firstChar = firstKey.charAt(0);\n if (firstChar === \"@\") {\n if (field && isNonEmptyArray(field.directives)) {\n var directiveName_1 = firstKey.slice(1);\n var d = field.directives.find(function (d) { return d.name.value === directiveName_1; });\n var directiveArgs = d && argumentsObjectFromField(d, variables);\n return directiveArgs && extractKeyPath(directiveArgs, keyPath.slice(1));\n }\n return;\n }\n if (firstChar === \"$\") {\n var variableName = firstKey.slice(1);\n if (variables && hasOwn.call(variables, variableName)) {\n var varKeyPath = keyPath.slice(0);\n varKeyPath[0] = variableName;\n return extractKeyPath(variables, varKeyPath);\n }\n return;\n }\n if (args) {\n return extractKeyPath(args, keyPath);\n }\n });\n var suffix = JSON.stringify(collected);\n if (args || suffix !== \"{}\") {\n fieldName += \":\" + suffix;\n }\n return fieldName;\n });\n}\nexport function collectSpecifierPaths(specifier, extractor) {\n var merger = new DeepMerger;\n return getSpecifierPaths(specifier).reduce(function (collected, path) {\n var _a;\n var toMerge = extractor(path);\n if (toMerge !== void 0) {\n for (var i = path.length - 1; i >= 0; --i) {\n toMerge = (_a = {}, _a[path[i]] = toMerge, _a);\n }\n collected = merger.merge(collected, toMerge);\n }\n return collected;\n }, Object.create(null));\n}\nexport function getSpecifierPaths(spec) {\n var info = lookupSpecifierInfo(spec);\n if (!info.paths) {\n var paths_1 = info.paths = [];\n var currentPath_1 = [];\n spec.forEach(function (s, i) {\n if (isArray(s)) {\n getSpecifierPaths(s).forEach(function (p) { return paths_1.push(currentPath_1.concat(p)); });\n currentPath_1.length = 0;\n }\n else {\n currentPath_1.push(s);\n if (!isArray(spec[i + 1])) {\n paths_1.push(currentPath_1.slice(0));\n currentPath_1.length = 0;\n }\n }\n });\n }\n return info.paths;\n}\nfunction extractKey(object, key) {\n return object[key];\n}\nexport function extractKeyPath(object, path, extract) {\n extract = extract || extractKey;\n return normalize(path.reduce(function reducer(obj, key) {\n return isArray(obj)\n ? obj.map(function (child) { return reducer(child, key); })\n : obj && extract(obj, key);\n }, object));\n}\nfunction normalize(value) {\n if (isNonNullObject(value)) {\n if (isArray(value)) {\n return value.map(normalize);\n }\n return collectSpecifierPaths(Object.keys(value).sort(), function (path) { return extractKeyPath(value, path); });\n }\n return value;\n}\n//# sourceMappingURL=key-extractor.js.map","import { __assign, __rest } from \"tslib\";\nimport { invariant, InvariantError } from \"../../utilities/globals/index.js\";\nimport { storeKeyNameFromField, argumentsObjectFromField, isReference, getStoreKeyName, isNonNullObject, stringifyForDisplay, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName, storeValueIsStoreObject, selectionSetMatchesResult, TypeOrFieldNameRegExp, defaultDataIdFromObject, isArray, } from \"./helpers.js\";\nimport { cacheSlot } from \"./reactiveVars.js\";\nimport { canonicalStringify } from \"./object-canon.js\";\nimport { keyArgsFnFromSpecifier, keyFieldsFnFromSpecifier } from \"./key-extractor.js\";\ngetStoreKeyName.setStringify(canonicalStringify);\nfunction argsFromFieldSpecifier(spec) {\n return spec.args !== void 0 ? spec.args :\n spec.field ? argumentsObjectFromField(spec.field, spec.variables) : null;\n}\nvar nullKeyFieldsFn = function () { return void 0; };\nvar simpleKeyArgsFn = function (_args, context) { return context.fieldName; };\nvar mergeTrueFn = function (existing, incoming, _a) {\n var mergeObjects = _a.mergeObjects;\n return mergeObjects(existing, incoming);\n};\nvar mergeFalseFn = function (_, incoming) { return incoming; };\nvar Policies = (function () {\n function Policies(config) {\n this.config = config;\n this.typePolicies = Object.create(null);\n this.toBeAdded = Object.create(null);\n this.supertypeMap = new Map();\n this.fuzzySubtypes = new Map();\n this.rootIdsByTypename = Object.create(null);\n this.rootTypenamesById = Object.create(null);\n this.usingPossibleTypes = false;\n this.config = __assign({ dataIdFromObject: defaultDataIdFromObject }, config);\n this.cache = this.config.cache;\n this.setRootTypename(\"Query\");\n this.setRootTypename(\"Mutation\");\n this.setRootTypename(\"Subscription\");\n if (config.possibleTypes) {\n this.addPossibleTypes(config.possibleTypes);\n }\n if (config.typePolicies) {\n this.addTypePolicies(config.typePolicies);\n }\n }\n Policies.prototype.identify = function (object, partialContext) {\n var _a;\n var policies = this;\n var typename = partialContext && (partialContext.typename ||\n ((_a = partialContext.storeObject) === null || _a === void 0 ? void 0 : _a.__typename)) || object.__typename;\n if (typename === this.rootTypenamesById.ROOT_QUERY) {\n return [\"ROOT_QUERY\"];\n }\n var storeObject = partialContext && partialContext.storeObject || object;\n var context = __assign(__assign({}, partialContext), { typename: typename, storeObject: storeObject, readField: partialContext && partialContext.readField || function () {\n var options = normalizeReadFieldOptions(arguments, storeObject);\n return policies.readField(options, {\n store: policies.cache[\"data\"],\n variables: options.variables,\n });\n } });\n var id;\n var policy = typename && this.getTypePolicy(typename);\n var keyFn = policy && policy.keyFn || this.config.dataIdFromObject;\n while (keyFn) {\n var specifierOrId = keyFn(object, context);\n if (isArray(specifierOrId)) {\n keyFn = keyFieldsFnFromSpecifier(specifierOrId);\n }\n else {\n id = specifierOrId;\n break;\n }\n }\n id = id ? String(id) : void 0;\n return context.keyObject ? [id, context.keyObject] : [id];\n };\n Policies.prototype.addTypePolicies = function (typePolicies) {\n var _this = this;\n Object.keys(typePolicies).forEach(function (typename) {\n var _a = typePolicies[typename], queryType = _a.queryType, mutationType = _a.mutationType, subscriptionType = _a.subscriptionType, incoming = __rest(_a, [\"queryType\", \"mutationType\", \"subscriptionType\"]);\n if (queryType)\n _this.setRootTypename(\"Query\", typename);\n if (mutationType)\n _this.setRootTypename(\"Mutation\", typename);\n if (subscriptionType)\n _this.setRootTypename(\"Subscription\", typename);\n if (hasOwn.call(_this.toBeAdded, typename)) {\n _this.toBeAdded[typename].push(incoming);\n }\n else {\n _this.toBeAdded[typename] = [incoming];\n }\n });\n };\n Policies.prototype.updateTypePolicy = function (typename, incoming) {\n var _this = this;\n var existing = this.getTypePolicy(typename);\n var keyFields = incoming.keyFields, fields = incoming.fields;\n function setMerge(existing, merge) {\n existing.merge =\n typeof merge === \"function\" ? merge :\n merge === true ? mergeTrueFn :\n merge === false ? mergeFalseFn :\n existing.merge;\n }\n setMerge(existing, incoming.merge);\n existing.keyFn =\n keyFields === false ? nullKeyFieldsFn :\n isArray(keyFields) ? keyFieldsFnFromSpecifier(keyFields) :\n typeof keyFields === \"function\" ? keyFields :\n existing.keyFn;\n if (fields) {\n Object.keys(fields).forEach(function (fieldName) {\n var existing = _this.getFieldPolicy(typename, fieldName, true);\n var incoming = fields[fieldName];\n if (typeof incoming === \"function\") {\n existing.read = incoming;\n }\n else {\n var keyArgs = incoming.keyArgs, read = incoming.read, merge = incoming.merge;\n existing.keyFn =\n keyArgs === false ? simpleKeyArgsFn :\n isArray(keyArgs) ? keyArgsFnFromSpecifier(keyArgs) :\n typeof keyArgs === \"function\" ? keyArgs :\n existing.keyFn;\n if (typeof read === \"function\") {\n existing.read = read;\n }\n setMerge(existing, merge);\n }\n if (existing.read && existing.merge) {\n existing.keyFn = existing.keyFn || simpleKeyArgsFn;\n }\n });\n }\n };\n Policies.prototype.setRootTypename = function (which, typename) {\n if (typename === void 0) { typename = which; }\n var rootId = \"ROOT_\" + which.toUpperCase();\n var old = this.rootTypenamesById[rootId];\n if (typename !== old) {\n __DEV__ ? invariant(!old || old === which, \"Cannot change root \".concat(which, \" __typename more than once\")) : invariant(!old || old === which, 3);\n if (old)\n delete this.rootIdsByTypename[old];\n this.rootIdsByTypename[typename] = rootId;\n this.rootTypenamesById[rootId] = typename;\n }\n };\n Policies.prototype.addPossibleTypes = function (possibleTypes) {\n var _this = this;\n this.usingPossibleTypes = true;\n Object.keys(possibleTypes).forEach(function (supertype) {\n _this.getSupertypeSet(supertype, true);\n possibleTypes[supertype].forEach(function (subtype) {\n _this.getSupertypeSet(subtype, true).add(supertype);\n var match = subtype.match(TypeOrFieldNameRegExp);\n if (!match || match[0] !== subtype) {\n _this.fuzzySubtypes.set(subtype, new RegExp(subtype));\n }\n });\n });\n };\n Policies.prototype.getTypePolicy = function (typename) {\n var _this = this;\n if (!hasOwn.call(this.typePolicies, typename)) {\n var policy_1 = this.typePolicies[typename] = Object.create(null);\n policy_1.fields = Object.create(null);\n var supertypes = this.supertypeMap.get(typename);\n if (supertypes && supertypes.size) {\n supertypes.forEach(function (supertype) {\n var _a = _this.getTypePolicy(supertype), fields = _a.fields, rest = __rest(_a, [\"fields\"]);\n Object.assign(policy_1, rest);\n Object.assign(policy_1.fields, fields);\n });\n }\n }\n var inbox = this.toBeAdded[typename];\n if (inbox && inbox.length) {\n inbox.splice(0).forEach(function (policy) {\n _this.updateTypePolicy(typename, policy);\n });\n }\n return this.typePolicies[typename];\n };\n Policies.prototype.getFieldPolicy = function (typename, fieldName, createIfMissing) {\n if (typename) {\n var fieldPolicies = this.getTypePolicy(typename).fields;\n return fieldPolicies[fieldName] || (createIfMissing && (fieldPolicies[fieldName] = Object.create(null)));\n }\n };\n Policies.prototype.getSupertypeSet = function (subtype, createIfMissing) {\n var supertypeSet = this.supertypeMap.get(subtype);\n if (!supertypeSet && createIfMissing) {\n this.supertypeMap.set(subtype, supertypeSet = new Set());\n }\n return supertypeSet;\n };\n Policies.prototype.fragmentMatches = function (fragment, typename, result, variables) {\n var _this = this;\n if (!fragment.typeCondition)\n return true;\n if (!typename)\n return false;\n var supertype = fragment.typeCondition.name.value;\n if (typename === supertype)\n return true;\n if (this.usingPossibleTypes &&\n this.supertypeMap.has(supertype)) {\n var typenameSupertypeSet = this.getSupertypeSet(typename, true);\n var workQueue_1 = [typenameSupertypeSet];\n var maybeEnqueue_1 = function (subtype) {\n var supertypeSet = _this.getSupertypeSet(subtype, false);\n if (supertypeSet &&\n supertypeSet.size &&\n workQueue_1.indexOf(supertypeSet) < 0) {\n workQueue_1.push(supertypeSet);\n }\n };\n var needToCheckFuzzySubtypes = !!(result && this.fuzzySubtypes.size);\n var checkingFuzzySubtypes = false;\n for (var i = 0; i < workQueue_1.length; ++i) {\n var supertypeSet = workQueue_1[i];\n if (supertypeSet.has(supertype)) {\n if (!typenameSupertypeSet.has(supertype)) {\n if (checkingFuzzySubtypes) {\n __DEV__ && invariant.warn(\"Inferring subtype \".concat(typename, \" of supertype \").concat(supertype));\n }\n typenameSupertypeSet.add(supertype);\n }\n return true;\n }\n supertypeSet.forEach(maybeEnqueue_1);\n if (needToCheckFuzzySubtypes &&\n i === workQueue_1.length - 1 &&\n selectionSetMatchesResult(fragment.selectionSet, result, variables)) {\n needToCheckFuzzySubtypes = false;\n checkingFuzzySubtypes = true;\n this.fuzzySubtypes.forEach(function (regExp, fuzzyString) {\n var match = typename.match(regExp);\n if (match && match[0] === typename) {\n maybeEnqueue_1(fuzzyString);\n }\n });\n }\n }\n }\n return false;\n };\n Policies.prototype.hasKeyArgs = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return !!(policy && policy.keyFn);\n };\n Policies.prototype.getStoreFieldName = function (fieldSpec) {\n var typename = fieldSpec.typename, fieldName = fieldSpec.fieldName;\n var policy = this.getFieldPolicy(typename, fieldName, false);\n var storeFieldName;\n var keyFn = policy && policy.keyFn;\n if (keyFn && typename) {\n var context = {\n typename: typename,\n fieldName: fieldName,\n field: fieldSpec.field || null,\n variables: fieldSpec.variables,\n };\n var args = argsFromFieldSpecifier(fieldSpec);\n while (keyFn) {\n var specifierOrString = keyFn(args, context);\n if (isArray(specifierOrString)) {\n keyFn = keyArgsFnFromSpecifier(specifierOrString);\n }\n else {\n storeFieldName = specifierOrString || fieldName;\n break;\n }\n }\n }\n if (storeFieldName === void 0) {\n storeFieldName = fieldSpec.field\n ? storeKeyNameFromField(fieldSpec.field, fieldSpec.variables)\n : getStoreKeyName(fieldName, argsFromFieldSpecifier(fieldSpec));\n }\n if (storeFieldName === false) {\n return fieldName;\n }\n return fieldName === fieldNameFromStoreName(storeFieldName)\n ? storeFieldName\n : fieldName + \":\" + storeFieldName;\n };\n Policies.prototype.readField = function (options, context) {\n var objectOrReference = options.from;\n if (!objectOrReference)\n return;\n var nameOrField = options.field || options.fieldName;\n if (!nameOrField)\n return;\n if (options.typename === void 0) {\n var typename = context.store.getFieldValue(objectOrReference, \"__typename\");\n if (typename)\n options.typename = typename;\n }\n var storeFieldName = this.getStoreFieldName(options);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var existing = context.store.getFieldValue(objectOrReference, storeFieldName);\n var policy = this.getFieldPolicy(options.typename, fieldName, false);\n var read = policy && policy.read;\n if (read) {\n var readOptions = makeFieldFunctionOptions(this, objectOrReference, options, context, context.store.getStorage(isReference(objectOrReference)\n ? objectOrReference.__ref\n : objectOrReference, storeFieldName));\n return cacheSlot.withValue(this.cache, read, [existing, readOptions]);\n }\n return existing;\n };\n Policies.prototype.getReadFunction = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return policy && policy.read;\n };\n Policies.prototype.getMergeFunction = function (parentTypename, fieldName, childTypename) {\n var policy = this.getFieldPolicy(parentTypename, fieldName, false);\n var merge = policy && policy.merge;\n if (!merge && childTypename) {\n policy = this.getTypePolicy(childTypename);\n merge = policy && policy.merge;\n }\n return merge;\n };\n Policies.prototype.runMergeFunction = function (existing, incoming, _a, context, storage) {\n var field = _a.field, typename = _a.typename, merge = _a.merge;\n if (merge === mergeTrueFn) {\n return makeMergeObjectsFunction(context.store)(existing, incoming);\n }\n if (merge === mergeFalseFn) {\n return incoming;\n }\n if (context.overwrite) {\n existing = void 0;\n }\n return merge(existing, incoming, makeFieldFunctionOptions(this, void 0, { typename: typename, fieldName: field.name.value, field: field, variables: context.variables }, context, storage || Object.create(null)));\n };\n return Policies;\n}());\nexport { Policies };\nfunction makeFieldFunctionOptions(policies, objectOrReference, fieldSpec, context, storage) {\n var storeFieldName = policies.getStoreFieldName(fieldSpec);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var variables = fieldSpec.variables || context.variables;\n var _a = context.store, toReference = _a.toReference, canRead = _a.canRead;\n return {\n args: argsFromFieldSpecifier(fieldSpec),\n field: fieldSpec.field || null,\n fieldName: fieldName,\n storeFieldName: storeFieldName,\n variables: variables,\n isReference: isReference,\n toReference: toReference,\n storage: storage,\n cache: policies.cache,\n canRead: canRead,\n readField: function () {\n return policies.readField(normalizeReadFieldOptions(arguments, objectOrReference, context), context);\n },\n mergeObjects: makeMergeObjectsFunction(context.store),\n };\n}\nexport function normalizeReadFieldOptions(readFieldArgs, objectOrReference, variables) {\n var fieldNameOrOptions = readFieldArgs[0], from = readFieldArgs[1], argc = readFieldArgs.length;\n var options;\n if (typeof fieldNameOrOptions === \"string\") {\n options = {\n fieldName: fieldNameOrOptions,\n from: argc > 1 ? from : objectOrReference,\n };\n }\n else {\n options = __assign({}, fieldNameOrOptions);\n if (!hasOwn.call(options, \"from\")) {\n options.from = objectOrReference;\n }\n }\n if (__DEV__ && options.from === void 0) {\n __DEV__ && invariant.warn(\"Undefined 'from' passed to readField with arguments \".concat(stringifyForDisplay(Array.from(readFieldArgs))));\n }\n if (void 0 === options.variables) {\n options.variables = variables;\n }\n return options;\n}\nfunction makeMergeObjectsFunction(store) {\n return function mergeObjects(existing, incoming) {\n if (isArray(existing) || isArray(incoming)) {\n throw __DEV__ ? new InvariantError(\"Cannot automatically merge arrays\") : new InvariantError(4);\n }\n if (isNonNullObject(existing) &&\n isNonNullObject(incoming)) {\n var eType = store.getFieldValue(existing, \"__typename\");\n var iType = store.getFieldValue(incoming, \"__typename\");\n var typesDiffer = eType && iType && eType !== iType;\n if (typesDiffer) {\n return incoming;\n }\n if (isReference(existing) &&\n storeValueIsStoreObject(incoming)) {\n store.merge(existing.__ref, incoming);\n return existing;\n }\n if (storeValueIsStoreObject(existing) &&\n isReference(incoming)) {\n store.merge(existing, incoming.__ref);\n return incoming;\n }\n if (storeValueIsStoreObject(existing) &&\n storeValueIsStoreObject(incoming)) {\n return __assign(__assign({}, existing), incoming);\n }\n }\n return incoming;\n };\n}\n//# sourceMappingURL=policies.js.map","import { makeUniqueId } from \"./makeUniqueId.js\";\nexport function stringifyForDisplay(value) {\n var undefId = makeUniqueId(\"stringifyForDisplay\");\n return JSON.stringify(value, function (key, value) {\n return value === void 0 ? undefId : value;\n }).split(JSON.stringify(undefId)).join(\"\");\n}\n//# sourceMappingURL=stringifyForDisplay.js.map","import { __assign } from \"tslib\";\nimport { invariant, InvariantError } from \"../../utilities/globals/index.js\";\nimport { equal } from '@wry/equality';\nimport { Trie } from '@wry/trie';\nimport { createFragmentMap, getFragmentFromSelection, getDefaultValues, getFragmentDefinitions, getOperationDefinition, getTypenameFromResult, makeReference, isField, resultKeyNameFromField, isReference, shouldInclude, cloneDeep, addTypenameToDocument, isNonEmptyArray, argumentsObjectFromField, } from \"../../utilities/index.js\";\nimport { makeProcessedFieldsMerger, fieldNameFromStoreName, storeValueIsStoreObject, isArray } from \"./helpers.js\";\nimport { canonicalStringify } from \"./object-canon.js\";\nimport { normalizeReadFieldOptions } from \"./policies.js\";\n;\nfunction getContextFlavor(context, clientOnly, deferred) {\n var key = \"\".concat(clientOnly).concat(deferred);\n var flavored = context.flavors.get(key);\n if (!flavored) {\n context.flavors.set(key, flavored = (context.clientOnly === clientOnly &&\n context.deferred === deferred) ? context : __assign(__assign({}, context), { clientOnly: clientOnly, deferred: deferred }));\n }\n return flavored;\n}\nvar StoreWriter = (function () {\n function StoreWriter(cache, reader) {\n this.cache = cache;\n this.reader = reader;\n }\n StoreWriter.prototype.writeToStore = function (store, _a) {\n var _this = this;\n var query = _a.query, result = _a.result, dataId = _a.dataId, variables = _a.variables, overwrite = _a.overwrite;\n var operationDefinition = getOperationDefinition(query);\n var merger = makeProcessedFieldsMerger();\n variables = __assign(__assign({}, getDefaultValues(operationDefinition)), variables);\n var context = {\n store: store,\n written: Object.create(null),\n merge: function (existing, incoming) {\n return merger.merge(existing, incoming);\n },\n variables: variables,\n varString: canonicalStringify(variables),\n fragmentMap: createFragmentMap(getFragmentDefinitions(query)),\n overwrite: !!overwrite,\n incomingById: new Map,\n clientOnly: false,\n deferred: false,\n flavors: new Map,\n };\n var ref = this.processSelectionSet({\n result: result || Object.create(null),\n dataId: dataId,\n selectionSet: operationDefinition.selectionSet,\n mergeTree: { map: new Map },\n context: context,\n });\n if (!isReference(ref)) {\n throw __DEV__ ? new InvariantError(\"Could not identify object \".concat(JSON.stringify(result))) : new InvariantError(6);\n }\n context.incomingById.forEach(function (_a, dataId) {\n var storeObject = _a.storeObject, mergeTree = _a.mergeTree, fieldNodeSet = _a.fieldNodeSet;\n var entityRef = makeReference(dataId);\n if (mergeTree && mergeTree.map.size) {\n var applied = _this.applyMerges(mergeTree, entityRef, storeObject, context);\n if (isReference(applied)) {\n return;\n }\n storeObject = applied;\n }\n if (__DEV__ && !context.overwrite) {\n var fieldsWithSelectionSets_1 = Object.create(null);\n fieldNodeSet.forEach(function (field) {\n if (field.selectionSet) {\n fieldsWithSelectionSets_1[field.name.value] = true;\n }\n });\n var hasSelectionSet_1 = function (storeFieldName) {\n return fieldsWithSelectionSets_1[fieldNameFromStoreName(storeFieldName)] === true;\n };\n var hasMergeFunction_1 = function (storeFieldName) {\n var childTree = mergeTree && mergeTree.map.get(storeFieldName);\n return Boolean(childTree && childTree.info && childTree.info.merge);\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n if (hasSelectionSet_1(storeFieldName) &&\n !hasMergeFunction_1(storeFieldName)) {\n warnAboutDataLoss(entityRef, storeObject, storeFieldName, context.store);\n }\n });\n }\n store.merge(dataId, storeObject);\n });\n store.retain(ref.__ref);\n return ref;\n };\n StoreWriter.prototype.processSelectionSet = function (_a) {\n var _this = this;\n var dataId = _a.dataId, result = _a.result, selectionSet = _a.selectionSet, context = _a.context, mergeTree = _a.mergeTree;\n var policies = this.cache.policies;\n var incoming = Object.create(null);\n var typename = (dataId && policies.rootTypenamesById[dataId]) ||\n getTypenameFromResult(result, selectionSet, context.fragmentMap) ||\n (dataId && context.store.get(dataId, \"__typename\"));\n if (\"string\" === typeof typename) {\n incoming.__typename = typename;\n }\n var readField = function () {\n var options = normalizeReadFieldOptions(arguments, incoming, context.variables);\n if (isReference(options.from)) {\n var info = context.incomingById.get(options.from.__ref);\n if (info) {\n var result_1 = policies.readField(__assign(__assign({}, options), { from: info.storeObject }), context);\n if (result_1 !== void 0) {\n return result_1;\n }\n }\n }\n return policies.readField(options, context);\n };\n var fieldNodeSet = new Set();\n this.flattenFields(selectionSet, result, context, typename).forEach(function (context, field) {\n var _a;\n var resultFieldKey = resultKeyNameFromField(field);\n var value = result[resultFieldKey];\n fieldNodeSet.add(field);\n if (value !== void 0) {\n var storeFieldName = policies.getStoreFieldName({\n typename: typename,\n fieldName: field.name.value,\n field: field,\n variables: context.variables,\n });\n var childTree = getChildMergeTree(mergeTree, storeFieldName);\n var incomingValue = _this.processFieldValue(value, field, field.selectionSet\n ? getContextFlavor(context, false, false)\n : context, childTree);\n var childTypename = void 0;\n if (field.selectionSet &&\n (isReference(incomingValue) ||\n storeValueIsStoreObject(incomingValue))) {\n childTypename = readField(\"__typename\", incomingValue);\n }\n var merge = policies.getMergeFunction(typename, field.name.value, childTypename);\n if (merge) {\n childTree.info = {\n field: field,\n typename: typename,\n merge: merge,\n };\n }\n else {\n maybeRecycleChildMergeTree(mergeTree, storeFieldName);\n }\n incoming = context.merge(incoming, (_a = {},\n _a[storeFieldName] = incomingValue,\n _a));\n }\n else if (__DEV__ &&\n !context.clientOnly &&\n !context.deferred &&\n !addTypenameToDocument.added(field) &&\n !policies.getReadFunction(typename, field.name.value)) {\n __DEV__ && invariant.error(\"Missing field '\".concat(resultKeyNameFromField(field), \"' while writing result \").concat(JSON.stringify(result, null, 2)).substring(0, 1000));\n }\n });\n try {\n var _b = policies.identify(result, {\n typename: typename,\n selectionSet: selectionSet,\n fragmentMap: context.fragmentMap,\n storeObject: incoming,\n readField: readField,\n }), id = _b[0], keyObject = _b[1];\n dataId = dataId || id;\n if (keyObject) {\n incoming = context.merge(incoming, keyObject);\n }\n }\n catch (e) {\n if (!dataId)\n throw e;\n }\n if (\"string\" === typeof dataId) {\n var dataRef = makeReference(dataId);\n var sets = context.written[dataId] || (context.written[dataId] = []);\n if (sets.indexOf(selectionSet) >= 0)\n return dataRef;\n sets.push(selectionSet);\n if (this.reader && this.reader.isFresh(result, dataRef, selectionSet, context)) {\n return dataRef;\n }\n var previous_1 = context.incomingById.get(dataId);\n if (previous_1) {\n previous_1.storeObject = context.merge(previous_1.storeObject, incoming);\n previous_1.mergeTree = mergeMergeTrees(previous_1.mergeTree, mergeTree);\n fieldNodeSet.forEach(function (field) { return previous_1.fieldNodeSet.add(field); });\n }\n else {\n context.incomingById.set(dataId, {\n storeObject: incoming,\n mergeTree: mergeTreeIsEmpty(mergeTree) ? void 0 : mergeTree,\n fieldNodeSet: fieldNodeSet,\n });\n }\n return dataRef;\n }\n return incoming;\n };\n StoreWriter.prototype.processFieldValue = function (value, field, context, mergeTree) {\n var _this = this;\n if (!field.selectionSet || value === null) {\n return __DEV__ ? cloneDeep(value) : value;\n }\n if (isArray(value)) {\n return value.map(function (item, i) {\n var value = _this.processFieldValue(item, field, context, getChildMergeTree(mergeTree, i));\n maybeRecycleChildMergeTree(mergeTree, i);\n return value;\n });\n }\n return this.processSelectionSet({\n result: value,\n selectionSet: field.selectionSet,\n context: context,\n mergeTree: mergeTree,\n });\n };\n StoreWriter.prototype.flattenFields = function (selectionSet, result, context, typename) {\n if (typename === void 0) { typename = getTypenameFromResult(result, selectionSet, context.fragmentMap); }\n var fieldMap = new Map();\n var policies = this.cache.policies;\n var limitingTrie = new Trie(false);\n (function flatten(selectionSet, inheritedContext) {\n var visitedNode = limitingTrie.lookup(selectionSet, inheritedContext.clientOnly, inheritedContext.deferred);\n if (visitedNode.visited)\n return;\n visitedNode.visited = true;\n selectionSet.selections.forEach(function (selection) {\n if (!shouldInclude(selection, context.variables))\n return;\n var clientOnly = inheritedContext.clientOnly, deferred = inheritedContext.deferred;\n if (!(clientOnly && deferred) &&\n isNonEmptyArray(selection.directives)) {\n selection.directives.forEach(function (dir) {\n var name = dir.name.value;\n if (name === \"client\")\n clientOnly = true;\n if (name === \"defer\") {\n var args = argumentsObjectFromField(dir, context.variables);\n if (!args || args.if !== false) {\n deferred = true;\n }\n }\n });\n }\n if (isField(selection)) {\n var existing = fieldMap.get(selection);\n if (existing) {\n clientOnly = clientOnly && existing.clientOnly;\n deferred = deferred && existing.deferred;\n }\n fieldMap.set(selection, getContextFlavor(context, clientOnly, deferred));\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.fragmentMap);\n if (fragment &&\n policies.fragmentMatches(fragment, typename, result, context.variables)) {\n flatten(fragment.selectionSet, getContextFlavor(context, clientOnly, deferred));\n }\n }\n });\n })(selectionSet, context);\n return fieldMap;\n };\n StoreWriter.prototype.applyMerges = function (mergeTree, existing, incoming, context, getStorageArgs) {\n var _a;\n var _this = this;\n if (mergeTree.map.size && !isReference(incoming)) {\n var e_1 = (!isArray(incoming) &&\n (isReference(existing) || storeValueIsStoreObject(existing))) ? existing : void 0;\n var i_1 = incoming;\n if (e_1 && !getStorageArgs) {\n getStorageArgs = [isReference(e_1) ? e_1.__ref : e_1];\n }\n var changedFields_1;\n var getValue_1 = function (from, name) {\n return isArray(from)\n ? (typeof name === \"number\" ? from[name] : void 0)\n : context.store.getFieldValue(from, String(name));\n };\n mergeTree.map.forEach(function (childTree, storeFieldName) {\n var eVal = getValue_1(e_1, storeFieldName);\n var iVal = getValue_1(i_1, storeFieldName);\n if (void 0 === iVal)\n return;\n if (getStorageArgs) {\n getStorageArgs.push(storeFieldName);\n }\n var aVal = _this.applyMerges(childTree, eVal, iVal, context, getStorageArgs);\n if (aVal !== iVal) {\n changedFields_1 = changedFields_1 || new Map;\n changedFields_1.set(storeFieldName, aVal);\n }\n if (getStorageArgs) {\n invariant(getStorageArgs.pop() === storeFieldName);\n }\n });\n if (changedFields_1) {\n incoming = (isArray(i_1) ? i_1.slice(0) : __assign({}, i_1));\n changedFields_1.forEach(function (value, name) {\n incoming[name] = value;\n });\n }\n }\n if (mergeTree.info) {\n return this.cache.policies.runMergeFunction(existing, incoming, mergeTree.info, context, getStorageArgs && (_a = context.store).getStorage.apply(_a, getStorageArgs));\n }\n return incoming;\n };\n return StoreWriter;\n}());\nexport { StoreWriter };\nvar emptyMergeTreePool = [];\nfunction getChildMergeTree(_a, name) {\n var map = _a.map;\n if (!map.has(name)) {\n map.set(name, emptyMergeTreePool.pop() || { map: new Map });\n }\n return map.get(name);\n}\nfunction mergeMergeTrees(left, right) {\n if (left === right || !right || mergeTreeIsEmpty(right))\n return left;\n if (!left || mergeTreeIsEmpty(left))\n return right;\n var info = left.info && right.info ? __assign(__assign({}, left.info), right.info) : left.info || right.info;\n var needToMergeMaps = left.map.size && right.map.size;\n var map = needToMergeMaps ? new Map :\n left.map.size ? left.map : right.map;\n var merged = { info: info, map: map };\n if (needToMergeMaps) {\n var remainingRightKeys_1 = new Set(right.map.keys());\n left.map.forEach(function (leftTree, key) {\n merged.map.set(key, mergeMergeTrees(leftTree, right.map.get(key)));\n remainingRightKeys_1.delete(key);\n });\n remainingRightKeys_1.forEach(function (key) {\n merged.map.set(key, mergeMergeTrees(right.map.get(key), left.map.get(key)));\n });\n }\n return merged;\n}\nfunction mergeTreeIsEmpty(tree) {\n return !tree || !(tree.info || tree.map.size);\n}\nfunction maybeRecycleChildMergeTree(_a, name) {\n var map = _a.map;\n var childTree = map.get(name);\n if (childTree && mergeTreeIsEmpty(childTree)) {\n emptyMergeTreePool.push(childTree);\n map.delete(name);\n }\n}\nvar warnings = new Set();\nfunction warnAboutDataLoss(existingRef, incomingObj, storeFieldName, store) {\n var getChild = function (objOrRef) {\n var child = store.getFieldValue(objOrRef, storeFieldName);\n return typeof child === \"object\" && child;\n };\n var existing = getChild(existingRef);\n if (!existing)\n return;\n var incoming = getChild(incomingObj);\n if (!incoming)\n return;\n if (isReference(existing))\n return;\n if (equal(existing, incoming))\n return;\n if (Object.keys(existing).every(function (key) { return store.getFieldValue(incoming, key) !== void 0; })) {\n return;\n }\n var parentType = store.getFieldValue(existingRef, \"__typename\") ||\n store.getFieldValue(incomingObj, \"__typename\");\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var typeDotName = \"\".concat(parentType, \".\").concat(fieldName);\n if (warnings.has(typeDotName))\n return;\n warnings.add(typeDotName);\n var childTypenames = [];\n if (!isArray(existing) &&\n !isArray(incoming)) {\n [existing, incoming].forEach(function (child) {\n var typename = store.getFieldValue(child, \"__typename\");\n if (typeof typename === \"string\" &&\n !childTypenames.includes(typename)) {\n childTypenames.push(typename);\n }\n });\n }\n __DEV__ && invariant.warn(\"Cache data may be lost when replacing the \".concat(fieldName, \" field of a \").concat(parentType, \" object.\\n\\nTo address this problem (which is not a bug in Apollo Client), \").concat(childTypenames.length\n ? \"either ensure all objects of type \" +\n childTypenames.join(\" and \") + \" have an ID or a custom merge function, or \"\n : \"\", \"define a custom merge function for the \").concat(typeDotName, \" field, so InMemoryCache can safely merge these objects:\\n\\n existing: \").concat(JSON.stringify(existing).slice(0, 1000), \"\\n incoming: \").concat(JSON.stringify(incoming).slice(0, 1000), \"\\n\\nFor more information about these options, please refer to the documentation:\\n\\n * Ensuring entity objects have IDs: https://go.apollo.dev/c/generating-unique-identifiers\\n * Defining custom merge functions: https://go.apollo.dev/c/merging-non-normalized-objects\\n\"));\n}\n//# sourceMappingURL=writeToStore.js.map","import { __assign, __extends } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport \"./fixPolyfills.js\";\nimport { wrap } from 'optimism';\nimport { equal } from '@wry/equality';\nimport { ApolloCache } from \"../core/cache.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { addTypenameToDocument, isReference, } from \"../../utilities/index.js\";\nimport { StoreReader } from \"./readFromStore.js\";\nimport { StoreWriter } from \"./writeToStore.js\";\nimport { EntityStore, supportsResultCaching } from \"./entityStore.js\";\nimport { makeVar, forgetCache, recallCache } from \"./reactiveVars.js\";\nimport { Policies } from \"./policies.js\";\nimport { hasOwn, normalizeConfig, shouldCanonizeResults } from \"./helpers.js\";\nimport { canonicalStringify } from \"./object-canon.js\";\nvar InMemoryCache = (function (_super) {\n __extends(InMemoryCache, _super);\n function InMemoryCache(config) {\n if (config === void 0) { config = {}; }\n var _this = _super.call(this) || this;\n _this.watches = new Set();\n _this.typenameDocumentCache = new Map();\n _this.makeVar = makeVar;\n _this.txCount = 0;\n _this.config = normalizeConfig(config);\n _this.addTypename = !!_this.config.addTypename;\n _this.policies = new Policies({\n cache: _this,\n dataIdFromObject: _this.config.dataIdFromObject,\n possibleTypes: _this.config.possibleTypes,\n typePolicies: _this.config.typePolicies,\n });\n _this.init();\n return _this;\n }\n InMemoryCache.prototype.init = function () {\n var rootStore = this.data = new EntityStore.Root({\n policies: this.policies,\n resultCaching: this.config.resultCaching,\n });\n this.optimisticData = rootStore.stump;\n this.resetResultCache();\n };\n InMemoryCache.prototype.resetResultCache = function (resetResultIdentities) {\n var _this = this;\n var previousReader = this.storeReader;\n this.storeWriter = new StoreWriter(this, this.storeReader = new StoreReader({\n cache: this,\n addTypename: this.addTypename,\n resultCacheMaxSize: this.config.resultCacheMaxSize,\n canonizeResults: shouldCanonizeResults(this.config),\n canon: resetResultIdentities\n ? void 0\n : previousReader && previousReader.canon,\n }));\n this.maybeBroadcastWatch = wrap(function (c, options) {\n return _this.broadcastWatch(c, options);\n }, {\n max: this.config.resultCacheMaxSize,\n makeCacheKey: function (c) {\n var store = c.optimistic ? _this.optimisticData : _this.data;\n if (supportsResultCaching(store)) {\n var optimistic = c.optimistic, rootId = c.rootId, variables = c.variables;\n return store.makeCacheKey(c.query, c.callback, canonicalStringify({ optimistic: optimistic, rootId: rootId, variables: variables }));\n }\n }\n });\n new Set([\n this.data.group,\n this.optimisticData.group,\n ]).forEach(function (group) { return group.resetCaching(); });\n };\n InMemoryCache.prototype.restore = function (data) {\n this.init();\n if (data)\n this.data.replace(data);\n return this;\n };\n InMemoryCache.prototype.extract = function (optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return (optimistic ? this.optimisticData : this.data).extract();\n };\n InMemoryCache.prototype.read = function (options) {\n var _a = options.returnPartialData, returnPartialData = _a === void 0 ? false : _a;\n try {\n return this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, config: this.config, returnPartialData: returnPartialData })).result || null;\n }\n catch (e) {\n if (e instanceof MissingFieldError) {\n return null;\n }\n throw e;\n }\n };\n InMemoryCache.prototype.write = function (options) {\n try {\n ++this.txCount;\n return this.storeWriter.writeToStore(this.data, options);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.modify = function (options) {\n if (hasOwn.call(options, \"id\") && !options.id) {\n return false;\n }\n var store = options.optimistic\n ? this.optimisticData\n : this.data;\n try {\n ++this.txCount;\n return store.modify(options.id || \"ROOT_QUERY\", options.fields);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.diff = function (options) {\n return this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, rootId: options.id || \"ROOT_QUERY\", config: this.config }));\n };\n InMemoryCache.prototype.watch = function (watch) {\n var _this = this;\n if (!this.watches.size) {\n recallCache(this);\n }\n this.watches.add(watch);\n if (watch.immediate) {\n this.maybeBroadcastWatch(watch);\n }\n return function () {\n if (_this.watches.delete(watch) && !_this.watches.size) {\n forgetCache(_this);\n }\n _this.maybeBroadcastWatch.forget(watch);\n };\n };\n InMemoryCache.prototype.gc = function (options) {\n canonicalStringify.reset();\n var ids = this.optimisticData.gc();\n if (options && !this.txCount) {\n if (options.resetResultCache) {\n this.resetResultCache(options.resetResultIdentities);\n }\n else if (options.resetResultIdentities) {\n this.storeReader.resetCanon();\n }\n }\n return ids;\n };\n InMemoryCache.prototype.retain = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).retain(rootId);\n };\n InMemoryCache.prototype.release = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).release(rootId);\n };\n InMemoryCache.prototype.identify = function (object) {\n if (isReference(object))\n return object.__ref;\n try {\n return this.policies.identify(object)[0];\n }\n catch (e) {\n __DEV__ && invariant.warn(e);\n }\n };\n InMemoryCache.prototype.evict = function (options) {\n if (!options.id) {\n if (hasOwn.call(options, \"id\")) {\n return false;\n }\n options = __assign(__assign({}, options), { id: \"ROOT_QUERY\" });\n }\n try {\n ++this.txCount;\n return this.optimisticData.evict(options, this.data);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.reset = function (options) {\n var _this = this;\n this.init();\n canonicalStringify.reset();\n if (options && options.discardWatches) {\n this.watches.forEach(function (watch) { return _this.maybeBroadcastWatch.forget(watch); });\n this.watches.clear();\n forgetCache(this);\n }\n else {\n this.broadcastWatches();\n }\n return Promise.resolve();\n };\n InMemoryCache.prototype.removeOptimistic = function (idToRemove) {\n var newOptimisticData = this.optimisticData.removeLayer(idToRemove);\n if (newOptimisticData !== this.optimisticData) {\n this.optimisticData = newOptimisticData;\n this.broadcastWatches();\n }\n };\n InMemoryCache.prototype.batch = function (options) {\n var _this = this;\n var update = options.update, _a = options.optimistic, optimistic = _a === void 0 ? true : _a, removeOptimistic = options.removeOptimistic, onWatchUpdated = options.onWatchUpdated;\n var updateResult;\n var perform = function (layer) {\n var _a = _this, data = _a.data, optimisticData = _a.optimisticData;\n ++_this.txCount;\n if (layer) {\n _this.data = _this.optimisticData = layer;\n }\n try {\n return updateResult = update(_this);\n }\n finally {\n --_this.txCount;\n _this.data = data;\n _this.optimisticData = optimisticData;\n }\n };\n var alreadyDirty = new Set();\n if (onWatchUpdated && !this.txCount) {\n this.broadcastWatches(__assign(__assign({}, options), { onWatchUpdated: function (watch) {\n alreadyDirty.add(watch);\n return false;\n } }));\n }\n if (typeof optimistic === 'string') {\n this.optimisticData = this.optimisticData.addLayer(optimistic, perform);\n }\n else if (optimistic === false) {\n perform(this.data);\n }\n else {\n perform();\n }\n if (typeof removeOptimistic === \"string\") {\n this.optimisticData = this.optimisticData.removeLayer(removeOptimistic);\n }\n if (onWatchUpdated && alreadyDirty.size) {\n this.broadcastWatches(__assign(__assign({}, options), { onWatchUpdated: function (watch, diff) {\n var result = onWatchUpdated.call(this, watch, diff);\n if (result !== false) {\n alreadyDirty.delete(watch);\n }\n return result;\n } }));\n if (alreadyDirty.size) {\n alreadyDirty.forEach(function (watch) { return _this.maybeBroadcastWatch.dirty(watch); });\n }\n }\n else {\n this.broadcastWatches(options);\n }\n return updateResult;\n };\n InMemoryCache.prototype.performTransaction = function (update, optimisticId) {\n return this.batch({\n update: update,\n optimistic: optimisticId || (optimisticId !== null),\n });\n };\n InMemoryCache.prototype.transformDocument = function (document) {\n if (this.addTypename) {\n var result = this.typenameDocumentCache.get(document);\n if (!result) {\n result = addTypenameToDocument(document);\n this.typenameDocumentCache.set(document, result);\n this.typenameDocumentCache.set(result, result);\n }\n return result;\n }\n return document;\n };\n InMemoryCache.prototype.broadcastWatches = function (options) {\n var _this = this;\n if (!this.txCount) {\n this.watches.forEach(function (c) { return _this.maybeBroadcastWatch(c, options); });\n }\n };\n InMemoryCache.prototype.broadcastWatch = function (c, options) {\n var lastDiff = c.lastDiff;\n var diff = this.diff(c);\n if (options) {\n if (c.optimistic &&\n typeof options.optimistic === \"string\") {\n diff.fromOptimisticTransaction = true;\n }\n if (options.onWatchUpdated &&\n options.onWatchUpdated.call(this, c, diff, lastDiff) === false) {\n return;\n }\n }\n if (!lastDiff || !equal(lastDiff.result, diff.result)) {\n c.callback(c.lastDiff = diff, lastDiff);\n }\n };\n return InMemoryCache;\n}(ApolloCache));\nexport { InMemoryCache };\n//# sourceMappingURL=inMemoryCache.js.map","import { __extends } from \"tslib\";\nimport { Observable } from \"../../utilities/index.js\";\nimport { ApolloLink } from \"../core/index.js\";\nexport function onError(errorHandler) {\n return new ApolloLink(function (operation, forward) {\n return new Observable(function (observer) {\n var sub;\n var retriedSub;\n var retriedResult;\n try {\n sub = forward(operation).subscribe({\n next: function (result) {\n if (result.errors) {\n retriedResult = errorHandler({\n graphQLErrors: result.errors,\n response: result,\n operation: operation,\n forward: forward,\n });\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n }\n observer.next(result);\n },\n error: function (networkError) {\n retriedResult = errorHandler({\n operation: operation,\n networkError: networkError,\n graphQLErrors: networkError &&\n networkError.result &&\n networkError.result.errors,\n forward: forward,\n });\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n return;\n }\n observer.error(networkError);\n },\n complete: function () {\n if (!retriedResult) {\n observer.complete.bind(observer)();\n }\n },\n });\n }\n catch (e) {\n errorHandler({ networkError: e, operation: operation, forward: forward });\n observer.error(e);\n }\n return function () {\n if (sub)\n sub.unsubscribe();\n if (retriedSub)\n sub.unsubscribe();\n };\n });\n });\n}\nvar ErrorLink = (function (_super) {\n __extends(ErrorLink, _super);\n function ErrorLink(errorHandler) {\n var _this = _super.call(this) || this;\n _this.link = onError(errorHandler);\n return _this;\n }\n ErrorLink.prototype.request = function (operation, forward) {\n return this.link.request(operation, forward);\n };\n return ErrorLink;\n}(ApolloLink));\nexport { ErrorLink };\n//# sourceMappingURL=index.js.map","import { __rest } from \"tslib\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { Observable } from \"../../utilities/index.js\";\nexport function setContext(setter) {\n return new ApolloLink(function (operation, forward) {\n var request = __rest(operation, []);\n return new Observable(function (observer) {\n var handle;\n var closed = false;\n Promise.resolve(request)\n .then(function (req) { return setter(req, operation.getContext()); })\n .then(operation.setContext)\n .then(function () {\n if (closed)\n return;\n handle = forward(operation).subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer),\n });\n })\n .catch(observer.error.bind(observer));\n return function () {\n closed = true;\n if (handle)\n handle.unsubscribe();\n };\n });\n });\n}\n//# sourceMappingURL=index.js.map","import {\n ApolloClient,\n from,\n HttpLink,\n InMemoryCache,\n makeVar,\n NormalizedCacheObject,\n} from '@apollo/client';\nimport { setContext } from '@apollo/client/link/context';\nimport { onError } from '@apollo/client/link/error';\nimport { getToken } from '../utils/utilsToken';\n\nconst errorLink = onError(({ graphQLErrors, networkError }) => {\n if (graphQLErrors)\n graphQLErrors.forEach(({ message, locations, path }) =>\n console.log(\n `[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`\n )\n );\n\n if (networkError) console.log(`[Network error]: ${networkError}`);\n});\n\n// computed props\nexport const currentSelectedParkingId = makeVar(null);\nexport const parkingsInUnlockRadius = makeVar([]);\nexport const currentSelectedVendorId = makeVar(null);\n\nlet apolloClient: ApolloClient | null = null;\n\nconst authLink = setContext((_, { headers }) => {\n const token = getToken();\n\n return {\n headers: {\n ...headers,\n authorization: token ? `Bearer ${token}` : '',\n },\n };\n});\n\nconst httpLink = new HttpLink({\n uri: process.env.NEXT_PUBLIC_API_URL,\n});\n\nexport const createApolloClient = () => {\n if (!!apolloClient) return apolloClient;\n\n apolloClient = new ApolloClient({\n link: errorLink.concat(authLink).concat(httpLink),\n cache: new InMemoryCache({\n typePolicies: {\n Parking: {\n fields: {\n isSelected: {\n read(value, { readField }) {\n const parkingId = readField('id');\n const isSelected = parkingId === currentSelectedParkingId();\n\n return isSelected;\n },\n },\n isInUnlockRadius: {\n read(value, { readField }) {\n const parkingId = readField('id');\n const isInUnlockRadius = !!parkingsInUnlockRadius().find(\n (id) => id === parkingId\n );\n\n return isInUnlockRadius;\n },\n },\n },\n },\n Vendor: {\n fields: {\n isSelected: {\n read(value, { readField }) {\n const vendorId = readField('id');\n const isSelected = vendorId === currentSelectedVendorId();\n\n return isSelected;\n },\n },\n },\n },\n },\n }),\n connectToDevTools: true,\n });\n\n return apolloClient;\n};\n","import { invariant } from \"../../utilities/globals/index.js\";\nimport * as React from 'react';\nimport { getApolloContext } from \"./ApolloContext.js\";\nexport var ApolloProvider = function (_a) {\n var client = _a.client, children = _a.children;\n var ApolloContext = getApolloContext();\n return (React.createElement(ApolloContext.Consumer, null, function (context) {\n if (context === void 0) { context = {}; }\n if (client && context.client !== client) {\n context = Object.assign({}, context, { client: client });\n }\n __DEV__ ? invariant(context.client, 'ApolloProvider was not passed a client instance. Make ' +\n 'sure you pass in your client via the \"client\" prop.') : invariant(context.client, 26);\n return (React.createElement(ApolloContext.Provider, { value: context }, children));\n }));\n};\n//# sourceMappingURL=ApolloProvider.js.map","import { gql } from '@apollo/client';\n\nexport const CurrentUserQuery = gql`\n query me {\n authenticatedItem {\n ... on User {\n id\n email\n phoneNumber\n name\n isPhoneNumberVerified\n walletBalance\n stripeVerificationSession {\n status\n }\n userParkings {\n id\n status\n parking {\n id\n }\n }\n completedQuests {\n id\n createdAt\n quest {\n id\n title\n reward\n description\n type\n }\n }\n organization {\n id\n name\n }\n }\n }\n }\n`;\n","import { gql } from \"@apollo/client\";\n\nexport const RedeemForgotPasswordTokenMutation = gql`\n mutation redeemForgotPasswordTokenMutation(\n $email: String!\n $token: String!\n $password: String!\n ) {\n redeemUserPasswordResetToken(\n email: $email\n token: $token\n password: $password\n ) {\n ... on RedeemUserPasswordResetTokenResult {\n code\n message\n }\n }\n }\n`;\n","import { gql } from '@apollo/client';\n\nexport const LoginWithPasswordMutation = gql`\n mutation loginWithPasswordMutation($email: String!, $password: String!) {\n authenticateUserWithPassword(email: $email, password: $password) {\n ... on UserAuthenticationWithPasswordSuccess {\n item {\n id\n email\n name\n phoneNumber\n isPhoneNumberVerified\n stripeVerificationSession {\n status\n }\n userParkings {\n id\n status\n parking {\n id\n }\n }\n organization {\n id\n name\n }\n }\n sessionToken\n }\n\n ... on UserAuthenticationWithPasswordFailure {\n message\n }\n }\n }\n`;\n","import { gql } from '@apollo/client';\n\nexport const RegisterRiderMutation = gql`\n mutation registerRider(\n $name: String!\n $email: String!\n $password: String!\n $phoneNumber: String!\n $isTermsAccepted: Boolean!\n $isOfLegalAge: Boolean!\n $companyId: ID\n ) {\n registerRider(\n name: $name\n email: $email\n password: $password\n phoneNumber: $phoneNumber\n isTermsAccepted: $isTermsAccepted\n isOfLegalAge: $isOfLegalAge\n companyId: $companyId\n ) {\n email\n }\n }\n`;\n","import { ApolloProvider } from '@apollo/client';\nimport React, { createContext, useContext, useEffect, useState } from 'react';\nimport { CurrentUserQuery } from '../graphql/auth/currentUserQuery';\nimport { RedeemForgotPasswordTokenMutation } from '../graphql/auth/forgotPassword/redeemForgotPasswordTokenMutation';\nimport { LoginWithPasswordMutation } from '../graphql/auth/loginWithPasswordMutation';\nimport { RegisterRiderMutation } from '../graphql/auth/registerRiderMutation';\nimport { PasswordChangeType, UserType } from '../utils/utilTypes';\nimport { createApolloClient } from './apollo';\nimport { clearToken, getToken, saveToken } from '../utils/utilsToken';\n\ntype LoginResponseType = {\n authenticateUserWithPassword: {\n item: UserType;\n __typename: string;\n sessionToken: string;\n };\n};\n\nexport const AuthContext = createContext<{\n getCurrentUser: () => Promise;\n currentUser: UserType | null;\n login: (user: UserType) => void;\n logout: () => void;\n signUp: (user: UserType) => void;\n changePassword: (payload: PasswordChangeType) => void;\n}>({\n getCurrentUser: () => Promise.resolve(null),\n currentUser: null,\n logout: () => {},\n login: () => {},\n signUp: () => {},\n changePassword: () => {},\n});\n\nlet apolloClient = createApolloClient();\n\nexport const AuthProvider = ({ children }: { children: React.ReactNode }) => {\n const auth = useProvideAuth();\n\n return (\n \n {children}\n \n );\n};\n\n// this gets imported in components where we need auth\nexport const useAuth = () => {\n return useContext<{\n getCurrentUser: () => Promise;\n currentUser: UserType | null;\n login: (user: UserType) => void;\n logout: () => void;\n signUp: (user: UserType) => void;\n changePassword: (payload: PasswordChangeType) => void;\n }>(AuthContext);\n};\n\nfunction useProvideAuth() {\n const [currentUser, setCurrentUser] = useState(null);\n\n const login = async ({\n email,\n password,\n }: UserType): Promise => {\n const { data } = await apolloClient.mutate({\n mutation: LoginWithPasswordMutation,\n variables: {\n email: email.toLowerCase(),\n password,\n },\n });\n\n if (\n data?.authenticateUserWithPassword?.__typename ===\n 'UserAuthenticationWithPasswordSuccess'\n ) {\n const token = data?.authenticateUserWithPassword.sessionToken;\n saveToken(token);\n setCurrentUser(data?.authenticateUserWithPassword?.item);\n }\n\n return data?.authenticateUserWithPassword;\n };\n\n const signUp = async ({\n email,\n password,\n name,\n phoneNumber,\n isTermsAccepted,\n isOfLegalAge,\n companyId,\n }: UserType) => {\n const { data } = await apolloClient.mutate({\n mutation: RegisterRiderMutation,\n variables: {\n email: email.toLowerCase(),\n password,\n name,\n phoneNumber,\n isTermsAccepted,\n isOfLegalAge,\n companyId,\n },\n });\n };\n\n const logout = async () => {\n setCurrentUser(null);\n clearToken();\n setTimeout(() => {\n apolloClient.clearStore();\n }, 1000);\n };\n\n const changePassword = async ({\n email,\n password,\n token,\n }: PasswordChangeType) => {\n const { data } = await apolloClient.mutate({\n mutation: RedeemForgotPasswordTokenMutation,\n variables: {\n email,\n password,\n token,\n },\n });\n\n if (data?.redeemUserPasswordResetToken?.code === 'FAILURE') {\n return { error: data?.redeemUserPasswordResetToken?.message };\n }\n\n return { error: null, data: data?.redeemUserPasswordResetToken };\n };\n\n const getCurrentUser = async () => {\n const { data } = await apolloClient.query({\n query: CurrentUserQuery,\n fetchPolicy: 'network-only',\n });\n\n const user = data?.authenticatedItem || null;\n\n setCurrentUser(user);\n return user;\n };\n\n return {\n getCurrentUser,\n currentUser,\n login,\n logout,\n signUp,\n changePassword,\n };\n}\n","var V3_URL = 'https://js.stripe.com/v3';\nvar V3_URL_REGEX = /^https:\\/\\/js\\.stripe\\.com\\/v3\\/?(\\?.*)?$/;\nvar EXISTING_SCRIPT_MESSAGE = 'loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used';\nvar findScript = function findScript() {\n var scripts = document.querySelectorAll(\"script[src^=\\\"\".concat(V3_URL, \"\\\"]\"));\n\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i];\n\n if (!V3_URL_REGEX.test(script.src)) {\n continue;\n }\n\n return script;\n }\n\n return null;\n};\n\nvar injectScript = function injectScript(params) {\n var queryString = params && !params.advancedFraudSignals ? '?advancedFraudSignals=false' : '';\n var script = document.createElement('script');\n script.src = \"\".concat(V3_URL).concat(queryString);\n var headOrBody = document.head || document.body;\n\n if (!headOrBody) {\n throw new Error('Expected document.body not to be null. Stripe.js requires a element.');\n }\n\n headOrBody.appendChild(script);\n return script;\n};\n\nvar registerWrapper = function registerWrapper(stripe, startTime) {\n if (!stripe || !stripe._registerWrapper) {\n return;\n }\n\n stripe._registerWrapper({\n name: 'stripe-js',\n version: \"1.52.1\",\n startTime: startTime\n });\n};\n\nvar stripePromise = null;\nvar loadScript = function loadScript(params) {\n // Ensure that we only attempt to load Stripe.js at most once\n if (stripePromise !== null) {\n return stripePromise;\n }\n\n stripePromise = new Promise(function (resolve, reject) {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n // Resolve to null when imported server side. This makes the module\n // safe to import in an isomorphic code base.\n resolve(null);\n return;\n }\n\n if (window.Stripe && params) {\n console.warn(EXISTING_SCRIPT_MESSAGE);\n }\n\n if (window.Stripe) {\n resolve(window.Stripe);\n return;\n }\n\n try {\n var script = findScript();\n\n if (script && params) {\n console.warn(EXISTING_SCRIPT_MESSAGE);\n } else if (!script) {\n script = injectScript(params);\n }\n\n script.addEventListener('load', function () {\n if (window.Stripe) {\n resolve(window.Stripe);\n } else {\n reject(new Error('Stripe.js not available'));\n }\n });\n script.addEventListener('error', function () {\n reject(new Error('Failed to load Stripe.js'));\n });\n } catch (error) {\n reject(error);\n return;\n }\n });\n return stripePromise;\n};\nvar initStripe = function initStripe(maybeStripe, args, startTime) {\n if (maybeStripe === null) {\n return null;\n }\n\n var stripe = maybeStripe.apply(undefined, args);\n registerWrapper(stripe, startTime);\n return stripe;\n}; // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\n// own script injection.\n\nvar stripePromise$1 = Promise.resolve().then(function () {\n return loadScript(null);\n});\nvar loadCalled = false;\nstripePromise$1[\"catch\"](function (err) {\n if (!loadCalled) {\n console.warn(err);\n }\n});\nvar loadStripe = function loadStripe() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n loadCalled = true;\n var startTime = Date.now();\n return stripePromise$1.then(function (maybeStripe) {\n return initStripe(maybeStripe, args, startTime);\n });\n};\n\nexport { loadStripe };\n","import { Stripe, loadStripe } from '@stripe/stripe-js';\n\nexport let stripe: Stripe | null;\n\nconst initStripe = async () => {\n stripe = await loadStripe(process.env.NEXT_PUBLIC_STRIPE_PUBLIC_KEY!);\n};\n\ninitStripe();\n","export const supportedLngs = [\"ro\", \"en\", \"el\", \"sk\", \"fr-CH\"];\nexport const DEFAULT_LANGUAGE = \"en\";\n\nexport const ni18nConfig = {\n supportedLngs,\n ns: [\"common\"],\n};\n","var _path, _path2;\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgMap = function SvgMap(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 35,\n height: 32,\n viewBox: \"0 0 36 36\",\n stroke: \"#C4C4C4\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n strokeWidth: 3\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2 7.636v22.546l9.864-5.636 11.272 5.636L33 24.546V2l-9.864 5.636L11.864 2 2 7.636Z\",\n fill: \"#fff\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.864 2v22.546M23.136 7.636v22.546\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n};\n\nexport default SvgMap;","\"use client\";\nimport Script from \"next/script\";\n\nconst GoogleAnalytics = ({ GA_TRACKING_ID }: { GA_TRACKING_ID: string }) => {\n return (\n <>\n \n \n {`\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n\n gtag('config', \"${GA_TRACKING_ID}\");\n `}\n \n \n );\n};\n\nexport default GoogleAnalytics;","var _path;\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgProfile = function SvgProfile(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 33,\n height: 33,\n viewBox: \"0 0 36 36\",\n fill: \"none\",\n stroke: \"#c4c4c4\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m7.012 26.215-.515 1.079.936.743A14.523 14.523 0 0 0 16.5 31.2c3.42 0 6.568-1.178 9.067-3.163l.927-.736-.5-1.073c-.36-.772-1.066-1.333-1.692-1.724-.673-.42-1.485-.784-2.334-1.082-1.688-.595-3.718-.997-5.468-.997s-3.776.403-5.463.997c-.847.299-1.658.662-2.33 1.082-.628.39-1.33.948-1.695 1.711Zm18.823-.793 1.204 1.465 1.149-1.509A14.617 14.617 0 0 0 31.2 16.5c0-8.105-6.595-14.7-14.7-14.7S1.8 8.395 1.8 16.5c0 3.35 1.143 6.422 3.012 8.878l1.149 1.509 1.204-1.465c.892-1.085 2.56-1.938 4.497-2.514 1.896-.563 3.786-.783 4.838-.783s2.942.22 4.838.784c1.937.575 3.605 1.428 4.497 2.513ZM1.5 16.5c0-8.28 6.72-15 15-15 8.28 0 15 6.72 15 15 0 8.28-6.72 15-15 15-8.28 0-15-6.72-15-15Zm10.725-4.125A4.26 4.26 0 0 1 16.5 8.1a4.26 4.26 0 0 1 4.275 4.275A4.26 4.26 0 0 1 16.5 16.65a4.26 4.26 0 0 1-4.275-4.275Zm.3 0A3.972 3.972 0 0 0 16.5 16.35a3.972 3.972 0 0 0 3.975-3.975A3.972 3.972 0 0 0 16.5 8.4a3.972 3.972 0 0 0-3.975 3.975Z\",\n strokeWidth: 3\n })));\n};\n\nexport default SvgProfile;","var _path;\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nvar SvgCar = function SvgCar(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n fill: \"none\",\n stroke: \"#c4c4c4\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M15.764 4a3 3 0 0 1 2.683 1.658l1.386 2.771c.244-.1.484-.208.72-.324a1 1 0 0 1 .894 1.79c-.24.107-.482.211-.725.312l.961 1.923A3 3 0 0 1 22 13.473V16a3 3 0 0 1-1 2.236V19.5a1.5 1.5 0 1 1-3 0V19H6v.5a1.5 1.5 0 0 1-3 0v-1.264c-.614-.55-1-1.348-1-2.236v-2.528a3 3 0 0 1 .317-1.341l.953-1.908a12.49 12.49 0 0 1-.715-.327 1.01 1.01 0 0 1-.45-1.343 1 1 0 0 1 1.342-.448c.237.117.477.225.72.324l1.386-2.77A3 3 0 0 1 8.236 4h7.528ZM7.5 13a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3Zm9 0a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3Zm-.736-7H8.236a1 1 0 0 0-.832.445l-.062.108-1.27 2.538C7.62 9.555 9.706 10 12 10c2.142 0 4.101-.388 5.61-.817l.317-.092-1.269-2.538a1 1 0 0 0-.77-.545L15.765 6h-.001Z\"\n })));\n};\n\nexport default SvgCar;","import MapIcon from '../assets/svg/map.svg';\nimport RequestLocationIcon from '../assets/svg/request_location.svg';\nimport ProfileIcon from '../assets/svg/profile.svg';\nimport CarIcon from '../assets/svg/car.svg';\n\ntype RouteType = {\n id: string;\n name: string;\n href: string;\n icon: React.ComponentType<{ className?: string }>;\n};\n\nexport const routes: RouteType[] = [\n {\n id: 'map',\n name: 'Map',\n href: '/',\n icon: MapIcon,\n },\n {\n id: 'profile',\n name: 'Profile',\n href: '/profile',\n icon: ProfileIcon,\n },\n];\n\nexport const zenRoutes: RouteType[] = [\n {\n id: 'map',\n name: 'Map',\n href: '/',\n icon: MapIcon,\n },\n {\n id: 'car',\n name: 'Car',\n href: '/zen',\n icon: CarIcon,\n },\n {\n id: 'profile',\n name: 'Profile',\n href: '/profile',\n icon: ProfileIcon,\n },\n];\n\nexport type BottomRouteType = {\n name: string;\n href: string;\n icon: React.ComponentType<{ className?: string }>;\n};\n","import { BottomRouteType, routes, zenRoutes } from '../../../lib/routes';\nimport { useRouter } from 'next/router';\nimport { useAuth } from '../../../lib/auth';\nimport { useTranslation } from 'react-i18next';\n\nconst hideNavRoutes = ['/rewards/[id]', '/reward-claims/[id]'];\nexport const BottomNav = () => {\n const router = useRouter();\n const { currentUser } = useAuth();\n const { t } = useTranslation();\n\n if (hideNavRoutes.includes(router.pathname)) {\n return null;\n }\n\n const onRoutePress = (selectedRoute: BottomRouteType) => {\n if (!currentUser?.isPhoneNumberVerified) {\n return;\n }\n\n router.push(selectedRoute.href, undefined, { shallow: true });\n };\n\n let usedRoutes = routes;\n\n if (currentUser?.organization && currentUser.organization.name === 'ZEN') {\n usedRoutes = zenRoutes;\n }\n\n return (\n
\n {usedRoutes.map((route, index) => {\n const isActiveRoute = route.href === router.route;\n\n return (\n onRoutePress(route)}\n >\n
{t(route.id)}
\n \n
\n );\n })}\n \n );\n};\n","import { PageProps } from './props';\n\nexport const Page = ({ children }: PageProps) => {\n return
{children}
;\n};\n","import { useRouter } from 'next/router';\nimport { useEffect, useState } from 'react';\nimport { useAuth } from '../../../lib/auth';\nimport { Loader } from '../../Loader';\nimport { BottomNav } from '../BottomNav';\nimport { Page } from '../Page';\nimport { AppContainerProps } from './props';\nimport { Toaster } from 'react-hot-toast';\n\nconst whitelistRoute = [\n '/auth/login',\n '/auth/register',\n '/auth/change-password',\n '/auth/forgot-password',\n '/campaigns',\n '/reward-claims/[id]',\n '/vendor-validator',\n];\n\nconst fullScreenAuthenticatedRoutes = [\n '/vendor-claims/[id]',\n '/auth/verify-phone-number',\n];\n\nconst authAgnosticRoutes = ['/invites'];\n\nexport const AppContainer = ({\n component: Component,\n ...pageProps\n}: AppContainerProps) => {\n const { getCurrentUser, currentUser } = useAuth();\n const [hasCheckedAuth, setHasCheckedAuth] = useState(true);\n const router = useRouter();\n\n const canRenderBottomNav =\n currentUser && !fullScreenAuthenticatedRoutes.includes(router.pathname);\n\n const routeProtection = async () => {\n const user = await getCurrentUser();\n setHasCheckedAuth(false);\n\n if (authAgnosticRoutes.includes(router.pathname)) {\n return;\n }\n\n if (!user && !whitelistRoute.includes(router.pathname)) {\n if (hasCheckedAuth) {\n router.push({\n pathname: '/auth/login',\n query: { redirect: router.asPath },\n });\n } else {\n router.push('/auth/login');\n }\n return;\n }\n\n if (user && !user.isPhoneNumberVerified) {\n const baseUrl = '/auth/validate-sms-code';\n if (router.query.redirect) {\n router.push(\n `${baseUrl}?redirect=${encodeURIComponent(\n router.query.redirect.toString()\n )}`\n );\n } else {\n router.push(`${baseUrl}`);\n }\n\n return;\n }\n\n if (user && whitelistRoute.includes(router.pathname)) {\n if (!router.query.redirect) {\n router.push('/');\n }\n return;\n }\n };\n\n useEffect(() => {\n routeProtection();\n }, [currentUser]);\n\n if (hasCheckedAuth) {\n return (\n \n \n \n );\n }\n\n return (\n
\n \n \n \n {canRenderBottomNav && }\n \n
\n );\n};\n","import Lottie from 'react-lottie';\nimport * as mobileOnlyAnimationData from '../../../assets/lottie/mobile-only.json';\nimport { AppHero } from '../AppHero';\nimport { QRCodeSVG } from 'qrcode.react';\n\nexport const MobileOnly = () => {\n return (\n
\n
\n \n
\n
\n \n
\n
\n

This app is only available on mobile devices.

\n

\n {`In order to switch, scan the QR code below with your\n phone's camera`}\n

\n
\n
\n {' '}\n {' '}\n
\n
\n );\n};\n","const consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.init(concreteLogger, options);\n }\n init(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n this.observers[event] = this.observers[event] || [];\n this.observers[event].push(listener);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event] = this.observers[event].filter(l => l !== listener);\n }\n emit(event) {\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 if (this.observers[event]) {\n const cloned = [].concat(this.observers[event]);\n cloned.forEach(observer => {\n observer(...args);\n });\n }\n if (this.observers['*']) {\n const cloned = [].concat(this.observers['*']);\n cloned.forEach(observer => {\n observer.apply(observer, [event, ...args]);\n });\n }\n }\n}\n\nfunction defer() {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n}\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n const stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n const key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\nfunction setPath(object, path, newValue) {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n}\nconst chars = [' ', ',', '?', '!', ';'];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n if (possibleChars.length === 0) return true;\n const r = new RegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n}\nfunction deepFind(obj, path) {\n let keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n const paths = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < paths.length; ++i) {\n if (!current) return undefined;\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n if (current[paths[i]] === undefined) {\n let j = 2;\n let p = paths.slice(i, i + j).join(keySeparator);\n let mix = current[p];\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n if (mix === undefined) return undefined;\n if (mix === null) return null;\n if (path.endsWith(p)) {\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n }\n const joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n current = current[paths[i]];\n }\n return current;\n}\nfunction getCleanedCode(code) {\n if (code && code.indexOf('_') > 0) return code.replace('_', '-');\n return code;\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n const result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n addResource(lng, ns, key, value) {\n let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (const m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n let path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return {\n ...{},\n ...this.getResource(lng, ns)\n };\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n if (this.processors[processor]) value = this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nconst checkedLoadedFor = {};\nclass Translator extends EventEmitter {\n constructor(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key === undefined || key === null) {\n return false;\n }\n const resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n extractFromKey(key, options) {\n let nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let namespaces = options.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key,\n namespaces\n };\n }\n translate(keys, options, lastKey) {\n if (typeof options !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof options === 'object') options = {\n ...options\n };\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n const returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], options);\n const namespace = namespaces[namespaces.length - 1];\n const lng = options.lng || this.language;\n const appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n const nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, options);\n let res = resolved && resolved.res;\n const resUsedKey = resolved && resolved.usedKey || key;\n const resExactUsedKey = resolved && resolved.exactUsedKey || key;\n const resType = Object.prototype.toString.apply(res);\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, {\n ...options,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = resType === '[object Array]';\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n copy[m] = this.translate(deepKey, {\n ...options,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n const hasDefaultValue = Translator.hasDefaultValue(options);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n const defaultValueSuffixOrdinalFallback = options.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, {\n ordinal: false\n }) : '';\n const defaultValue = options[`defaultValue${defaultValueSuffix}`] || options[`defaultValue${defaultValueSuffixOrdinalFallback}`] || options.defaultValue;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...options,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (this.backendConnector && this.backendConnector.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n this.pluralResolver.getSuffixes(language, options).forEach(suffix => {\n send([language], key + suffix, options[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = `${namespace}:${key}`;\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}:${key}` : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n if (returnDetails) {\n resolved.res = res;\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, options, resolved, lastKey) {\n var _this = this;\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...options\n }, options.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init({\n ...options,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...options.interpolation\n }\n }\n });\n const skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (!options.lng && this.options.compatibilityAPI !== 'v1' && resolved && resolved.res) options.lng = resolved.usedLng;\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return _this.translate(...args, key);\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n const postProcess = options.postProcess || this.options.postProcess;\n const postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: resolved,\n ...options\n } : options, this);\n }\n return res;\n }\n resolve(keys) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, options);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n const needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n const codes = options.lngs ? options.lngs : this.languageUtils.toResolveHierarchy(options.lng || this.language, options.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils && this.utils.hasLoadedNamespace && !this.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat && this.i18nFormat.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, options.count, options);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator}${options.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n const specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n let p = code.split('-');\n if (this.options.lowerCaseLng) {\n p = p.map(part => part.toLowerCase());\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n return p.join('-');\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (typeof code === 'string' && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nlet sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nlet _rulesPluralsTypes = {\n 1: function (n) {\n return Number(n > 1);\n },\n 2: function (n) {\n return Number(n != 1);\n },\n 3: function (n) {\n return 0;\n },\n 4: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function (n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function (n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function (n) {\n return Number(n >= 2);\n },\n 10: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function (n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function (n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function (n) {\n return Number(n !== 0);\n },\n 14: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function (n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function (n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function (n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function (n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nconst nonIntlVersions = ['v1', 'v2', 'v3'];\nconst intlVersions = ['v4'];\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nfunction createRules() {\n const rules = {};\n sets.forEach(set => {\n set.lngs.forEach(l => {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\nclass PluralResolver {\n constructor(languageUtils) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n if ((!this.options.compatibilityJSON || intlVersions.includes(this.options.compatibilityJSON)) && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n this.rules = createRules();\n }\n addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n getRule(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(getCleanedCode(code), {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch {\n return;\n }\n }\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n needsPlural(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const rule = this.getRule(code, options);\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n return rule && rule.numbers.length > 1;\n }\n getPluralFormsOfKey(code, key) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const rule = this.getRule(code, options);\n if (!rule) {\n return [];\n }\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n return rule.numbers.map(number => this.getSuffix(code, number, options));\n }\n getSuffix(code, count) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const rule = this.getRule(code, options);\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n return this.getSuffixRetroCompatible(rule, count);\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return '';\n }\n getSuffixRetroCompatible(rule, count) {\n const idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n let suffix = rule.numbers[idx];\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n const returnSuffix = () => this.options.prepend && suffix.toString() ? this.options.prepend + suffix.toString() : suffix.toString();\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return `_plural_${suffix.toString()}`;\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n shouldUseIntlApi() {\n return !nonIntlVersions.includes(this.options.compatibilityJSON);\n }\n}\n\nfunction deepFindWithDefaults(data, defaultData, key) {\n let keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n let ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && typeof key === 'string') {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n}\nclass Interpolator {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options.interpolation && options.interpolation.format || (value => value);\n this.init(options);\n }\n init() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const regexpStr = `${this.prefix}(.+?)${this.suffix}`;\n this.regexp = new RegExp(regexpStr, 'g');\n const regexpUnescapeStr = `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`;\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n const nestingRegexpStr = `${this.nestingPrefix}(.+?)${this.nestingSuffix}`;\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n const handleFormat = key => {\n if (key.indexOf(this.formatSeparator) < 0) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n const missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (typeof value !== 'string' && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let match;\n let value;\n let clonedOptions;\n function handleHasOptions(key, inheritedOptions) {\n const sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n const c = key.split(new RegExp(`${sep}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n delete clonedOptions.defaultValue;\n return key;\n }\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== 'string' ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n let doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n const r = match[1].split(this.formatSeparator).map(elem => elem.trim());\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nfunction parseFormatStr(formatStr) {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (!opt) return;\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n}\nfunction createCachedFormatter(fn) {\n const cache = {};\n return function invokeFormatter(val, lng, options) {\n const key = lng + JSON.stringify(options);\n let formatter = cache[key];\n if (!formatter) {\n formatter = fn(getCleanedCode(lng), options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n}\nclass Formatter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n this.init(options);\n }\n init(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n const iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const formats = format.split(this.formatSeparator);\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\nclass Connector extends EventEmitter {\n constructor(backend, store, services) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n if (this.backend && this.backend.init) {\n this.backend.init(services, options.backend, options);\n }\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n this.state[name] = err ? -1 : 2;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName) {\n let tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n let wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n let callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name) {\n let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n let clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : () => {};\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend && this.backend.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: (value, format, lng, options) => value,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n}\n\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\nclass I18n extends EventEmitter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initImmediate) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init() {\n var _this = this;\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n }\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\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 _this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = function () {\n return _this.store[fcName](...arguments);\n };\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = function () {\n _this.store[fcName](...arguments);\n return _this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (this.languages && this.options.compatibilityAPI !== 'v1' && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n let usedCallback = callback;\n const usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n if (this.options.preload) {\n this.options.preload.forEach(l => append(l));\n }\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n changeLanguage(lng, callback) {\n var _this2 = this;\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this2.t(...arguments);\n });\n if (callback) callback(err, function () {\n return _this2.t(...arguments);\n });\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const l = typeof lngs === 'string' ? lngs : this.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n if (this.services.languageDetector && this.services.languageDetector.cacheUserLanguage) this.services.languageDetector.cacheUserLanguage(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix) {\n var _this3 = this;\n const fixedT = function (key, opts) {\n let options;\n if (typeof opts !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this3.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = {\n ...opts\n };\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const keySeparator = _this3.options.keySeparator || '.';\n let resultKey;\n if (options.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => `${options.keyPrefix}${keySeparator}${k}`);\n } else {\n resultKey = options.keyPrefix ? `${options.keyPrefix}${keySeparator}${key}` : key;\n }\n return _this3.t(resultKey, options);\n };\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t() {\n return this.translator && this.translator.translate(...arguments);\n }\n exists() {\n return this.translator && this.translator.exists(...arguments);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(n => {\n if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0);\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n }\n cloneInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n clone.store = new ResourceStore(this.store.data, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nexport function defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\nexport function hasXMLHttpRequest() {\n return typeof XMLHttpRequest === 'function' || (typeof XMLHttpRequest === \"undefined\" ? \"undefined\" : _typeof(XMLHttpRequest)) === 'object';\n}\nfunction isPromise(maybePromise) {\n return !!maybePromise && typeof maybePromise.then === 'function';\n}\nexport function makePromise(maybePromise) {\n if (isPromise(maybePromise)) {\n return maybePromise;\n }\n return Promise.resolve(maybePromise);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport { defaults, hasXMLHttpRequest } from './utils.js';\nimport * as fetchNode from './getFetch.cjs';\nvar fetchApi;\nif (typeof fetch === 'function') {\n if (typeof global !== 'undefined' && global.fetch) {\n fetchApi = global.fetch;\n } else if (typeof window !== 'undefined' && window.fetch) {\n fetchApi = window.fetch;\n } else {\n fetchApi = fetch;\n }\n}\nvar XmlHttpRequestApi;\nif (hasXMLHttpRequest()) {\n if (typeof global !== 'undefined' && global.XMLHttpRequest) {\n XmlHttpRequestApi = global.XMLHttpRequest;\n } else if (typeof window !== 'undefined' && window.XMLHttpRequest) {\n XmlHttpRequestApi = window.XMLHttpRequest;\n }\n}\nvar ActiveXObjectApi;\nif (typeof ActiveXObject === 'function') {\n if (typeof global !== 'undefined' && global.ActiveXObject) {\n ActiveXObjectApi = global.ActiveXObject;\n } else if (typeof window !== 'undefined' && window.ActiveXObject) {\n ActiveXObjectApi = window.ActiveXObject;\n }\n}\nif (!fetchApi && fetchNode && !XmlHttpRequestApi && !ActiveXObjectApi) fetchApi = fetchNode.default || fetchNode;\nif (typeof fetchApi !== 'function') fetchApi = undefined;\nvar addQueryString = function addQueryString(url, params) {\n if (params && _typeof(params) === 'object') {\n var queryString = '';\n for (var paramName in params) {\n queryString += '&' + encodeURIComponent(paramName) + '=' + encodeURIComponent(params[paramName]);\n }\n if (!queryString) return url;\n url = url + (url.indexOf('?') !== -1 ? '&' : '?') + queryString.slice(1);\n }\n return url;\n};\nvar fetchIt = function fetchIt(url, fetchOptions, callback) {\n var resolver = function resolver(response) {\n if (!response.ok) return callback(response.statusText || 'Error', {\n status: response.status\n });\n response.text().then(function (data) {\n callback(null, {\n status: response.status,\n data: data\n });\n }).catch(callback);\n };\n if (typeof fetch === 'function') {\n fetch(url, fetchOptions).then(resolver).catch(callback);\n } else {\n fetchApi(url, fetchOptions).then(resolver).catch(callback);\n }\n};\nvar omitFetchOptions = false;\nvar requestWithFetch = function requestWithFetch(options, url, payload, callback) {\n if (options.queryStringParams) {\n url = addQueryString(url, options.queryStringParams);\n }\n var headers = defaults({}, typeof options.customHeaders === 'function' ? options.customHeaders() : options.customHeaders);\n if (payload) headers['Content-Type'] = 'application/json';\n var reqOptions = typeof options.requestOptions === 'function' ? options.requestOptions(payload) : options.requestOptions;\n var fetchOptions = defaults({\n method: payload ? 'POST' : 'GET',\n body: payload ? options.stringify(payload) : undefined,\n headers: headers\n }, omitFetchOptions ? {} : reqOptions);\n try {\n fetchIt(url, fetchOptions, callback);\n } catch (e) {\n if (!reqOptions || Object.keys(reqOptions).length === 0 || !e.message || e.message.indexOf('not implemented') < 0) {\n return callback(e);\n }\n try {\n Object.keys(reqOptions).forEach(function (opt) {\n delete fetchOptions[opt];\n });\n fetchIt(url, fetchOptions, callback);\n omitFetchOptions = true;\n } catch (err) {\n callback(err);\n }\n }\n};\nvar requestWithXmlHttpRequest = function requestWithXmlHttpRequest(options, url, payload, callback) {\n if (payload && _typeof(payload) === 'object') {\n payload = addQueryString('', payload).slice(1);\n }\n if (options.queryStringParams) {\n url = addQueryString(url, options.queryStringParams);\n }\n try {\n var x;\n if (XmlHttpRequestApi) {\n x = new XmlHttpRequestApi();\n } else {\n x = new ActiveXObjectApi('MSXML2.XMLHTTP.3.0');\n }\n x.open(payload ? 'POST' : 'GET', url, 1);\n if (!options.crossDomain) {\n x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n x.withCredentials = !!options.withCredentials;\n if (payload) {\n x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n if (x.overrideMimeType) {\n x.overrideMimeType('application/json');\n }\n var h = options.customHeaders;\n h = typeof h === 'function' ? h() : h;\n if (h) {\n for (var i in h) {\n x.setRequestHeader(i, h[i]);\n }\n }\n x.onreadystatechange = function () {\n x.readyState > 3 && callback(x.status >= 400 ? x.statusText : null, {\n status: x.status,\n data: x.responseText\n });\n };\n x.send(payload);\n } catch (e) {\n console && console.log(e);\n }\n};\nvar request = function request(options, url, payload, callback) {\n if (typeof payload === 'function') {\n callback = payload;\n payload = undefined;\n }\n callback = callback || function () {};\n if (fetchApi && url.indexOf('file:') !== 0) {\n return requestWithFetch(options, url, payload, callback);\n }\n if (hasXMLHttpRequest() || typeof ActiveXObject === 'function') {\n return requestWithXmlHttpRequest(options, url, payload, callback);\n }\n callback(new Error('No fetch and no xhr implementation found!'));\n};\nexport default request;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { defaults, makePromise } from './utils.js';\nimport request from './request.js';\nvar getDefaults = function getDefaults() {\n return {\n loadPath: '/locales/{{lng}}/{{ns}}.json',\n addPath: '/locales/add/{{lng}}/{{ns}}',\n parse: function parse(data) {\n return JSON.parse(data);\n },\n stringify: JSON.stringify,\n parsePayload: function parsePayload(namespace, key, fallbackValue) {\n return _defineProperty({}, key, fallbackValue || '');\n },\n parseLoadPayload: function parseLoadPayload(languages, namespaces) {\n return undefined;\n },\n request: request,\n reloadInterval: typeof window !== 'undefined' ? false : 60 * 60 * 1000,\n customHeaders: {},\n queryStringParams: {},\n crossDomain: false,\n withCredentials: false,\n overrideMimeType: false,\n requestOptions: {\n mode: 'cors',\n credentials: 'same-origin',\n cache: 'default'\n }\n };\n};\nvar Backend = function () {\n function Backend(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n _classCallCheck(this, Backend);\n this.services = services;\n this.options = options;\n this.allOptions = allOptions;\n this.type = 'backend';\n this.init(services, options, allOptions);\n }\n _createClass(Backend, [{\n key: \"init\",\n value: function init(services) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var allOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults());\n this.allOptions = allOptions;\n if (this.services && this.options.reloadInterval) {\n setInterval(function () {\n return _this.reload();\n }, this.options.reloadInterval);\n }\n }\n }, {\n key: \"readMulti\",\n value: function readMulti(languages, namespaces, callback) {\n this._readAny(languages, languages, namespaces, namespaces, callback);\n }\n }, {\n key: \"read\",\n value: function read(language, namespace, callback) {\n this._readAny([language], language, [namespace], namespace, callback);\n }\n }, {\n key: \"_readAny\",\n value: function _readAny(languages, loadUrlLanguages, namespaces, loadUrlNamespaces, callback) {\n var _this2 = this;\n var loadPath = this.options.loadPath;\n if (typeof this.options.loadPath === 'function') {\n loadPath = this.options.loadPath(languages, namespaces);\n }\n loadPath = makePromise(loadPath);\n loadPath.then(function (resolvedLoadPath) {\n if (!resolvedLoadPath) return callback(null, {});\n var url = _this2.services.interpolator.interpolate(resolvedLoadPath, {\n lng: languages.join('+'),\n ns: namespaces.join('+')\n });\n _this2.loadUrl(url, callback, loadUrlLanguages, loadUrlNamespaces);\n });\n }\n }, {\n key: \"loadUrl\",\n value: function loadUrl(url, callback, languages, namespaces) {\n var _this3 = this;\n var lng = typeof languages === 'string' ? [languages] : languages;\n var ns = typeof namespaces === 'string' ? [namespaces] : namespaces;\n var payload = this.options.parseLoadPayload(lng, ns);\n this.options.request(this.options, url, payload, function (err, res) {\n if (res && (res.status >= 500 && res.status < 600 || !res.status)) return callback('failed loading ' + url + '; status code: ' + res.status, true);\n if (res && res.status >= 400 && res.status < 500) return callback('failed loading ' + url + '; status code: ' + res.status, false);\n if (!res && err && err.message && err.message.indexOf('Failed to fetch') > -1) return callback('failed loading ' + url + ': ' + err.message, true);\n if (err) return callback(err, false);\n var ret, parseErr;\n try {\n if (typeof res.data === 'string') {\n ret = _this3.options.parse(res.data, languages, namespaces);\n } else {\n ret = res.data;\n }\n } catch (e) {\n parseErr = 'failed parsing ' + url + ' to json';\n }\n if (parseErr) return callback(parseErr, false);\n callback(null, ret);\n });\n }\n }, {\n key: \"create\",\n value: function create(languages, namespace, key, fallbackValue, callback) {\n var _this4 = this;\n if (!this.options.addPath) return;\n if (typeof languages === 'string') languages = [languages];\n var payload = this.options.parsePayload(namespace, key, fallbackValue);\n var finished = 0;\n var dataArray = [];\n var resArray = [];\n languages.forEach(function (lng) {\n var addPath = _this4.options.addPath;\n if (typeof _this4.options.addPath === 'function') {\n addPath = _this4.options.addPath(lng, namespace);\n }\n var url = _this4.services.interpolator.interpolate(addPath, {\n lng: lng,\n ns: namespace\n });\n _this4.options.request(_this4.options, url, payload, function (data, res) {\n finished += 1;\n dataArray.push(data);\n resArray.push(res);\n if (finished === languages.length) {\n if (typeof callback === 'function') callback(dataArray, resArray);\n }\n });\n });\n }\n }, {\n key: \"reload\",\n value: function reload() {\n var _this5 = this;\n var _this$services = this.services,\n backendConnector = _this$services.backendConnector,\n languageUtils = _this$services.languageUtils,\n logger = _this$services.logger;\n var currentLanguage = backendConnector.language;\n if (currentLanguage && currentLanguage.toLowerCase() === 'cimode') return;\n var toLoad = [];\n var append = function append(lng) {\n var lngs = languageUtils.toResolveHierarchy(lng);\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n append(currentLanguage);\n if (this.allOptions.preload) this.allOptions.preload.forEach(function (l) {\n return append(l);\n });\n toLoad.forEach(function (lng) {\n _this5.allOptions.ns.forEach(function (ns) {\n backendConnector.read(lng, ns, 'read', null, null, function (err, data) {\n if (err) logger.warn(\"loading namespace \".concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) logger.log(\"loaded namespace \".concat(ns, \" for language \").concat(lng), data);\n backendConnector.loaded(\"\".concat(lng, \"|\").concat(ns), err, data);\n });\n });\n });\n }\n }]);\n return Backend;\n}();\nBackend.type = 'backend';\nexport default Backend;","export var isBrowser = function () { return typeof window !== 'undefined'; };\n","import { isBrowser } from './is-browser';\nvar publicPath = './public';\nvar localesPath = '/locales';\nvar filePath = '/{{lng}}/{{ns}}.json';\nexport var getBackendConfig = function (options) {\n var hasCustomBackend = options.backend;\n // Server side backend config\n if (!isBrowser() && !hasCustomBackend) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n var path = require('path');\n return {\n backend: {\n loadPath: path.join(process.cwd(), publicPath, localesPath, filePath),\n },\n };\n }\n if (isBrowser() && !hasCustomBackend) {\n return {\n backend: {\n loadPath: \"\".concat(localesPath).concat(filePath),\n },\n };\n }\n return {};\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { initReactI18next } from 'react-i18next';\nimport i18n from 'i18next';\nimport useBackend from '../use-backend';\nimport { getBackendConfig } from './get-backend-config';\nexport var createI18nInstance = function (options, plugins) {\n var _a, _b, _c;\n var config = __assign(__assign(__assign({}, options), getBackendConfig(options)), { partialBundledLanguages: (_a = options.partialBundledLanguages) !== null && _a !== void 0 ? _a : true, react: __assign(__assign({}, options.react), { useSuspense: (_c = (_b = options.react) === null || _b === void 0 ? void 0 : _b.useSuspense) !== null && _c !== void 0 ? _c : false }) });\n var instance = i18n.createInstance(config);\n instance.use(initReactI18next);\n useBackend(instance);\n if (Array.isArray(plugins)) {\n plugins.flat().forEach(function (plugin) { return instance.use(plugin); });\n }\n var init = instance.init(config);\n return {\n instance: instance,\n init: init,\n };\n};\n","import HttpBackend from 'i18next-http-backend';\nexport default (function (i18n, plugins) {\n var hasCustomBackend = plugins === null || plugins === void 0 ? void 0 : plugins.some(function (plugin) {\n return Array.isArray(plugin)\n ? plugin.some(function (p) { return p.type === 'backend'; })\n : plugin.type === 'backend';\n });\n if (!hasCustomBackend) {\n i18n.use(HttpBackend);\n }\n return i18n;\n});\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport React, { useMemo } from 'react';\nimport { I18nextProvider } from 'react-i18next';\nimport { createI18nInstance } from '../create-i18n-instance';\nimport { uniqueArray } from '../common';\n/**\n * Use `appWithI18Next` inside your `_app.jsx` file to initialize the `I18nextProvider`.\n *\n * ```jsx\n * const MyApp = ({ Component, pageProps }) => \n *\n * export default appWithI18Next(MyApp, ni18nConfig)\n * ```\n *\n * @param WrappedComponent The MyApp component\n * @param options The options allowed by [i18next options](https://www.i18next.com/overview/configuration-options) plus the `use` property for plugins\n */\nexport var appWithI18Next = function (WrappedComponent, options) {\n if (!options) {\n throw new Error('No `options` passed to appWithI18Next');\n }\n var WithI18Next = function (props) {\n var _a = (props.pageProps ||\n {}), __ni18n_server__ = _a.__ni18n_server__, __ni18n_client__ = _a.__ni18n_client__;\n var locale = props.router.locale;\n var i18nInstance = useMemo(function () {\n var plugins = options.use, i18nextOptions = __rest(options, [\"use\"]);\n var ns = __ni18n_server__ || __ni18n_client__\n ? uniqueArray(__spreadArray(__spreadArray([], __read(((__ni18n_server__ === null || __ni18n_server__ === void 0 ? void 0 : __ni18n_server__.ns) || [])), false), __read(((__ni18n_client__ === null || __ni18n_client__ === void 0 ? void 0 : __ni18n_client__.ns) || [])), false))\n : i18nextOptions.ns;\n var instance = createI18nInstance(__assign(__assign(__assign(__assign({}, i18nextOptions), { lng: locale }), __ni18n_server__), { ns: ns }), plugins).instance;\n return instance;\n }, [options, __ni18n_server__, locale]);\n return (React.createElement(I18nextProvider, { i18n: i18nInstance },\n React.createElement(WrappedComponent, __assign({}, props))));\n };\n return WithI18Next;\n};\n","import React from 'react';\nimport type { AppProps } from 'next/app';\nimport { useEffect, useState } from 'react';\nimport NextNProgress from 'nextjs-progressbar';\nimport GoogleAnalytics from '../components/GoogleAnalytics';\n\nimport '../assets/styles/globals.sass';\nimport '../assets/typography';\nimport 'react-phone-input-2/lib/style.css';\n\nimport { AppContainer } from '../components/layout/AppContainer';\nimport { AuthProvider } from '../lib/auth';\nimport '../lib/stripe';\nimport { isMobile } from '../utils/utilsDevice';\nimport { MobileOnly } from '../components/common/MobileOnly';\nimport { getDefaultLanguage } from '../utils/utilsLanguage';\n\nimport { appWithI18Next, useSyncLanguage } from 'ni18n';\nimport { ni18nConfig } from '../ni18n.config';\n\nconst nProgressConfig = {\n color: '#300096',\n showOnShallow: true,\n};\n\nfunction App({ Component, pageProps }: AppProps) {\n const [isMobileDevice, setIsMobileDevice] = useState(false);\n\n const locale = getDefaultLanguage();\n useSyncLanguage(locale);\n\n useEffect(() => {\n setIsMobileDevice(isMobile());\n }, []);\n\n if (!isMobileDevice) {\n return ;\n }\n\n return (\n \n \n \n {process.env.NEXT_PUBLIC_GA_TRACKING_ID && (\n \n )}\n \n );\n}\n\nexport default appWithI18Next(App, ni18nConfig);\n","export var uniqueArray = function (values) {\n return Array.from(new Set(values));\n};\n","import { useTranslation } from 'react-i18next';\nimport { useEffect } from 'react';\n/**\n * `useSyncLanguage` can be used when not leveraging next.js' localized routes.\n * It will make sure to set the `current language` properly in `i18next` based\n * on the language parameter you pass to it.\n *\n * Note that this can cause an error when rendering on the server. This happens\n * because `useTranslation` returns a Suspense. To fix it, either enable react\n * Suspense Mode, or set `react.useSuspense = false` in your `ni18n-options.ts`\n *\n * @param language The language the translations should be in\n * @returns an i18n instance\n */\nexport var useSyncLanguage = function (language) {\n var i18n = useTranslation().i18n;\n useEffect(function () {\n if (i18n.language !== language)\n i18n.changeLanguage(language);\n }, [language, i18n]);\n return { i18n: i18n };\n};\n","export const isMobile = () =>\n /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\n","var SDK_VERSION = '7.8.0';\n\nexport { SDK_VERSION };\n//# sourceMappingURL=version.js.map\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\n\nvar installedIntegrations = [];\n\n/** Map of integrations assigned to a client */\n\n/**\n * @private\n */\nfunction filterDuplicates(integrations) {\n return integrations.reduce((acc, integrations) => {\n if (acc.every(accIntegration => integrations.name !== accIntegration.name)) {\n acc.push(integrations);\n }\n return acc;\n }, [] );\n}\n\n/** Gets integration to install */\nfunction getIntegrationsToSetup(options) {\n var defaultIntegrations = (options.defaultIntegrations && [...options.defaultIntegrations]) || [];\n var userIntegrations = options.integrations;\n\n let integrations = [...filterDuplicates(defaultIntegrations)];\n\n if (Array.isArray(userIntegrations)) {\n // Filter out integrations that are also included in user options\n integrations = [\n ...integrations.filter(integrations =>\n userIntegrations.every(userIntegration => userIntegration.name !== integrations.name),\n ),\n // And filter out duplicated user options integrations\n ...filterDuplicates(userIntegrations),\n ];\n } else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(integrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n\n // Make sure that if present, `Debug` integration will always run last\n var integrationsNames = integrations.map(i => i.name);\n var alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push(...integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1));\n }\n\n return integrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nfunction setupIntegrations(integrations) {\n var integrationIndex = {};\n\n integrations.forEach(integration => {\n integrationIndex[integration.name] = integration;\n\n if (installedIntegrations.indexOf(integration.name) === -1) {\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Integration installed: ${integration.name}`);\n }\n });\n\n return integrationIndex;\n}\n\nexport { getIntegrationsToSetup, installedIntegrations, setupIntegrations };\n//# sourceMappingURL=integration.js.map\n","import { logger, getEventDescription, isMatchingPattern } from '@sentry/utils';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nvar DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\n/** Options for the InboundFilters integration */\n\n/** Inbound filters configurable by the user */\nclass InboundFilters {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'InboundFilters';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = InboundFilters.id;}\n\n constructor( _options = {}) {;this._options = _options;InboundFilters.prototype.__init.call(this);}\n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n var eventProcess = (event) => {\n var hub = getCurrentHub();\n if (hub) {\n var self = hub.getIntegration(InboundFilters);\n if (self) {\n var client = hub.getClient();\n var clientOptions = client ? client.getOptions() : {};\n var options = _mergeOptions(self._options, clientOptions);\n return _shouldDropEvent(event, options) ? null : event;\n }\n }\n return event;\n };\n\n eventProcess.id = this.name;\n addGlobalEventProcessor(eventProcess);\n }\n} InboundFilters.__initStatic();\n\n/** JSDoc */\nfunction _mergeOptions(\n internalOptions = {},\n clientOptions = {},\n) {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...DEFAULT_IGNORE_ERRORS,\n ],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(event, options) {\n if (options.ignoreInternal && _isSentryError(event)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event, ignoreErrors) {\n if (!ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message =>\n ignoreErrors.some(pattern => isMatchingPattern(message, pattern)),\n );\n}\n\nfunction _isDeniedUrl(event, denyUrls) {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n var url = _getEventFilterUrl(event);\n return !url ? false : denyUrls.some(pattern => isMatchingPattern(url, pattern));\n}\n\nfunction _isAllowedUrl(event, allowUrls) {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n var url = _getEventFilterUrl(event);\n return !url ? true : allowUrls.some(pattern => isMatchingPattern(url, pattern));\n}\n\nfunction _getPossibleEventMessages(event) {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n const { type = '', value = '' } = (event.exception.values && event.exception.values[0]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n}\n\nfunction _isSentryError(event) {\n try {\n // @ts-ignore can't be a sentry error if undefined\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames = []) {\n for (let i = frames.length - 1; i >= 0; i--) {\n var frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event) {\n try {\n let frames;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n\nexport { InboundFilters, _mergeOptions, _shouldDropEvent };\n//# sourceMappingURL=inboundfilters.js.map\n","import { getOriginalFunction } from '@sentry/utils';\n\nlet originalFunctionToString;\n\n/** Patch toString calls to return proper name for wrapped functions */\nclass FunctionToString {constructor() { FunctionToString.prototype.__init.call(this); }\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'FunctionToString';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = FunctionToString.id;}\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n originalFunctionToString = Function.prototype.toString;\n\n Function.prototype.toString = function ( ...args) {\n var context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n }\n} FunctionToString.__initStatic();\n\nexport { FunctionToString };\n//# sourceMappingURL=functiontostring.js.map\n","/** An error emitted by Sentry SDKs and related utilities. */\nclass SentryError extends Error {\n /** Display name of this error instance. */\n \n\n constructor( message) {\n super(message);this.message = message;;\n\n this.name = new.target.prototype.constructor.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\nexport { SentryError };\n//# sourceMappingURL=error.js.map\n","import { SentryError } from './error.js';\n\n/** Regular expression used to parse a Dsn. */\nvar DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol) {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nfunction dsnToString(dsn, withPassword = false) {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents\n */\nfunction dsnFromString(str) {\n var match = DSN_REGEX.exec(str);\n\n if (!match) {\n throw new SentryError(`Invalid Sentry Dsn: ${str}`);\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n var split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() ;\n }\n\n if (projectId) {\n var projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol , publicKey });\n}\n\nfunction dsnFromComponents(components) {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn) {\n if (!(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n return;\n }\n\n const { port, projectId, protocol } = dsn;\n\n var requiredComponents = ['protocol', 'publicKey', 'host', 'projectId'];\n requiredComponents.forEach(component => {\n if (!dsn[component]) {\n throw new SentryError(`Invalid Sentry Dsn: ${component} missing`);\n }\n });\n\n if (!projectId.match(/^\\d+$/)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n }\n\n if (!isValidProtocol(protocol)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid port ${port}`);\n }\n\n return true;\n}\n\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nfunction makeDsn(from) {\n var components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n validateDsn(components);\n return components;\n}\n\nexport { dsnFromString, dsnToString, makeDsn };\n//# sourceMappingURL=dsn.js.map\n","import { dropUndefinedKeys } from './object.js';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction createEnvelope(headers, items = []) {\n return [headers, items] ;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction addItemToEnvelope(envelope, newItem) {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] ;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n */\nfunction forEachEnvelopeItem(\n envelope,\n callback,\n) {\n var envelopeItems = envelope[1];\n envelopeItems.forEach((envelopeItem) => {\n var envelopeItemType = envelopeItem[0].type;\n callback(envelopeItem, envelopeItemType);\n });\n}\n\nfunction encodeUTF8(input, textEncoder) {\n var utf8 = textEncoder || new TextEncoder();\n return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nfunction serializeEnvelope(envelope, textEncoder) {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts = JSON.stringify(envHeaders);\n\n function append(next) {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n }\n }\n\n for (var item of items) {\n const [itemHeaders, payload] = item ;\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n append(typeof payload === 'string' || payload instanceof Uint8Array ? payload : JSON.stringify(payload));\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers) {\n var totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n var merged = new Uint8Array(totalLength);\n let offset = 0;\n for (var buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\n/**\n * Creates attachment envelope items\n */\nfunction createAttachmentEnvelopeItem(\n attachment,\n textEncoder,\n) {\n var buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n return [\n dropUndefinedKeys({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nvar ITEM_TYPE_TO_DATA_CATEGORY_MAP = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nfunction envelopeItemTypeToDataCategory(type) {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\nexport { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, envelopeItemTypeToDataCategory, forEachEnvelopeItem, serializeEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { urlEncode, makeDsn, dsnToString } from '@sentry/utils';\n\nvar SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn) {\n var protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n var port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn) {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn, sdkInfo) {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nfunction getEnvelopeEndpointWithUrlEncodedAuth(\n dsn,\n // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n // options: ClientOptions = {} as ClientOptions,\n tunnelOrOptions = {} ,\n) {\n // TODO (v8): Use this code instead\n // const { tunnel, _metadata = {} } = options;\n // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n var tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n var sdkInfo =\n typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nfunction getReportDialogEndpoint(\n dsnLike,\n dialogOptions\n\n,\n) {\n var dsn = makeDsn(dsnLike);\n var endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (var key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'user') {\n var user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] )}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n\nexport { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint };\n//# sourceMappingURL=api.js.map\n","import { dsnToString, createEnvelope, dropUndefinedKeys, getSentryBaggageItems } from '@sentry/utils';\n\n/** Extract sdk info from from the API metadata */\nfunction getSdkMetadataForEnvelopeHeader(metadata) {\n if (!metadata || !metadata.sdk) {\n return;\n }\n const { name, version } = metadata.sdk;\n return { name, version };\n}\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event, sdkInfo) {\n if (!sdkInfo) {\n return event;\n }\n event.sdk = event.sdk || {};\n event.sdk.name = event.sdk.name || sdkInfo.name;\n event.sdk.version = event.sdk.version || sdkInfo.version;\n event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n return event;\n}\n\n/** Creates an envelope from a Session */\nfunction createSessionEnvelope(\n session,\n dsn,\n metadata,\n tunnel,\n) {\n var sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n var envelopeHeaders = {\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsnToString(dsn) }),\n };\n\n var envelopeItem =\n 'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session];\n\n return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nfunction createEventEnvelope(\n event,\n dsn,\n metadata,\n tunnel,\n) {\n var sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n var eventType = event.type || 'event';\n\n const { transactionSampling } = event.sdkProcessingMetadata || {};\n const { method: samplingMethod, rate: sampleRate } = transactionSampling || {};\n\n enhanceEventWithSdkInfo(event, metadata && metadata.sdk);\n\n var envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n delete event.sdkProcessingMetadata;\n\n var eventItem = [\n {\n type: eventType,\n sample_rates: [{ id: samplingMethod, rate: sampleRate }],\n },\n event,\n ];\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\nfunction createEventEnvelopeHeaders(\n event,\n sdkInfo,\n tunnel,\n dsn,\n) {\n var baggage = event.sdkProcessingMetadata && event.sdkProcessingMetadata.baggage;\n var dynamicSamplingContext = baggage && getSentryBaggageItems(baggage);\n\n return {\n event_id: event.event_id ,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsnToString(dsn) }),\n ...(event.type === 'transaction' &&\n dynamicSamplingContext && {\n trace: dropUndefinedKeys({ ...dynamicSamplingContext }) ,\n }),\n };\n}\n\nexport { createEventEnvelope, createSessionEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { updateSession, Scope } from '@sentry/hub';\nimport { makeDsn, logger, checkOrSetAlreadyCaught, isPrimitive, resolvedSyncPromise, addItemToEnvelope, createAttachmentEnvelopeItem, SyncPromise, uuid4, dateTimestampInSeconds, normalize, truncate, rejectedSyncPromise, SentryError, isThenable, isPlainObject } from '@sentry/utils';\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api.js';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope.js';\nimport { setupIntegrations } from './integration.js';\n\nvar ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nclass BaseClient {\n /** Options passed to the SDK. */\n \n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n \n\n /** Array of set up integrations. */\n __init() {this._integrations = {};}\n\n /** Indicates whether this client's integrations have been set up. */\n __init2() {this._integrationsInitialized = false;}\n\n /** Number of calls being processed */\n __init3() {this._numProcessing = 0;}\n\n /** Holds flushable */\n __init4() {this._outcomes = {};}\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n constructor(options) {;BaseClient.prototype.__init.call(this);BaseClient.prototype.__init2.call(this);BaseClient.prototype.__init3.call(this);BaseClient.prototype.__init4.call(this);\n this._options = options;\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n var url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n this._transport = options.transport({\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('No DSN provided, client will not do anything.');\n }\n }\n\n /**\n * @inheritDoc\n */\n captureException(exception, hint, scope) {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId = hint && hint.event_id;\n\n this._process(\n this.eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(\n message,\n level,\n hint,\n scope,\n ) {\n let eventId = hint && hint.event_id;\n\n var promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(String(message), level, hint)\n : this.eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint, scope) {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId = hint && hint.event_id;\n\n this._process(\n this._captureEvent(event, hint, scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureSession(session) {\n if (!this._isEnabled()) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('SDK not enabled, will not capture session.');\n return;\n }\n\n if (!(typeof session.release === 'string')) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n getDsn() {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n getOptions() {\n return this._options;\n }\n\n /**\n * @inheritDoc\n */\n getTransport() {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n flush(timeout) {\n var transport = this._transport;\n if (transport) {\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n close(timeout) {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n setupIntegrations() {\n if (this._isEnabled() && !this._integrationsInitialized) {\n this._integrations = setupIntegrations(this._options.integrations);\n this._integrationsInitialized = true;\n }\n }\n\n /**\n * Gets an installed integration by its `id`.\n *\n * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n */\n getIntegrationById(integrationId) {\n return this._integrations[integrationId];\n }\n\n /**\n * @inheritDoc\n */\n getIntegration(integration) {\n try {\n return (this._integrations[integration.id] ) || null;\n } catch (_oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint = {}) {\n if (this._dsn) {\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (var attachment of hint.attachments || []) {\n env = addItemToEnvelope(\n env,\n createAttachmentEnvelopeItem(\n attachment,\n this._options.transportOptions && this._options.transportOptions.textEncoder,\n ),\n );\n }\n\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n sendSession(session) {\n if (this._dsn) {\n var env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n recordDroppedEvent(reason, category) {\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n var key = `${reason}:${category}`;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Adding outcome: \"${key}\"`);\n\n // The following works because undefined + 1 === NaN and NaN is falsy\n this._outcomes[key] = this._outcomes[key] + 1 || 1;\n }\n }\n\n /** Updates existing session based on the provided event */\n _updateSessionFromEvent(session, event) {\n let crashed = false;\n let errored = false;\n var exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (var ex of exceptions) {\n var mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n var sessionNonTerminal = session.status === 'ok';\n var shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n _isClientDoneProcessing(timeout) {\n return new SyncPromise(resolve => {\n let ticked = 0;\n var tick = 1;\n\n var interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n _isEnabled() {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n _prepareEvent(event, hint, scope) {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = this.getOptions();\n var prepared = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n\n this._applyClientOptions(prepared);\n this._applyIntegrationsMetadata(prepared);\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n let finalScope = scope;\n if (hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n\n // We prepare the result here with a resolved Event.\n let result = resolvedSyncPromise(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (finalScope) {\n // Collect attachments from the hint and scope\n var attachments = [...(hint.attachments || []), ...finalScope.getAttachments()];\n\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return this._normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n }\n\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n _normalizeEvent(event, depth, maxBreadth) {\n if (!event) {\n return null;\n }\n\n var normalized = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n // We cannot use the spread operator here because `toJSON` on `span` is non-enumerable\n if (span.data) {\n span.data = normalize(span.data, depth, maxBreadth);\n }\n return span;\n });\n }\n\n return normalized;\n }\n\n /**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\n _applyClientOptions(event) {\n var options = this.getOptions();\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : 'production';\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n var exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n var request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n }\n\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\n _applyIntegrationsMetadata(event) {\n var integrationsArray = Object.keys(this._integrations);\n if (integrationsArray.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationsArray];\n }\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n _captureEvent(event, hint = {}, scope) {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(reason);\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n _processEvent(event, hint, scope) {\n const { beforeSend, sampleRate } = this.getOptions();\n\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.'));\n }\n\n var isTransaction = event.type === 'transaction';\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n this.recordDroppedEvent('sample_rate', 'error');\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n ),\n );\n }\n\n return this._prepareEvent(event, hint, scope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', event.type || 'error');\n throw new SentryError('An event processor returned null, will not send event.');\n }\n\n var isInternalException = hint.data && (hint.data ).__sentry__ === true;\n if (isInternalException || isTransaction || !beforeSend) {\n return prepared;\n }\n\n var beforeSendResult = beforeSend(prepared, hint);\n return _ensureBeforeSendRv(beforeSendResult);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', event.type || 'error');\n throw new SentryError('`beforeSend` returned `null`, will not send event.');\n }\n\n var session = scope && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason ,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n _process(promise) {\n this._numProcessing += 1;\n void promise.then(\n value => {\n this._numProcessing -= 1;\n return value;\n },\n reason => {\n this._numProcessing -= 1;\n return reason;\n },\n );\n }\n\n /**\n * @inheritdoc\n */\n _sendEnvelope(envelope) {\n if (this._transport && this._dsn) {\n this._transport.send(envelope).then(null, reason => {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Error while sending event:', reason);\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Transport disabled');\n }\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n _clearOutcomes() {\n var outcomes = this._outcomes;\n this._outcomes = {};\n return Object.keys(outcomes).map(key => {\n const [reason, category] = key.split(':') ;\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n });\n }\n\n /**\n * @inheritDoc\n */\n \n\n}\n\n/**\n * Verifies that return value of configured `beforeSend` is of expected type.\n */\nfunction _ensureBeforeSendRv(rv) {\n var nullErr = '`beforeSend` method has to return `null` or a valid event.';\n if (isThenable(rv)) {\n return rv.then(\n event => {\n if (!(isPlainObject(event) || event === null)) {\n throw new SentryError(nullErr);\n }\n return event;\n },\n e => {\n throw new SentryError(`beforeSend rejected with ${e}`);\n },\n );\n } else if (!(isPlainObject(rv) || rv === null)) {\n throw new SentryError(nullErr);\n }\n return rv;\n}\n\nexport { BaseClient };\n//# sourceMappingURL=baseclient.js.map\n","import { isEvent, extractExceptionKeysForMessage, normalizeToSize, addExceptionMechanism, resolvedSyncPromise, isErrorEvent, isDOMError, isDOMException, addExceptionTypeValue, isError, isPlainObject } from '@sentry/utils';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nfunction exceptionFromError(stackParser, ex) {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n var frames = parseStackFrames(stackParser, ex);\n\n var exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nfunction eventFromPlainObject(\n stackParser,\n exception,\n syntheticException,\n isUnhandledRejection,\n) {\n var event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n isUnhandledRejection ? 'promise rejection' : 'exception'\n } captured with keys: ${extractExceptionKeysForMessage(exception)}`,\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n\n if (syntheticException) {\n var frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception ).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromError(stackParser, ex) {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nfunction parseStackFrames(\n stackParser,\n ex,\n) {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n var stacktrace = ex.stacktrace || ex.stack || '';\n\n var popSize = getPopSize(ex);\n\n try {\n return stackParser(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nvar reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex) {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex) {\n var message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nfunction eventFromException(\n stackParser,\n exception,\n hint,\n attachStacktrace,\n) {\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nfunction eventFromMessage(\n stackParser,\n message,\n level = 'info',\n hint,\n attachStacktrace,\n) {\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nfunction eventFromUnknownInput(\n stackParser,\n exception,\n syntheticException,\n attachStacktrace,\n isUnhandledRejection,\n) {\n let event;\n\n if (isErrorEvent(exception ) && (exception ).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n var errorEvent = exception ;\n return eventFromError(stackParser, errorEvent.error );\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception ) || isDOMException(exception )) {\n var domException = exception ;\n\n if ('stack' in (exception )) {\n event = eventFromError(stackParser, exception );\n } else {\n var name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n var message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n var objectException = exception ;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception , syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromString(\n stackParser,\n input,\n syntheticException,\n attachStacktrace,\n) {\n var event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n var frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: input, stacktrace: { frames } }],\n };\n }\n }\n\n return event;\n}\n\nexport { eventFromError, eventFromException, eventFromMessage, eventFromPlainObject, eventFromString, eventFromUnknownInput, exceptionFromError, parseStackFrames };\n//# sourceMappingURL=eventbuilder.js.map\n","// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nvar validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a member of the deprecated {@link Severity} enum.\n *\n * @deprecated `severityFromString` is deprecated. Please use `severityLevelFromString` instead.\n *\n * @param level String representation of Severity\n * @returns Severity\n */\nfunction severityFromString(level) {\n return severityLevelFromString(level) ;\n}\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nfunction severityLevelFromString(level) {\n return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') ;\n}\n\nexport { severityFromString, severityLevelFromString, validSeverityLevels };\n//# sourceMappingURL=severity.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { addInstrumentationHandler, htmlTreeAsString, severityLevelFromString, safeJoin, getGlobalObject, parseUrl } from '@sentry/utils';\n\n/** JSDoc */\n\nvar BREADCRUMB_INTEGRATION_ID = 'Breadcrumbs';\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nclass Breadcrumbs {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = BREADCRUMB_INTEGRATION_ID;}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = Breadcrumbs.id;}\n\n /**\n * Options of the breadcrumbs integration.\n */\n // This field is public, because we use it in the browser client to check if the `sentry` option is enabled.\n \n\n /**\n * @inheritDoc\n */\n constructor(options) {;Breadcrumbs.prototype.__init.call(this);\n this.options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n setupOnce() {\n if (this.options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this.options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this.options.dom));\n }\n if (this.options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this.options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this.options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n }\n} Breadcrumbs.__initStatic();\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\nfunction _domBreadcrumb(dom) {\n function _innerDomBreadcrumb(handlerData) {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target , keyAttrs)\n : htmlTreeAsString(handlerData.event , keyAttrs);\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n },\n );\n }\n\n return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _consoleBreadcrumb(handlerData) {\n var breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _xhrBreadcrumb(handlerData) {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n\n const { method, url, status_code, body } = handlerData.xhr.__sentry_xhr__ || {};\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data: {\n method,\n url,\n status_code,\n },\n type: 'http',\n },\n {\n xhr: handlerData.xhr,\n input: body,\n },\n );\n\n return;\n }\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _fetchBreadcrumb(handlerData) {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: handlerData.fetchData,\n level: 'error',\n type: 'http',\n },\n {\n data: handlerData.error,\n input: handlerData.args,\n },\n );\n } else {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n type: 'http',\n },\n {\n input: handlerData.args,\n response: handlerData.response,\n },\n );\n }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _historyBreadcrumb(handlerData) {\n var global = getGlobalObject();\n let from = handlerData.from;\n let to = handlerData.to;\n var parsedLoc = parseUrl(global.location.href);\n let parsedFrom = parseUrl(from);\n var parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n}\n\nexport { BREADCRUMB_INTEGRATION_ID, Breadcrumbs };\n//# sourceMappingURL=breadcrumbs.js.map\n","import { getGlobalObject, isNativeFetch, logger, supportsFetch } from '@sentry/utils';\n\nvar global = getGlobalObject();\nlet cachedFetchImpl;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * var f = window.fetch;\n * window.fetch = function () {\n * var p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nfunction getNativeFetchImplementation() {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(global.fetch)) {\n return (cachedFetchImpl = global.fetch.bind(global));\n }\n\n var document = global.document;\n let fetchImpl = global.fetch;\n if (document && typeof document.createElement === 'function') {\n try {\n var sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n var contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(global));\n }\n\n/**\n * Sends sdk client report using sendBeacon or fetch as a fallback if available\n *\n * @param url report endpoint\n * @param body report payload\n */\nfunction sendReport(url, body) {\n var isRealNavigator = Object.prototype.toString.call(global && global.navigator) === '[object Navigator]';\n var hasSendBeacon = isRealNavigator && typeof global.navigator.sendBeacon === 'function';\n\n if (hasSendBeacon) {\n // Prevent illegal invocations - https://xgwang.me/posts/you-may-not-know-beacon/#it-may-throw-error%2C-be-sure-to-catch\n var sendBeacon = global.navigator.sendBeacon.bind(global.navigator);\n sendBeacon(url, body);\n } else if (supportsFetch()) {\n var fetch = getNativeFetchImplementation();\n fetch(url, {\n body,\n method: 'POST',\n credentials: 'omit',\n keepalive: true,\n }).then(null, error => {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(error);\n });\n }\n}\n\nexport { getNativeFetchImplementation, sendReport };\n//# sourceMappingURL=utils.js.map\n","import { BaseClient, SDK_VERSION, getCurrentHub, getEnvelopeEndpointWithUrlEncodedAuth } from '@sentry/core';\nimport { getGlobalObject, getEventDescription, logger, createClientReportEnvelope, dsnToString, serializeEnvelope } from '@sentry/utils';\nimport { eventFromException, eventFromMessage } from './eventbuilder.js';\nimport { BREADCRUMB_INTEGRATION_ID } from './integrations/breadcrumbs.js';\nimport { sendReport } from './transports/utils.js';\n\nvar globalObject = getGlobalObject();\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nclass BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n constructor(options) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n super(options);\n\n if (options.sendClientReports && globalObject.document) {\n globalObject.document.addEventListener('visibilitychange', () => {\n if (globalObject.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n eventFromException(exception, hint) {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n eventFromMessage(\n message,\n level = 'info',\n hint,\n ) {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint) {\n // We only want to add the sentry event breadcrumb when the user has the breadcrumb integration installed and\n // activated its `sentry` option.\n // We also do not want to use the `Breadcrumbs` class here directly, because we do not want it to be included in\n // bundles, if it is not used by the SDK.\n // This all sadly is a bit ugly, but we currently don't have a \"pre-send\" hook on the integrations so we do it this\n // way for now.\n var breadcrumbIntegration = this.getIntegrationById(BREADCRUMB_INTEGRATION_ID) ;\n if (\n breadcrumbIntegration &&\n // We check for definedness of `options`, even though it is not strictly necessary, because that access to\n // `.sentry` below does not throw, in case users provided their own integration with id \"Breadcrumbs\" that does\n // not have an`options` field\n breadcrumbIntegration.options &&\n breadcrumbIntegration.options.sentry\n ) {\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n }\n\n super.sendEvent(event, hint);\n }\n\n /**\n * @inheritDoc\n */\n _prepareEvent(event, hint, scope) {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n _flushOutcomes() {\n var outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('No outcomes to send');\n return;\n }\n\n if (!this._dsn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Sending outcomes:', outcomes);\n\n var url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, this._options);\n var envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n try {\n sendReport(url, serializeEnvelope(envelope));\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(e);\n }\n }\n}\n\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map\n","import { createEnvelope } from './envelope.js';\nimport { dateTimestampInSeconds } from './time.js';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nfunction createClientReportEnvelope(\n discarded_events,\n dsn,\n timestamp,\n) {\n var clientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n\nexport { createClientReportEnvelope };\n//# sourceMappingURL=clientreport.js.map\n","import { createStackParser } from '@sentry/utils';\n\n// global reference to slice\nvar UNKNOWN_FUNCTION = '?';\n\nvar OPERA10_PRIORITY = 10;\nvar OPERA11_PRIORITY = 20;\nvar CHROME_PRIORITY = 30;\nvar WINJS_PRIORITY = 40;\nvar GECKO_PRIORITY = 50;\n\nfunction createFrame(filename, func, lineno, colno) {\n var frame = {\n filename,\n function: func,\n // All browser frames are considered in_app\n in_app: true,\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nvar chromeRegex =\n /^\\s*at (?:(.*?) ?\\((?:address at )?)?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nvar chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nvar chrome = line => {\n var parts = chromeRegex.exec(line);\n\n if (parts) {\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n var subMatch = chromeEvalRegex.exec(parts[2]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1]; // url\n parts[3] = subMatch[2]; // line\n parts[4] = subMatch[3]; // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nvar chromeStackLineParser = [CHROME_PRIORITY, chrome];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nvar geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nvar gecko = line => {\n var parts = geckoREgex.exec(line);\n\n if (parts) {\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n var subMatch = geckoEvalRegex.exec(parts[3]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nvar geckoStackLineParser = [GECKO_PRIORITY, gecko];\n\nvar winjsRegex =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nvar winjs = line => {\n var parts = winjsRegex.exec(line);\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nvar winjsStackLineParser = [WINJS_PRIORITY, winjs];\n\nvar opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nvar opera10 = line => {\n var parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nvar opera10StackLineParser = [OPERA10_PRIORITY, opera10];\n\nvar opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nvar opera11 = line => {\n var parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nvar opera11StackLineParser = [OPERA11_PRIORITY, opera11];\n\nvar defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nvar defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nvar extractSafariExtensionDetails = (func, filename) => {\n var isSafariExtension = func.indexOf('safari-extension') !== -1;\n var isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n\nexport { chromeStackLineParser, defaultStackLineParsers, defaultStackParser, geckoStackLineParser, opera10StackLineParser, opera11StackLineParser, winjsStackLineParser };\n//# sourceMappingURL=stack-parsers.js.map\n","import { withScope, captureException } from '@sentry/core';\nimport { getOriginalFunction, addExceptionTypeValue, addExceptionMechanism, markFunctionWrapped, addNonEnumerableProperty } from '@sentry/utils';\n\nlet ignoreOnError = 0;\n\n/**\n * @hidden\n */\nfunction shouldIgnoreOnError() {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nfunction ignoreNextOnError() {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(() => {\n ignoreOnError -= 1;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nfunction wrap(\n fn,\n options\n\n = {},\n before,\n ) {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n var wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n var sentryWrapped = function () {\n var args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n var wrappedArguments = args.map((arg) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope) => {\n scope.addEventProcessor((event) => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n \n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (var property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} \n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n var descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') ;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get() {\n return fn.name;\n },\n });\n }\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n */\n\nexport { ignoreNextOnError, shouldIgnoreOnError, wrap };\n//# sourceMappingURL=helpers.js.map\n","import { getGlobalObject, fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\nimport { wrap } from '../helpers.js';\n\nvar DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nclass TryCatch {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'TryCatch';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = TryCatch.id;}\n\n /** JSDoc */\n \n\n /**\n * @inheritDoc\n */\n constructor(options) {;TryCatch.prototype.__init.call(this);\n this._options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n setupOnce() {\n var global = getGlobalObject();\n\n if (this._options.setTimeout) {\n fill(global, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n fill(global, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n fill(global, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n var eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n var eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n }\n} TryCatch.__initStatic();\n\n/** JSDoc */\nfunction _wrapTimeFunction(original) {\n return function ( ...args) {\n var originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapRAF(original) {\n return function ( callback) {\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend) {\n return function ( ...args) {\n var xhr = this;\n var xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n fill(xhr, prop, function (original) {\n var wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n var originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target) {\n var global = getGlobalObject() ;\n var proto = global[target] && global[target].prototype;\n\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original)\n\n {\n return function (\n \n eventName,\n fn,\n options,\n ) {\n try {\n if (typeof fn.handleEvent === 'function') {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n wrap(fn , {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener,\n ) {\n return function (\n \n eventName,\n fn,\n options,\n ) {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n var wrappedEventHandler = fn ;\n try {\n var originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n\nexport { TryCatch };\n//# sourceMappingURL=trycatch.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { addInstrumentationHandler, isString, isPrimitive, isErrorEvent, getLocationHref, logger, addExceptionMechanism } from '@sentry/utils';\nimport { eventFromUnknownInput } from '../eventbuilder.js';\nimport { shouldIgnoreOnError } from '../helpers.js';\n\n/** Global handlers */\nclass GlobalHandlers {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'GlobalHandlers';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = GlobalHandlers.id;}\n\n /** JSDoc */\n \n\n /**\n * Stores references functions to installing handlers. Will set to undefined\n * after they have been run so that they are not used twice.\n */\n __init2() {this._installFunc = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };}\n\n /** JSDoc */\n constructor(options) {;GlobalHandlers.prototype.__init.call(this);GlobalHandlers.prototype.__init2.call(this);\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n setupOnce() {\n Error.stackTraceLimit = 50;\n var options = this._options;\n\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n for (var key in options) {\n var installFunc = this._installFunc[key ];\n if (installFunc && options[key ]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key ] = undefined;\n }\n }\n }\n} GlobalHandlers.__initStatic();\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler() {\n addInstrumentationHandler(\n 'error',\n (data) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n const { msg, url, line, column, error } = data;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n\n var event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onerror');\n },\n );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler() {\n addInstrumentationHandler(\n 'unhandledrejection',\n (e) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n\n var event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\n },\n );\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason) {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\nfunction _eventFromIncompleteOnError(msg, url, line, column) {\n var ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name = 'Error';\n\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n var event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n/** JSDoc */\nfunction _enhanceEventWithInitialFrame(event, url, line, column) {\n // event.exception\n var e = (event.exception = event.exception || {});\n // event.exception.values\n var ev = (e.values = e.values || []);\n // event.exception.values[0]\n var ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n var ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n var ev0sf = (ev0s.frames = ev0s.frames || []);\n\n var colno = isNaN(parseInt(column, 10)) ? undefined : column;\n var lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n var filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction addMechanismAndCapture(hub, error, event, type) {\n addExceptionMechanism(event, {\n handled: false,\n type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\n\nfunction getHubAndOptions() {\n var hub = getCurrentHub();\n var client = hub.getClient();\n var options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return [hub, options.stackParser, options.attachStacktrace];\n}\n\nexport { GlobalHandlers };\n//# sourceMappingURL=globalhandlers.js.map\n","import { getCurrentHub, addGlobalEventProcessor } from '@sentry/core';\nimport { isInstanceOf } from '@sentry/utils';\nimport { exceptionFromError } from '../eventbuilder.js';\n\nvar DEFAULT_KEY = 'cause';\nvar DEFAULT_LIMIT = 5;\n\n/** Adds SDK info to an event. */\nclass LinkedErrors {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'LinkedErrors';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = LinkedErrors.id;}\n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n constructor(options = {}) {;LinkedErrors.prototype.__init.call(this);\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n var client = getCurrentHub().getClient();\n if (!client) {\n return;\n }\n addGlobalEventProcessor((event, hint) => {\n var self = getCurrentHub().getIntegration(LinkedErrors);\n return self ? _handler(client.getOptions().stackParser, self._key, self._limit, event, hint) : event;\n });\n }\n} LinkedErrors.__initStatic();\n\n/**\n * @inheritDoc\n */\nfunction _handler(\n parser,\n key,\n limit,\n event,\n hint,\n) {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n var linkedErrors = _walkErrorTree(parser, limit, hint.originalException , key);\n event.exception.values = [...linkedErrors, ...event.exception.values];\n return event;\n}\n\n/**\n * JSDOC\n */\nfunction _walkErrorTree(\n parser,\n limit,\n error,\n key,\n stack = [],\n) {\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= limit) {\n return stack;\n }\n var exception = exceptionFromError(parser, error[key]);\n return _walkErrorTree(parser, limit, error[key], key, [exception, ...stack]);\n}\n\nexport { LinkedErrors, _handler, _walkErrorTree };\n//# sourceMappingURL=linkederrors.js.map\n","import { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nclass Dedupe {constructor() { Dedupe.prototype.__init.call(this); }\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'Dedupe';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = Dedupe.id;}\n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n var eventProcessor = currentEvent => {\n var self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n };\n\n eventProcessor.id = this.name;\n addGlobalEventProcessor(eventProcessor);\n }\n} Dedupe.__initStatic();\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent, previousEvent) {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent, previousEvent) {\n var currentMessage = currentEvent.message;\n var previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent, previousEvent) {\n var previousException = _getExceptionFromEvent(previousEvent);\n var currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent, previousEvent) {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames ;\n previousFrames = previousFrames ;\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n var frameA = previousFrames[i];\n var frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent, previousEvent) {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint ;\n previousFingerprint = previousFingerprint ;\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event) {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event) {\n var exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n\nexport { Dedupe };\n//# sourceMappingURL=dedupe.js.map\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\n\nvar global = getGlobalObject();\n\n/** HttpContext integration collects information about HTTP request headers */\nclass HttpContext {constructor() { HttpContext.prototype.__init.call(this); }\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'HttpContext';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = HttpContext.id;}\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n addGlobalEventProcessor((event) => {\n if (getCurrentHub().getIntegration(HttpContext)) {\n // if none of the information we want exists, don't bother\n if (!global.navigator && !global.location && !global.document) {\n return event;\n }\n\n // grab as much info as exists and add it to the event\n var url = (event.request && event.request.url) || (global.location && global.location.href);\n const { referrer } = global.document || {};\n const { userAgent } = global.navigator || {};\n\n var headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n var request = { ...(url && { url }), headers };\n\n return { ...event, request };\n }\n return event;\n });\n }\n} HttpContext.__initStatic();\n\nexport { HttpContext };\n//# sourceMappingURL=httpcontext.js.map\n","import { SentryError } from './error.js';\nimport { rejectedSyncPromise, SyncPromise, resolvedSyncPromise } from './syncpromise.js';\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nfunction makePromiseBuffer(limit) {\n var buffer = [];\n\n function isReady() {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n function remove(task) {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer) {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise due to buffer limit reached.'));\n }\n\n // start the task and add its promise to the queue\n var task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout) {\n return new SyncPromise((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n var capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void resolvedSyncPromise(item).then(() => {\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n\nexport { makePromiseBuffer };\n//# sourceMappingURL=promisebuffer.js.map\n","// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\n\nvar DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nfunction parseRetryAfterHeader(header, now = Date.now()) {\n var headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n var headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that given category is disabled until for rate limiting\n */\nfunction disabledUntil(limits, category) {\n return limits[category] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nfunction isRateLimited(limits, category, now = Date.now()) {\n return disabledUntil(limits, category) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n * Returns true if headers contains a non-empty rate limiting header.\n */\nfunction updateRateLimits(\n limits,\n { statusCode, headers },\n now = Date.now(),\n) {\n var updatedRateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n var rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n var retryAfterHeader = headers && headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n *
,
,..\n * where each
is of the form\n * : : : \n * where\n * is a delay in seconds\n * is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * ;;...\n * is what's being limited (org, project, or key) - ignored by SDK\n * is an arbitrary string like \"org_quota\" - ignored by SDK\n */\n for (var limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories] = limit.split(':', 2);\n var headerDelay = parseInt(retryAfter, 10);\n var delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (var category of categories.split(';')) {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n\nexport { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits };\n//# sourceMappingURL=ratelimit.js.map\n","import { makePromiseBuffer, forEachEnvelopeItem, envelopeItemTypeToDataCategory, isRateLimited, resolvedSyncPromise, createEnvelope, serializeEnvelope, logger, updateRateLimits, SentryError } from '@sentry/utils';\n\nvar DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nfunction createTransport(\n options,\n makeRequest,\n buffer = makePromiseBuffer(options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE),\n) {\n let rateLimits = {};\n\n var flush = (timeout) => buffer.drain(timeout);\n\n function send(envelope) {\n var filteredEnvelopeItems = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n var envelopeItemDataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, envelopeItemDataCategory)) {\n options.recordDroppedEvent('ratelimit_backoff', envelopeItemDataCategory);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return resolvedSyncPromise();\n }\n\n var filteredEnvelope = createEnvelope(envelope[0], filteredEnvelopeItems );\n\n // Creates client report for each item in an envelope\n var recordEnvelopeLoss = (reason) => {\n forEachEnvelopeItem(filteredEnvelope, (_, type) => {\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type));\n });\n };\n\n var requestTask = () =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n },\n error => {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Failed while sending event:', error);\n recordEnvelopeLoss('network_error');\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Skipped sending event due to full buffer');\n recordEnvelopeLoss('queue_overflow');\n return resolvedSyncPromise();\n } else {\n throw error;\n }\n },\n );\n }\n\n return {\n send,\n flush,\n };\n}\n\nexport { DEFAULT_TRANSPORT_BUFFER_SIZE, createTransport };\n//# sourceMappingURL=base.js.map\n","import { createTransport } from '@sentry/core';\nimport { getNativeFetchImplementation } from './utils.js';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nfunction makeFetchTransport(\n options,\n nativeFetch = getNativeFetchImplementation(),\n) {\n function makeRequest(request) {\n var requestOptions = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n headers: options.headers,\n ...options.fetchOptions,\n };\n\n return nativeFetch(options.url, requestOptions).then(response => ({\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n }));\n }\n\n return createTransport(options, makeRequest);\n}\n\nexport { makeFetchTransport };\n//# sourceMappingURL=fetch.js.map\n","import { createTransport } from '@sentry/core';\nimport { SyncPromise } from '@sentry/utils';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nvar XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nfunction makeXHRTransport(options) {\n function makeRequest(request) {\n return new SyncPromise((resolve, reject) => {\n var xhr = new XMLHttpRequest();\n\n xhr.onerror = reject;\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n resolve({\n statusCode: xhr.status,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n });\n }\n };\n\n xhr.open('POST', options.url);\n\n for (var header in options.headers) {\n if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n xhr.setRequestHeader(header, options.headers[header]);\n }\n }\n\n xhr.send(request.body);\n });\n }\n\n return createTransport(options, makeRequest);\n}\n\nexport { makeXHRTransport };\n//# sourceMappingURL=xhr.js.map\n","import { Integrations, getIntegrationsToSetup, initAndBind, getCurrentHub, getReportDialogEndpoint } from '@sentry/core';\nimport { getGlobalObject, stackParserFromStackParserOptions, supportsFetch, logger, resolvedSyncPromise, addInstrumentationHandler } from '@sentry/utils';\nimport { BrowserClient } from './client.js';\nimport { wrap as wrap$1 } from './helpers.js';\nimport './integrations/index.js';\nimport { defaultStackParser } from './stack-parsers.js';\nimport './transports/index.js';\nimport { TryCatch } from './integrations/trycatch.js';\nimport { Breadcrumbs } from './integrations/breadcrumbs.js';\nimport { GlobalHandlers } from './integrations/globalhandlers.js';\nimport { LinkedErrors } from './integrations/linkederrors.js';\nimport { Dedupe } from './integrations/dedupe.js';\nimport { HttpContext } from './integrations/httpcontext.js';\nimport { makeFetchTransport } from './transports/fetch.js';\nimport { makeXHRTransport } from './transports/xhr.js';\n\nvar defaultIntegrations = [\n new Integrations.InboundFilters(),\n new Integrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new Dedupe(),\n new HttpContext(),\n];\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nfunction init(options = {}) {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n var window = getGlobalObject();\n // This supports the variable that sentry-webpack-plugin injects\n if (window.SENTRY_RELEASE && window.SENTRY_RELEASE.id) {\n options.release = window.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n\n var clientOptions = {\n ...options,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n };\n\n initAndBind(BrowserClient, clientOptions);\n\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nfunction showReportDialog(options = {}, hub = getCurrentHub()) {\n // doesn't work without a document (React Native)\n var global = getGlobalObject();\n if (!global.document) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n const { client, scope } = hub.getStackTop();\n var dsn = options.dsn || (client && client.getDsn());\n if (!dsn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('DSN not configured for showReportDialog call');\n return;\n }\n\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n if (!options.eventId) {\n options.eventId = hub.lastEventId();\n }\n\n var script = global.document.createElement('script');\n script.async = true;\n script.src = getReportDialogEndpoint(dsn, options);\n\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n\n var injectionPoint = global.document.head || global.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nfunction lastEventId() {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction forceLoad() {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction onLoad(callback) {\n callback();\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nfunction flush(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot flush events. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nfunction close(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\nfunction wrap(fn) {\n return wrap$1(fn)();\n}\n\nfunction startSessionOnHub(hub) {\n hub.startSession({ ignoreDuration: true });\n hub.captureSession();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking() {\n var window = getGlobalObject();\n var document = window.document;\n\n if (typeof document === 'undefined') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n\n var hub = getCurrentHub();\n\n // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n // pinned at the same version in package.json, but there are edge cases where it's possible. See\n // https://github.com/getsentry/sentry-javascript/issues/3207 and\n // https://github.com/getsentry/sentry-javascript/issues/3234 and\n // https://github.com/getsentry/sentry-javascript/issues/3278.\n if (!hub.captureSession) {\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSessionOnHub(hub);\n\n // We want to create a session for every navigation as well\n addInstrumentationHandler('history', ({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (!(from === undefined || from === to)) {\n startSessionOnHub(getCurrentHub());\n }\n });\n}\n\nexport { close, defaultIntegrations, flush, forceLoad, init, lastEventId, onLoad, showReportDialog, wrap };\n//# sourceMappingURL=sdk.js.map\n","import { getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\n\n/** A class object that can instantiate Client objects. */\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nfunction initAndBind(\n clientClass,\n options,\n) {\n if (options.debug === true) {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n }\n }\n var hub = getCurrentHub();\n var scope = hub.getScope();\n if (scope) {\n scope.update(options.initialScope);\n }\n\n var client = new clientClass(options);\n hub.bindClient(client);\n}\n\nexport { initAndBind };\n//# sourceMappingURL=sdk.js.map\n","var TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nfunction extractTraceparentData(traceparent) {\n var matches = traceparent.match(TRACEPARENT_REGEXP);\n if (matches) {\n let parentSampled;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n }\n return undefined;\n}\n\nexport { TRACEPARENT_REGEXP, extractTraceparentData };\n//# sourceMappingURL=tracing.js.map\n","import { getGlobalObject, logger } from '@sentry/utils';\nimport { getActiveTransaction } from '../utils.js';\n\nvar global = getGlobalObject();\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nfunction registerBackgroundTabDetection() {\n if (global && global.document) {\n global.document.addEventListener('visibilitychange', () => {\n var activeTransaction = getActiveTransaction() ;\n if (global.document.hidden && activeTransaction) {\n var statusType = 'cancelled';\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${activeTransaction.op}`,\n );\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (!activeTransaction.status) {\n activeTransaction.setStatus(statusType);\n }\n activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.finish();\n }\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n\nexport { registerBackgroundTabDetection };\n//# sourceMappingURL=backgroundtab.js.map\n","var bindReporter = (\n callback,\n metric,\n reportAllChanges,\n) => {\n let prevValue;\n return (forceReport) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n metric.delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (metric.delta || prevValue === undefined) {\n prevValue = metric.value;\n callback(metric);\n }\n }\n }\n };\n};\n\nexport { bindReporter };\n//# sourceMappingURL=bindReporter.js.map\n","import { _nullishCoalesce } from '@sentry/utils/esm/buildPolyfills';\nimport { generateUniqueID } from './generateUniqueID.js';\n\nvar initMetric = (name, value) => {\n return {\n name,\n value: _nullishCoalesce(value, () => ( -1)),\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n };\n};\n\nexport { initMetric };\n//# sourceMappingURL=initMetric.js.map\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nvar generateUniqueID = () => {\n return `v2-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n\nexport { generateUniqueID };\n//# sourceMappingURL=generateUniqueID.js.map\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nvar observe = (type, callback) => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n // More extensive feature detect needed for Firefox due to:\n // https://github.com/GoogleChrome/web-vitals/issues/142\n if (type === 'first-input' && !('PerformanceEventTiming' in self)) {\n return;\n }\n\n var po = new PerformanceObserver(l => l.getEntries().map(callback));\n\n po.observe({ type, buffered: true });\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n\nexport { observe };\n//# sourceMappingURL=observe.js.map\n","import { getGlobalObject } from '@sentry/utils';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar onHidden = (cb, once) => {\n var onHiddenOrPageHide = (event) => {\n if (event.type === 'pagehide' || getGlobalObject().document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n\nexport { onHidden };\n//# sourceMappingURL=onHidden.js.map\n","import { getGlobalObject } from '@sentry/utils';\nimport { onHidden } from './onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nlet firstHiddenTime = -1;\n\nvar initHiddenTime = () => {\n return getGlobalObject().document.visibilityState === 'hidden' ? 0 : Infinity;\n};\n\nvar trackChanges = () => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nvar getVisibilityWatcher = (\n\n) => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n firstHiddenTime = initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n\nexport { getVisibilityWatcher };\n//# sourceMappingURL=getVisibilityWatcher.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// https://wicg.github.io/largest-contentful-paint/#sec-largest-contentful-paint-interface\n\nvar reportedMetricIDs = {};\n\nvar getLCP = (onReport, reportAllChanges) => {\n var visibilityWatcher = getVisibilityWatcher();\n var metric = initMetric('LCP');\n let report;\n\n var entryHandler = (entry) => {\n // The startTime attribute returns the value of the renderTime if it is not 0,\n // and the value of the loadTime otherwise.\n var value = entry.startTime;\n\n // If the page was hidden prior to paint time of the entry,\n // ignore it and mark the metric as final, otherwise add the entry.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries.push(entry);\n }\n\n if (report) {\n report();\n }\n };\n\n var po = observe('largest-contentful-paint', entryHandler);\n\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n\n var stopListening = () => {\n if (!reportedMetricIDs[metric.id]) {\n po.takeRecords().map(entryHandler );\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n addEventListener(type, stopListening, { once: true, capture: true });\n });\n\n onHidden(stopListening, true);\n }\n};\n\nexport { getLCP };\n//# sourceMappingURL=getLCP.js.map\n","/**\n * Checks if a given value is a valid measurement value.\n */\nfunction isMeasurementValue(value) {\n return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nfunction _startChild(transaction, { startTimestamp, ...ctx }) {\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n\n return transaction.startChild({\n startTimestamp,\n ...ctx,\n });\n}\n\nexport { _startChild, isMeasurementValue };\n//# sourceMappingURL=utils.js.map\n","import { _nullishCoalesce } from '@sentry/utils/esm/buildPolyfills';\nimport { getGlobalObject, browserPerformanceTimeOrigin, logger, htmlTreeAsString } from '@sentry/utils';\nimport { msToSec } from '../../utils.js';\nimport { getCLS } from '../web-vitals/getCLS.js';\nimport { getFID } from '../web-vitals/getFID.js';\nimport { getLCP } from '../web-vitals/getLCP.js';\nimport { getVisibilityWatcher } from '../web-vitals/lib/getVisibilityWatcher.js';\nimport { _startChild, isMeasurementValue } from './utils.js';\n\nvar global = getGlobalObject();\n\nfunction getBrowserPerformanceAPI() {\n return global && global.addEventListener && global.performance;\n}\n\nlet _performanceCursor = 0;\n\nlet _measurements = {};\nlet _lcpEntry;\nlet _clsEntry;\n\n/**\n * Start tracking web vitals\n */\nfunction startTrackingWebVitals(reportAllChanges = false) {\n var performance = getBrowserPerformanceAPI();\n if (performance && browserPerformanceTimeOrigin) {\n if (performance.mark) {\n global.performance.mark('sentry-tracing-init');\n }\n _trackCLS();\n _trackLCP(reportAllChanges);\n _trackFID();\n }\n}\n\n/** Starts tracking the Cumulative Layout Shift on the current page. */\nfunction _trackCLS() {\n // See:\n // https://web.dev/evolving-cls/\n // https://web.dev/cls-web-tooling/\n getCLS(metric => {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding CLS');\n _measurements['cls'] = { value: metric.value, unit: '' };\n _clsEntry = entry ;\n });\n}\n\n/** Starts tracking the Largest Contentful Paint on the current page. */\nfunction _trackLCP(reportAllChanges) {\n getLCP(metric => {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n var timeOrigin = msToSec(browserPerformanceTimeOrigin );\n var startTime = msToSec(entry.startTime);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding LCP');\n _measurements['lcp'] = { value: metric.value, unit: 'millisecond' };\n _measurements['mark.lcp'] = { value: timeOrigin + startTime, unit: 'second' };\n _lcpEntry = entry ;\n }, reportAllChanges);\n}\n\n/** Starts tracking the First Input Delay on the current page. */\nfunction _trackFID() {\n getFID(metric => {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n var timeOrigin = msToSec(browserPerformanceTimeOrigin );\n var startTime = msToSec(entry.startTime);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FID');\n _measurements['fid'] = { value: metric.value, unit: 'millisecond' };\n _measurements['mark.fid'] = { value: timeOrigin + startTime, unit: 'second' };\n });\n}\n\n/** Add performance related spans to a transaction */\nfunction addPerformanceEntries(transaction) {\n var performance = getBrowserPerformanceAPI();\n if (!performance || !global.performance.getEntries || !browserPerformanceTimeOrigin) {\n // Gatekeeper if performance API not available\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n var timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n var performanceEntries = performance.getEntries();\n\n let responseStartTimestamp;\n let requestStartTimestamp;\n\n performanceEntries.slice(_performanceCursor).forEach((entry) => {\n var startTime = msToSec(entry.startTime);\n var duration = msToSec(entry.duration);\n\n if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n return;\n }\n\n switch (entry.entryType) {\n case 'navigation': {\n _addNavigationSpans(transaction, entry, timeOrigin);\n responseStartTimestamp = timeOrigin + msToSec(entry.responseStart);\n requestStartTimestamp = timeOrigin + msToSec(entry.requestStart);\n break;\n }\n case 'mark':\n case 'paint':\n case 'measure': {\n var startTimestamp = _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n\n // capture web vitals\n var firstHidden = getVisibilityWatcher();\n // Only report if the page wasn't hidden prior to the web vital.\n var shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n if (entry.name === 'first-paint' && shouldRecord) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FP');\n _measurements['fp'] = { value: entry.startTime, unit: 'millisecond' };\n _measurements['mark.fp'] = { value: startTimestamp, unit: 'second' };\n }\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FCP');\n _measurements['fcp'] = { value: entry.startTime, unit: 'millisecond' };\n _measurements['mark.fcp'] = { value: startTimestamp, unit: 'second' };\n }\n break;\n }\n case 'resource': {\n var resourceName = (entry.name ).replace(global.location.origin, '');\n _addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n break;\n }\n default:\n // Ignore other entry types.\n }\n });\n\n _performanceCursor = Math.max(performanceEntries.length - 1, 0);\n\n _trackNavigator(transaction);\n\n // Measurements are only available for pageload transactions\n if (transaction.op === 'pageload') {\n // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n // start of the response in milliseconds\n if (typeof responseStartTimestamp === 'number') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding TTFB');\n _measurements['ttfb'] = {\n value: (responseStartTimestamp - transaction.startTimestamp) * 1000,\n unit: 'millisecond',\n };\n\n if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n // Capture the time spent making the request and receiving the first byte of the response.\n // This is the time between the start of the request and the start of the response in milliseconds.\n _measurements['ttfb.requestTime'] = {\n value: (responseStartTimestamp - requestStartTimestamp) * 1000,\n unit: 'millisecond',\n };\n }\n }\n\n ['fcp', 'fp', 'lcp'].forEach(name => {\n if (!_measurements[name] || timeOrigin >= transaction.startTimestamp) {\n return;\n }\n // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n // to be adjusted to be relative to transaction.startTimestamp.\n var oldValue = _measurements[name].value;\n var measurementTimestamp = timeOrigin + msToSec(oldValue);\n\n // normalizedValue should be in milliseconds\n var normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n var delta = normalizedValue - oldValue;\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n _measurements[name].value = normalizedValue;\n });\n\n if (_measurements['mark.fid'] && _measurements['fid']) {\n // create span for FID\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: _measurements['mark.fid'].value + msToSec(_measurements['fid'].value),\n op: 'web.vitals',\n startTimestamp: _measurements['mark.fid'].value,\n });\n }\n\n // If FCP is not recorded we should not record the cls value\n // according to the new definition of CLS.\n if (!('fcp' in _measurements)) {\n delete _measurements.cls;\n }\n\n Object.keys(_measurements).forEach(measurementName => {\n transaction.setMeasurement(\n measurementName,\n _measurements[measurementName].value,\n _measurements[measurementName].unit,\n );\n });\n\n _tagMetricInfo(transaction);\n }\n\n _lcpEntry = undefined;\n _clsEntry = undefined;\n _measurements = {};\n}\n\n/** Create measure related spans */\nfunction _addMeasureSpans(\n transaction,\n entry,\n startTime,\n duration,\n timeOrigin,\n) {\n var measureStartTimestamp = timeOrigin + startTime;\n var measureEndTimestamp = measureStartTimestamp + duration;\n\n _startChild(transaction, {\n description: entry.name ,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType ,\n startTimestamp: measureStartTimestamp,\n });\n\n return measureStartTimestamp;\n}\n\n/** Instrument navigation entries */\nfunction _addNavigationSpans(transaction, entry, timeOrigin) {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n });\n _addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n _addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n _addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n _addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create performance navigation related spans */\nfunction _addPerformanceNavigationTiming(\n transaction,\n entry,\n event,\n timeOrigin,\n description,\n eventEnd,\n) {\n var end = eventEnd ? (entry[eventEnd] ) : (entry[`${event}End`] );\n var start = entry[`${event}Start`] ;\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\n description: _nullishCoalesce(description, () => ( event)),\n startTimestamp: timeOrigin + msToSec(start),\n endTimestamp: timeOrigin + msToSec(end),\n });\n}\n\n/** Create request and response related spans */\nfunction _addRequest(transaction, entry, timeOrigin) {\n _startChild(transaction, {\n op: 'browser',\n description: 'request',\n startTimestamp: timeOrigin + msToSec(entry.requestStart ),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n });\n\n _startChild(transaction, {\n op: 'browser',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart ),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n });\n}\n\n/** Create resource-related spans */\nfunction _addResourceSpans(\n transaction,\n entry,\n resourceName,\n startTime,\n duration,\n timeOrigin,\n) {\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n return;\n }\n\n var data = {};\n if ('transferSize' in entry) {\n data['Transfer Size'] = entry.transferSize;\n }\n if ('encodedBodySize' in entry) {\n data['Encoded Body Size'] = entry.encodedBodySize;\n }\n if ('decodedBodySize' in entry) {\n data['Decoded Body Size'] = entry.decodedBodySize;\n }\n\n var startTimestamp = timeOrigin + startTime;\n var endTimestamp = startTimestamp + duration;\n\n _startChild(transaction, {\n description: resourceName,\n endTimestamp,\n op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource',\n startTimestamp,\n data,\n });\n}\n\n/**\n * Capture the information of the user agent.\n */\nfunction _trackNavigator(transaction) {\n var navigator = global.navigator ;\n if (!navigator) {\n return;\n }\n\n // track network connectivity\n var connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n\n if (connection.type) {\n transaction.setTag('connectionType', connection.type);\n }\n\n if (isMeasurementValue(connection.rtt)) {\n _measurements['connection.rtt'] = { value: connection.rtt, unit: 'millisecond' };\n }\n\n if (isMeasurementValue(connection.downlink)) {\n _measurements['connection.downlink'] = { value: connection.downlink, unit: '' }; // unit is empty string for now, while relay doesn't support download speed units\n }\n }\n\n if (isMeasurementValue(navigator.deviceMemory)) {\n transaction.setTag('deviceMemory', `${navigator.deviceMemory} GB`);\n }\n\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction _tagMetricInfo(transaction) {\n if (_lcpEntry) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding LCP Data');\n\n // Capture Properties of the LCP element that contributes to the LCP.\n\n if (_lcpEntry.element) {\n transaction.setTag('lcp.element', htmlTreeAsString(_lcpEntry.element));\n }\n\n if (_lcpEntry.id) {\n transaction.setTag('lcp.id', _lcpEntry.id);\n }\n\n if (_lcpEntry.url) {\n // Trim URL to the first 200 characters.\n transaction.setTag('lcp.url', _lcpEntry.url.trim().slice(0, 200));\n }\n\n transaction.setTag('lcp.size', _lcpEntry.size);\n }\n\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (_clsEntry && _clsEntry.sources) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding CLS Data');\n _clsEntry.sources.forEach((source, index) =>\n transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n );\n }\n}\n\nexport { _addMeasureSpans, _addResourceSpans, addPerformanceEntries, startTrackingWebVitals };\n//# sourceMappingURL=index.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// https://wicg.github.io/layout-instability/#sec-layout-shift\n\nvar getCLS = (onReport, reportAllChanges) => {\n var metric = initMetric('CLS', 0);\n let report;\n\n let sessionValue = 0;\n let sessionEntries = [];\n\n var entryHandler = (entry) => {\n // Only count layout shifts without recent user input.\n // TODO: Figure out why entry can be undefined\n if (entry && !entry.hadRecentInput) {\n var firstSessionEntry = sessionEntries[0];\n var lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (\n sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000\n ) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n };\n\n var po = observe('layout-shift', entryHandler );\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n\n onHidden(() => {\n po.takeRecords().map(entryHandler );\n report(true);\n });\n }\n};\n\nexport { getCLS };\n//# sourceMappingURL=getCLS.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar getFID = (onReport, reportAllChanges) => {\n var visibilityWatcher = getVisibilityWatcher();\n var metric = initMetric('FID');\n let report;\n\n var entryHandler = (entry) => {\n // Only report if the page wasn't hidden prior to the first input.\n if (report && entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n var po = observe('first-input', entryHandler );\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n onHidden(() => {\n po.takeRecords().map(entryHandler );\n po.disconnect();\n }, true);\n }\n};\n\nexport { getFID };\n//# sourceMappingURL=getFID.js.map\n","import { isMatchingPattern, addInstrumentationHandler, isInstanceOf, BAGGAGE_HEADER_NAME, mergeAndSerializeBaggage } from '@sentry/utils';\nimport { hasTracingEnabled, getActiveTransaction } from '../utils.js';\n\nvar DEFAULT_TRACING_ORIGINS = ['localhost', /^\\//];\n\n/** Options for Request Instrumentation */\n\nvar defaultRequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n tracingOrigins: DEFAULT_TRACING_ORIGINS,\n};\n\n/** Registers span creators for xhr and fetch requests */\nfunction instrumentOutgoingRequests(_options) {\n const { traceFetch, traceXHR, tracingOrigins, shouldCreateSpanForRequest } = {\n ...defaultRequestInstrumentationOptions,\n ..._options,\n };\n\n // We should cache url -> decision so that we don't have to compute\n // regexp everytime we create a request.\n var urlMap = {};\n\n var defaultShouldCreateSpan = (url) => {\n if (urlMap[url]) {\n return urlMap[url];\n }\n var origins = tracingOrigins;\n urlMap[url] =\n origins.some((origin) => isMatchingPattern(url, origin)) &&\n !isMatchingPattern(url, 'sentry_key');\n return urlMap[url];\n };\n\n // We want that our users don't have to re-implement shouldCreateSpanForRequest themselves\n // That's why we filter out already unwanted Spans from tracingOrigins\n let shouldCreateSpan = defaultShouldCreateSpan;\n if (typeof shouldCreateSpanForRequest === 'function') {\n shouldCreateSpan = (url) => {\n return defaultShouldCreateSpan(url) && shouldCreateSpanForRequest(url);\n };\n }\n\n var spans = {};\n\n if (traceFetch) {\n addInstrumentationHandler('fetch', (handlerData) => {\n fetchCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n\n if (traceXHR) {\n addInstrumentationHandler('xhr', (handlerData) => {\n xhrCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n}\n\n/**\n * Create and track fetch request spans\n */\nfunction fetchCallback(\n handlerData,\n shouldCreateSpan,\n spans,\n) {\n if (!hasTracingEnabled() || !(handlerData.fetchData && shouldCreateSpan(handlerData.fetchData.url))) {\n return;\n }\n\n if (handlerData.endTimestamp) {\n var spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n var span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n // TODO (kmclb) remove this once types PR goes through\n span.setHttpStatus(handlerData.response.status);\n } else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.finish();\n\n delete spans[spanId];\n }\n return;\n }\n\n var activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n var span = activeTransaction.startChild({\n data: {\n ...handlerData.fetchData,\n type: 'fetch',\n },\n description: `${handlerData.fetchData.method} ${handlerData.fetchData.url}`,\n op: 'http.client',\n });\n\n handlerData.fetchData.__span = span.spanId;\n spans[span.spanId] = span;\n\n var request = (handlerData.args[0] = handlerData.args[0] );\n var options = (handlerData.args[1] = (handlerData.args[1] ) || {});\n options.headers = addTracingHeaders(request, activeTransaction.getBaggage(), span, options);\n }\n}\n\nfunction addTracingHeaders(\n request,\n incomingBaggage,\n span,\n options,\n) {\n let headers = options.headers;\n\n if (isInstanceOf(request, Request)) {\n headers = (request ).headers;\n }\n\n if (headers) {\n if (typeof headers.append === 'function') {\n headers.append('sentry-trace', span.toTraceparent());\n headers.append(BAGGAGE_HEADER_NAME, mergeAndSerializeBaggage(incomingBaggage, headers.get(BAGGAGE_HEADER_NAME)));\n } else if (Array.isArray(headers)) {\n const [, headerBaggageString] = headers.find(([key, _]) => key === BAGGAGE_HEADER_NAME);\n headers = [\n ...headers,\n ['sentry-trace', span.toTraceparent()],\n [BAGGAGE_HEADER_NAME, mergeAndSerializeBaggage(incomingBaggage, headerBaggageString)],\n ];\n } else {\n headers = {\n ...headers,\n 'sentry-trace': span.toTraceparent(),\n baggage: mergeAndSerializeBaggage(incomingBaggage, headers.baggage),\n };\n }\n } else {\n headers = { 'sentry-trace': span.toTraceparent(), baggage: mergeAndSerializeBaggage(incomingBaggage) };\n }\n return headers;\n}\n\n/**\n * Create and track xhr request spans\n */\nfunction xhrCallback(\n handlerData,\n shouldCreateSpan,\n spans,\n) {\n if (\n !hasTracingEnabled() ||\n (handlerData.xhr && handlerData.xhr.__sentry_own_request__) ||\n !(handlerData.xhr && handlerData.xhr.__sentry_xhr__ && shouldCreateSpan(handlerData.xhr.__sentry_xhr__.url))\n ) {\n return;\n }\n\n var xhr = handlerData.xhr.__sentry_xhr__;\n\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp) {\n var spanId = handlerData.xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n\n var span = spans[spanId];\n if (span) {\n span.setHttpStatus(xhr.status_code);\n span.finish();\n\n delete spans[spanId];\n }\n return;\n }\n\n // if not, create a new span to track it\n var activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n var span = activeTransaction.startChild({\n data: {\n ...xhr.data,\n type: 'xhr',\n method: xhr.method,\n url: xhr.url,\n },\n description: `${xhr.method} ${xhr.url}`,\n op: 'http.client',\n });\n\n handlerData.xhr.__sentry_xhr_span_id__ = span.spanId;\n spans[handlerData.xhr.__sentry_xhr_span_id__] = span;\n\n if (handlerData.xhr.setRequestHeader) {\n try {\n handlerData.xhr.setRequestHeader('sentry-trace', span.toTraceparent());\n\n var headerBaggageString =\n handlerData.xhr.getRequestHeader && handlerData.xhr.getRequestHeader(BAGGAGE_HEADER_NAME);\n\n handlerData.xhr.setRequestHeader(\n BAGGAGE_HEADER_NAME,\n mergeAndSerializeBaggage(activeTransaction.getBaggage(), headerBaggageString),\n );\n } catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n }\n }\n}\n\nexport { DEFAULT_TRACING_ORIGINS, defaultRequestInstrumentationOptions, fetchCallback, instrumentOutgoingRequests, xhrCallback };\n//# sourceMappingURL=request.js.map\n","import { getGlobalObject, logger, addInstrumentationHandler } from '@sentry/utils';\n\nvar global = getGlobalObject();\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nfunction instrumentRoutingWithDefaults(\n customStartTransaction,\n startTransactionOnPageLoad = true,\n startTransactionOnLocationChange = true,\n) {\n if (!global || !global.location) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n\n let startingUrl = global.location.href;\n\n let activeTransaction;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({\n name: global.location.pathname,\n op: 'pageload',\n metadata: { source: 'url' },\n });\n }\n\n if (startTransactionOnLocationChange) {\n addInstrumentationHandler('history', ({ to, from }) => {\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n\n if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n // If there's an open transaction on the scope, we need to finish it before creating an new one.\n activeTransaction.finish();\n }\n activeTransaction = customStartTransaction({\n name: global.location.pathname,\n op: 'navigation',\n metadata: { source: 'url' },\n });\n }\n });\n }\n}\n\nexport { instrumentRoutingWithDefaults };\n//# sourceMappingURL=router.js.map\n","import { logger, getGlobalObject, extractTraceparentData, parseBaggageSetMutability } from '@sentry/utils';\nimport { startIdleTransaction } from '../hubextensions.js';\nimport { DEFAULT_IDLE_TIMEOUT, DEFAULT_FINAL_TIMEOUT } from '../idletransaction.js';\nimport '../utils.js';\nimport { registerBackgroundTabDetection } from './backgroundtab.js';\nimport { startTrackingWebVitals, addPerformanceEntries } from './metrics/index.js';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './request.js';\nimport { instrumentRoutingWithDefaults } from './router.js';\n\nvar BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\n\nvar DEFAULT_BROWSER_TRACING_OPTIONS = {\n idleTimeout: DEFAULT_IDLE_TIMEOUT,\n finalTimeout: DEFAULT_FINAL_TIMEOUT,\n markBackgroundTransactions: true,\n routingInstrumentation: instrumentRoutingWithDefaults,\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true,\n ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nclass BrowserTracing {\n // This class currently doesn't have a static `id` field like the other integration classes, because it prevented\n // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects.\n // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all\n // integrations.\n\n /** Browser Tracing integration options */\n \n\n /**\n * @inheritDoc\n */\n __init() {this.name = BROWSER_TRACING_INTEGRATION_ID;}\n\n constructor(_options) {;BrowserTracing.prototype.__init.call(this);\n let tracingOrigins = defaultRequestInstrumentationOptions.tracingOrigins;\n // NOTE: Logger doesn't work in constructors, as it's initialized after integrations instances\n if (_options) {\n if (_options.tracingOrigins && Array.isArray(_options.tracingOrigins) && _options.tracingOrigins.length !== 0) {\n tracingOrigins = _options.tracingOrigins;\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && (this._emitOptionsWarning = true);\n }\n }\n\n this.options = {\n ...DEFAULT_BROWSER_TRACING_OPTIONS,\n ..._options,\n tracingOrigins,\n };\n\n const { _metricOptions } = this.options;\n startTrackingWebVitals(_metricOptions && _metricOptions._reportAllChanges);\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(_, getCurrentHub) {\n this._getCurrentHub = getCurrentHub;\n\n if (this._emitOptionsWarning) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n '[Tracing] You need to define `tracingOrigins` in the options. Set an array of urls or patterns to trace.',\n );\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `[Tracing] We added a reasonable default for you: ${defaultRequestInstrumentationOptions.tracingOrigins}`,\n );\n }\n\n const {\n routingInstrumentation: instrumentRouting,\n startTransactionOnLocationChange,\n startTransactionOnPageLoad,\n markBackgroundTransactions,\n traceFetch,\n traceXHR,\n tracingOrigins,\n shouldCreateSpanForRequest,\n } = this.options;\n\n instrumentRouting(\n (context) => this._createRouteTransaction(context),\n startTransactionOnPageLoad,\n startTransactionOnLocationChange,\n );\n\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n\n instrumentOutgoingRequests({ traceFetch, traceXHR, tracingOrigins, shouldCreateSpanForRequest });\n }\n\n /** Create routing idle transaction. */\n _createRouteTransaction(context) {\n if (!this._getCurrentHub) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n const { beforeNavigate, idleTimeout, finalTimeout } = this.options;\n\n var parentContextFromHeader = context.op === 'pageload' ? extractTraceDataFromMetaTags() : undefined;\n\n var expandedContext = {\n ...context,\n ...parentContextFromHeader,\n ...(parentContextFromHeader && {\n metadata: {\n ...context.metadata,\n ...parentContextFromHeader.metadata,\n },\n }),\n trimEnd: true,\n };\n var modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n // from being sent to Sentry).\n var finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n // If `beforeNavigate` set a custom name, record that fact\n finalContext.metadata =\n finalContext.name !== expandedContext.name\n ? { ...finalContext.metadata, source: 'custom' }\n : finalContext.metadata;\n\n if (finalContext.sampled === false) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n var hub = this._getCurrentHub();\n const { location } = getGlobalObject() ;\n\n var idleTransaction = startIdleTransaction(\n hub,\n finalContext,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n );\n idleTransaction.registerBeforeFinishCallback(transaction => {\n addPerformanceEntries(transaction);\n transaction.setTag(\n 'sentry_reportAllChanges',\n Boolean(this.options._metricOptions && this.options._metricOptions._reportAllChanges),\n );\n });\n\n return idleTransaction ;\n }\n}\n\n/**\n * Gets transaction context data from `sentry-trace` and `baggage` tags.\n * @returns Transaction context data or undefined neither tag exists or has valid data\n */\nfunction extractTraceDataFromMetaTags() {\n var sentrytraceValue = getMetaContent('sentry-trace');\n var baggageValue = getMetaContent('baggage');\n\n var sentrytraceData = sentrytraceValue ? extractTraceparentData(sentrytraceValue) : undefined;\n var baggage = parseBaggageSetMutability(baggageValue, sentrytraceValue);\n\n // TODO more extensive checks for baggage validity/emptyness?\n if (sentrytraceData || baggage) {\n return {\n ...(sentrytraceData && sentrytraceData),\n ...(baggage && { metadata: { baggage } }),\n };\n }\n\n return undefined;\n}\n\n/** Returns the value of a meta tag */\nfunction getMetaContent(metaName) {\n var globalObject = getGlobalObject();\n\n // DOM/querySelector is not available in all environments\n if (globalObject.document && globalObject.document.querySelector) {\n var el = globalObject.document.querySelector(`meta[name=${metaName}]`);\n return el ? el.getAttribute('content') : null;\n } else {\n return null;\n }\n}\n\nexport { BROWSER_TRACING_INTEGRATION_ID, BrowserTracing, extractTraceDataFromMetaTags, getMetaContent };\n//# sourceMappingURL=browsertracing.js.map\n","import { addExtensionMethods } from './hubextensions.js';\nexport { addExtensionMethods, startIdleTransaction } from './hubextensions.js';\nimport * as index from './integrations/index.js';\nexport { index as Integrations };\nimport './browser/index.js';\nexport { Span, spanStatusfromHttpCode } from './span.js';\nexport { SpanStatus } from './spanstatus.js';\nexport { Transaction } from './transaction.js';\nexport { IdleTransaction } from './idletransaction.js';\nexport { getActiveTransaction, hasTracingEnabled } from './utils.js';\nexport { BROWSER_TRACING_INTEGRATION_ID, BrowserTracing } from './browser/browsertracing.js';\nexport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './browser/request.js';\nexport { TRACEPARENT_REGEXP, extractTraceparentData, stripUrlQueryAndFragment } from '@sentry/utils';\n\n;\n;\n\n// Treeshakable guard to remove all code related to tracing\n\n// Guard for tree\nif (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) {\n // We are patching the global object with our hub extension methods\n addExtensionMethods();\n}\n//# sourceMappingURL=index.js.map\n","import { getGlobalObject, stripUrlQueryAndFragment, fill } from '@sentry/utils';\nimport Router from 'next/router';\n\nvar global = getGlobalObject();\n\nvar DEFAULT_TAGS = {\n 'routing.instrumentation': 'next-router',\n} ;\n\nlet activeTransaction = undefined;\nlet prevTransactionName = undefined;\nlet startTransaction = undefined;\n\n/**\n * Creates routing instrumention for Next Router. Only supported for\n * client side routing. Works for Next >= 10.\n *\n * Leverages the SingletonRouter from the `next/router` to\n * generate pageload/navigation transactions and parameterize\n * transaction names.\n */\nfunction nextRouterInstrumentation(\n startTransactionCb,\n startTransactionOnPageLoad = true,\n startTransactionOnLocationChange = true,\n) {\n startTransaction = startTransactionCb;\n Router.ready(() => {\n // We can only start the pageload transaction when we have access to the parameterized\n // route name. Setting the transaction name after the transaction is started could lead\n // to possible race conditions with the router, so this approach was taken.\n if (startTransactionOnPageLoad) {\n var pathIsRoute = Router.route !== null;\n\n prevTransactionName = pathIsRoute ? stripUrlQueryAndFragment(Router.route) : global.location.pathname;\n activeTransaction = startTransactionCb({\n name: prevTransactionName,\n op: 'pageload',\n tags: DEFAULT_TAGS,\n metadata: {\n source: pathIsRoute ? 'route' : 'url',\n },\n });\n }\n\n // Spans that aren't attached to any transaction are lost; so if transactions aren't\n // created (besides potentially the onpageload transaction), no need to wrap the router.\n if (!startTransactionOnLocationChange) return;\n\n // `withRouter` uses `useRouter` underneath:\n // https://github.com/vercel/next.js/blob/de42719619ae69fbd88e445100f15701f6e1e100/packages/next/client/with-router.tsx#L21\n // Router events also use the router:\n // https://github.com/vercel/next.js/blob/de42719619ae69fbd88e445100f15701f6e1e100/packages/next/client/router.ts#L92\n // `Router.changeState` handles the router state changes, so it may be enough to only wrap it\n // (instead of wrapping all of the Router's functions).\n var routerPrototype = Object.getPrototypeOf(Router.router);\n fill(routerPrototype, 'changeState', changeStateWrapper);\n });\n}\n\n/**\n * Wraps Router.changeState()\n * https://github.com/vercel/next.js/blob/da97a18dafc7799e63aa7985adc95f213c2bf5f3/packages/next/next-server/lib/router/router.ts#L1204\n * Start a navigation transaction every time the router changes state.\n */\nfunction changeStateWrapper(originalChangeStateWrapper) {\n var wrapper = function (\n \n method,\n // The parameterized url, ex. posts/[id]/[comment]\n url,\n // The actual url, ex. posts/85/my-comment\n as,\n options,\n // At the moment there are no additional arguments (meaning the rest parameter is empty).\n // This is meant to protect from future additions to Next.js API, especially since this is an\n // internal API.\n ...args\n ) {\n var newTransactionName = stripUrlQueryAndFragment(url);\n // do not start a transaction if it's from the same page\n if (startTransaction !== undefined && prevTransactionName !== newTransactionName) {\n if (activeTransaction) {\n activeTransaction.finish();\n }\n var tags = {\n ...DEFAULT_TAGS,\n method,\n ...options,\n };\n if (prevTransactionName) {\n tags.from = prevTransactionName;\n }\n prevTransactionName = newTransactionName;\n activeTransaction = startTransaction({\n name: prevTransactionName,\n op: 'navigation',\n tags,\n metadata: { source: 'route' },\n });\n }\n return originalChangeStateWrapper.call(this, method, url, as, options, ...args);\n };\n return wrapper;\n}\n\nexport { nextRouterInstrumentation };\n//# sourceMappingURL=client.js.map\n","/**\n * Recursively traverses an object to update an existing nested key.\n * Note: The provided key path must include existing properties,\n * the function will not create objects while traversing.\n *\n * @param obj An object to update\n * @param value The value to update the nested key with\n * @param keyPath The path to the key to update ex. fizz.buzz.foo\n */\nfunction setNestedKey(obj, keyPath, value) {\n // Ex. foo.bar.zoop will extract foo and bar.zoop\n var match = keyPath.match(/([a-z]+)\\.(.*)/i);\n if (match === null) {\n obj[keyPath] = value;\n } else {\n setNestedKey(obj[match[1]], match[2], value);\n }\n}\n\n/**\n * Retrieves the patched integrations with the provided integration.\n *\n * The integration must be present in the final user integrations, and they are compared\n * by integration name. If the user has defined one, there's nothing to patch; if not,\n * the provided integration is added.\n *\n * @param integration The integration to patch, if necessary.\n * @param userIntegrations Integrations defined by the user.\n * @param options options to update for a particular integration\n * @returns Final integrations, patched if necessary.\n */\nfunction addIntegration(\n integration,\n userIntegrations,\n options = {},\n) {\n if (Array.isArray(userIntegrations)) {\n return addIntegrationToArray(integration, userIntegrations, options);\n } else {\n return addIntegrationToFunction(integration, userIntegrations, options);\n }\n}\n\nfunction addIntegrationToArray(\n integration,\n userIntegrations,\n options,\n) {\n let includesName = false;\n for (let x = 0; x < userIntegrations.length; x++) {\n if (userIntegrations[x].name === integration.name) {\n includesName = true;\n }\n\n var op = options[userIntegrations[x].name];\n if (op) {\n setNestedKey(userIntegrations[x], op.keyPath, op.value);\n }\n }\n\n if (includesName) {\n return userIntegrations;\n }\n return [...userIntegrations, integration];\n}\n\nfunction addIntegrationToFunction(\n integration,\n userIntegrationsFunc,\n options,\n) {\n var wrapper = defaultIntegrations => {\n var userFinalIntegrations = userIntegrationsFunc(defaultIntegrations);\n return addIntegrationToArray(integration, userFinalIntegrations, options);\n };\n return wrapper;\n}\n\nexport { addIntegration };\n//# sourceMappingURL=userIntegrations.js.map\n","import { init as init$1, configureScope } from '@sentry/react';\nexport * from '@sentry/react';\nexport { Integrations } from '@sentry/react';\nimport { BrowserTracing, defaultRequestInstrumentationOptions } from '@sentry/tracing';\nexport { BrowserTracing } from '@sentry/tracing';\nimport { nextRouterInstrumentation } from './performance/client.js';\nexport { nextRouterInstrumentation } from './performance/client.js';\nimport { buildMetadata } from './utils/metadata.js';\nimport { addIntegration } from './utils/userIntegrations.js';\nexport { captureUnderscoreErrorException } from './utils/_error.js';\n\n// Treeshakable guard to remove all code related to tracing\n\n/** Inits the Sentry NextJS SDK on the browser with the React SDK. */\nfunction init(options) {\n buildMetadata(options, ['nextjs', 'react']);\n options.environment = options.environment || process.env.NODE_ENV;\n\n let integrations = options.integrations;\n\n // Guard below evaluates to true unless __SENTRY_TRACING__ is text-replaced with \"false\"\n if (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) {\n // Only add BrowserTracing if a tracesSampleRate or tracesSampler is set\n if (options.tracesSampleRate !== undefined || options.tracesSampler !== undefined) {\n integrations = createClientIntegrations(options.integrations);\n }\n }\n\n init$1({\n ...options,\n integrations,\n });\n\n configureScope(scope => {\n scope.setTag('runtime', 'browser');\n var filterTransactions = event =>\n event.type === 'transaction' && event.transaction === '/404' ? null : event;\n filterTransactions.id = 'NextClient404Filter';\n scope.addEventProcessor(filterTransactions);\n });\n}\n\nfunction createClientIntegrations(integrations) {\n var defaultBrowserTracingIntegration = new BrowserTracing({\n tracingOrigins: [...defaultRequestInstrumentationOptions.tracingOrigins, /^(api\\/)/],\n routingInstrumentation: nextRouterInstrumentation,\n });\n\n if (integrations) {\n return addIntegration(defaultBrowserTracingIntegration, integrations, {\n BrowserTracing: { keyPath: 'options.routingInstrumentation', value: nextRouterInstrumentation },\n });\n } else {\n return [defaultBrowserTracingIntegration];\n }\n}\n\nexport { init };\n//# sourceMappingURL=index.client.js.map\n","import { SDK_VERSION } from '@sentry/core';\n\nvar PACKAGE_NAME_PREFIX = 'npm:@sentry/';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n * @param options sdk options object that gets mutated\n * @param names list of package names\n */\nfunction buildMetadata(options, names) {\n options._metadata = options._metadata || {};\n options._metadata.sdk =\n options._metadata.sdk ||\n ({\n name: 'sentry.javascript.nextjs',\n packages: names.map(name => ({\n name: `${PACKAGE_NAME_PREFIX}${name}`,\n version: SDK_VERSION,\n })),\n version: SDK_VERSION,\n } );\n}\n\nexport { buildMetadata };\n//# sourceMappingURL=metadata.js.map\n","import { SDK_VERSION, init as init$1 } from '@sentry/browser';\n\n/**\n * Inits the React SDK\n */\nfunction init(options) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.react',\n packages: [\n {\n name: 'npm:@sentry/react',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n init$1(options);\n}\n\nexport { init };\n//# sourceMappingURL=sdk.js.map\n","// This file configures the initialization of Sentry on the browser.\n// The config you add here will be used whenever a page is visited.\n// https://docs.sentry.io/platforms/javascript/guides/nextjs/\n\nimport * as Sentry from \"@sentry/nextjs\";\n\nconst SENTRY_DSN = process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN;\n\nif (process.env.NODE_ENV === \"production\") {\n Sentry.init({\n dsn:\n SENTRY_DSN ||\n \"https://4f493a7f2bab428fbba46f20606cb8d6@o1337871.ingest.sentry.io/6608120\",\n tracesSampleRate: 1.0,\n });\n}\n","import { ni18nConfig, DEFAULT_LANGUAGE } from '../ni18n.config';\n\nexport const LANG_LOCAL_STORAGE_KEY = 'lang';\n\nexport const getDefaultLanguage = () => {\n if (typeof window === 'undefined') return DEFAULT_LANGUAGE;\n\n const localStorageLanguage = localStorage.getItem(LANG_LOCAL_STORAGE_KEY);\n\n if (localStorageLanguage) return localStorageLanguage;\n\n const language = navigator.languages\n ? navigator.languages[0].split('-')[0]\n : navigator.language || DEFAULT_LANGUAGE;\n if (ni18nConfig.supportedLngs.includes(language)) {\n return language;\n }\n\n return DEFAULT_LANGUAGE;\n};\n","const TOKEN_KEY = 'rastel:token';\n\nexport const getToken = () => localStorage.getItem(TOKEN_KEY) || null;\nexport const saveToken = (token: string) =>\n localStorage.setItem(TOKEN_KEY, token);\nexport const clearToken = () => localStorage.removeItem(TOKEN_KEY);\n","(function(){\"use strict\";var e={113:function(e){function assertPath(e){if(typeof e!==\"string\"){throw new TypeError(\"Path must be a string. Received \"+JSON.stringify(e))}}function normalizeStringPosix(e,r){var t=\"\";var i=0;var n=-1;var a=0;var f;for(var l=0;l<=e.length;++l){if(l2){var s=t.lastIndexOf(\"/\");if(s!==t.length-1){if(s===-1){t=\"\";i=0}else{t=t.slice(0,s);i=t.length-1-t.lastIndexOf(\"/\")}n=l;a=0;continue}}else if(t.length===2||t.length===1){t=\"\";i=0;n=l;a=0;continue}}if(r){if(t.length>0)t+=\"/..\";else t=\"..\";i=2}}else{if(t.length>0)t+=\"/\"+e.slice(n+1,l);else t=e.slice(n+1,l);i=l-n-1}n=l;a=0}else if(f===46&&a!==-1){++a}else{a=-1}}return t}function _format(e,r){var t=r.dir||r.root;var i=r.base||(r.name||\"\")+(r.ext||\"\");if(!t){return i}if(t===r.root){return t+i}return t+e+i}var r={resolve:function resolve(){var e=\"\";var r=false;var t;for(var i=arguments.length-1;i>=-1&&!r;i--){var n;if(i>=0)n=arguments[i];else{if(t===undefined)t=\"\";n=t}assertPath(n);if(n.length===0){continue}e=n+\"/\"+e;r=n.charCodeAt(0)===47}e=normalizeStringPosix(e,!r);if(r){if(e.length>0)return\"/\"+e;else return\"/\"}else if(e.length>0){return e}else{return\".\"}},normalize:function normalize(e){assertPath(e);if(e.length===0)return\".\";var r=e.charCodeAt(0)===47;var t=e.charCodeAt(e.length-1)===47;e=normalizeStringPosix(e,!r);if(e.length===0&&!r)e=\".\";if(e.length>0&&t)e+=\"/\";if(r)return\"/\"+e;return e},isAbsolute:function isAbsolute(e){assertPath(e);return e.length>0&&e.charCodeAt(0)===47},join:function join(){if(arguments.length===0)return\".\";var e;for(var t=0;t0){if(e===undefined)e=i;else e+=\"/\"+i}}if(e===undefined)return\".\";return r.normalize(e)},relative:function relative(e,t){assertPath(e);assertPath(t);if(e===t)return\"\";e=r.resolve(e);t=r.resolve(t);if(e===t)return\"\";var i=1;for(;io){if(t.charCodeAt(f+h)===47){return t.slice(f+h+1)}else if(h===0){return t.slice(f+h)}}else if(a>o){if(e.charCodeAt(i+h)===47){u=h}else if(h===0){u=0}}break}var c=e.charCodeAt(i+h);var v=t.charCodeAt(f+h);if(c!==v)break;else if(c===47)u=h}var g=\"\";for(h=i+u+1;h<=n;++h){if(h===n||e.charCodeAt(h)===47){if(g.length===0)g+=\"..\";else g+=\"/..\"}}if(g.length>0)return g+t.slice(f+u);else{f+=u;if(t.charCodeAt(f)===47)++f;return t.slice(f)}},_makeLong:function _makeLong(e){return e},dirname:function dirname(e){assertPath(e);if(e.length===0)return\".\";var r=e.charCodeAt(0);var t=r===47;var i=-1;var n=true;for(var a=e.length-1;a>=1;--a){r=e.charCodeAt(a);if(r===47){if(!n){i=a;break}}else{n=false}}if(i===-1)return t?\"/\":\".\";if(t&&i===1)return\"//\";return e.slice(0,i)},basename:function basename(e,r){if(r!==undefined&&typeof r!==\"string\")throw new TypeError('\"ext\" argument must be a string');assertPath(e);var t=0;var i=-1;var n=true;var a;if(r!==undefined&&r.length>0&&r.length<=e.length){if(r.length===e.length&&r===e)return\"\";var f=r.length-1;var l=-1;for(a=e.length-1;a>=0;--a){var s=e.charCodeAt(a);if(s===47){if(!n){t=a+1;break}}else{if(l===-1){n=false;l=a+1}if(f>=0){if(s===r.charCodeAt(f)){if(--f===-1){i=a}}else{f=-1;i=l}}}}if(t===i)i=l;else if(i===-1)i=e.length;return e.slice(t,i)}else{for(a=e.length-1;a>=0;--a){if(e.charCodeAt(a)===47){if(!n){t=a+1;break}}else if(i===-1){n=false;i=a+1}}if(i===-1)return\"\";return e.slice(t,i)}},extname:function extname(e){assertPath(e);var r=-1;var t=0;var i=-1;var n=true;var a=0;for(var f=e.length-1;f>=0;--f){var l=e.charCodeAt(f);if(l===47){if(!n){t=f+1;break}continue}if(i===-1){n=false;i=f+1}if(l===46){if(r===-1)r=f;else if(a!==1)a=1}else if(r!==-1){a=-1}}if(r===-1||i===-1||a===0||a===1&&r===i-1&&r===t+1){return\"\"}return e.slice(r,i)},format:function format(e){if(e===null||typeof e!==\"object\"){throw new TypeError('The \"pathObject\" argument must be of type Object. Received type '+typeof e)}return _format(\"/\",e)},parse:function parse(e){assertPath(e);var r={root:\"\",dir:\"\",base:\"\",ext:\"\",name:\"\"};if(e.length===0)return r;var t=e.charCodeAt(0);var i=t===47;var n;if(i){r.root=\"/\";n=1}else{n=0}var a=-1;var f=0;var l=-1;var s=true;var o=e.length-1;var u=0;for(;o>=n;--o){t=e.charCodeAt(o);if(t===47){if(!s){f=o+1;break}continue}if(l===-1){s=false;l=o+1}if(t===46){if(a===-1)a=o;else if(u!==1)u=1}else if(a!==-1){u=-1}}if(a===-1||l===-1||u===0||u===1&&a===l-1&&a===f+1){if(l!==-1){if(f===0&&i)r.base=r.name=e.slice(1,l);else r.base=r.name=e.slice(f,l)}}else{if(f===0&&i){r.name=e.slice(1,a);r.base=e.slice(1,l)}else{r.name=e.slice(f,a);r.base=e.slice(f,l)}r.ext=e.slice(a,l)}if(f>0)r.dir=e.slice(0,f-1);else if(i)r.dir=\"/\";return r},sep:\"/\",delimiter:\":\",win32:null,posix:null};r.posix=r;e.exports=r}};var r={};function __nccwpck_require__(t){var i=r[t];if(i!==undefined){return i.exports}var n=r[t]={exports:{}};var a=true;try{e[t](n,n.exports,__nccwpck_require__);a=false}finally{if(a)delete r[t]}return n.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var t=__nccwpck_require__(113);module.exports=t})();","(function(){var e={308:function(e){var t=e.exports={};var r;var n;function defaultSetTimout(){throw new Error(\"setTimeout has not been defined\")}function defaultClearTimeout(){throw new Error(\"clearTimeout has not been defined\")}(function(){try{if(typeof setTimeout===\"function\"){r=setTimeout}else{r=defaultSetTimout}}catch(e){r=defaultSetTimout}try{if(typeof clearTimeout===\"function\"){n=clearTimeout}else{n=defaultClearTimeout}}catch(e){n=defaultClearTimeout}})();function runTimeout(e){if(r===setTimeout){return setTimeout(e,0)}if((r===defaultSetTimout||!r)&&setTimeout){r=setTimeout;return setTimeout(e,0)}try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}function runClearTimeout(e){if(n===clearTimeout){return clearTimeout(e)}if((n===defaultClearTimeout||!n)&&clearTimeout){n=clearTimeout;return clearTimeout(e)}try{return n(e)}catch(t){try{return n.call(null,e)}catch(t){return n.call(this,e)}}}var i=[];var o=false;var u;var a=-1;function cleanUpNextTick(){if(!o||!u){return}o=false;if(u.length){i=u.concat(i)}else{a=-1}if(i.length){drainQueue()}}function drainQueue(){if(o){return}var e=runTimeout(cleanUpNextTick);o=true;var t=i.length;while(t){u=i;i=[];while(++a1){for(var r=1;rp(e,\"__esModule\",{value:!0}),l=(e,r)=>p(e,\"name\",{value:r,configurable:!0});var $=(e,r)=>{for(var t in r)p(e,t,{get:r[t],enumerable:!0})},P=(e,r,t,a)=>{if(r&&typeof r==\"object\"||typeof r==\"function\")for(let s of C(r))!v.call(e,s)&&(t||s!==\"default\")&&p(e,s,{get:()=>r[s],enumerable:!(a=k(r,s))||a.enumerable});return e},m=(e,r)=>P(c(p(e!=null?T(N(e)):{},\"default\",!r&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),S=(e=>(r,t)=>e&&e.get(r)||(t=P(c({}),r,1),e&&e.set(r,t),t))(typeof WeakMap!=\"undefined\"?new WeakMap:0);var E={};$(E,{default:()=>d});var i=m(require(\"next/router\")),n=m(require(\"nprogress\")),o=m(require(\"prop-types\")),f=m(require(\"react\"));function d({color:e=\"#29D\",startPosition:r=.3,stopDelayMs:t=200,height:a=3,showOnShallow:s=!0,options:h,nonce:y}){let u=null;f.useEffect(()=>(h&&n.configure(h),i.default.events.on(\"routeChangeStart\",x),i.default.events.on(\"routeChangeComplete\",g),i.default.events.on(\"routeChangeError\",g),()=>{i.default.events.off(\"routeChangeStart\",x),i.default.events.off(\"routeChangeComplete\",g),i.default.events.off(\"routeChangeError\",g)}),[]);let x=l((w,{shallow:b})=>{(!b||s)&&(n.set(r),n.start())},\"routeChangeStart\"),g=l((w,{shallow:b})=>{(!b||s)&&(u&&clearTimeout(u),u=setTimeout(()=>{n.done(!0)},t))},\"routeChangeEnd\");return f.createElement(\"style\",{nonce:y},`\n #nprogress {\n pointer-events: none;\n }\n #nprogress .bar {\n background: ${e};\n position: fixed;\n z-index: 9999;\n top: 0;\n left: 0;\n width: 100%;\n height: ${a}px;\n }\n #nprogress .peg {\n display: block;\n position: absolute;\n right: 0px;\n width: 100px;\n height: 100%;\n box-shadow: 0 0 10px ${e}, 0 0 5px ${e};\n opacity: 1;\n -webkit-transform: rotate(3deg) translate(0px, -4px);\n -ms-transform: rotate(3deg) translate(0px, -4px);\n transform: rotate(3deg) translate(0px, -4px);\n }\n #nprogress .spinner {\n display: block;\n position: fixed;\n z-index: 1031;\n top: 15px;\n right: 15px;\n }\n #nprogress .spinner-icon {\n width: 18px;\n height: 18px;\n box-sizing: border-box;\n border: solid 2px transparent;\n border-top-color: ${e};\n border-left-color: ${e};\n border-radius: 50%;\n -webkit-animation: nprogresss-spinner 400ms linear infinite;\n animation: nprogress-spinner 400ms linear infinite;\n }\n .nprogress-custom-parent {\n overflow: hidden;\n position: relative;\n }\n .nprogress-custom-parent #nprogress .spinner,\n .nprogress-custom-parent #nprogress .bar {\n position: absolute;\n }\n @-webkit-keyframes nprogress-spinner {\n 0% {\n -webkit-transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n }\n }\n @keyframes nprogress-spinner {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n `)}l(d,\"NextNProgress\");d.propTypes={color:o.string,startPosition:o.number,stopDelayMs:o.number,height:o.number,showOnShallow:o.bool,options:o.object,nonce:o.string};module.exports=S(E);0&&(module.exports={});\n//# sourceMappingURL=index.js.map","/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress\n * @license MIT */\n\n;(function(root, factory) {\n\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.NProgress = factory();\n }\n\n})(this, function() {\n var NProgress = {};\n\n NProgress.version = '0.2.0';\n\n var Settings = NProgress.settings = {\n minimum: 0.08,\n easing: 'ease',\n positionUsing: '',\n speed: 200,\n trickle: true,\n trickleRate: 0.02,\n trickleSpeed: 800,\n showSpinner: true,\n barSelector: '[role=\"bar\"]',\n spinnerSelector: '[role=\"spinner\"]',\n parent: 'body',\n template: '
'\n };\n\n /**\n * Updates configuration.\n *\n * NProgress.configure({\n * minimum: 0.1\n * });\n */\n NProgress.configure = function(options) {\n var key, value;\n for (key in options) {\n value = options[key];\n if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value;\n }\n\n return this;\n };\n\n /**\n * Last number.\n */\n\n NProgress.status = null;\n\n /**\n * Sets the progress bar status, where `n` is a number from `0.0` to `1.0`.\n *\n * NProgress.set(0.4);\n * NProgress.set(1.0);\n */\n\n NProgress.set = function(n) {\n var started = NProgress.isStarted();\n\n n = clamp(n, Settings.minimum, 1);\n NProgress.status = (n === 1 ? null : n);\n\n var progress = NProgress.render(!started),\n bar = progress.querySelector(Settings.barSelector),\n speed = Settings.speed,\n ease = Settings.easing;\n\n progress.offsetWidth; /* Repaint */\n\n queue(function(next) {\n // Set positionUsing if it hasn't already been set\n if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS();\n\n // Add transition\n css(bar, barPositionCSS(n, speed, ease));\n\n if (n === 1) {\n // Fade out\n css(progress, { \n transition: 'none', \n opacity: 1 \n });\n progress.offsetWidth; /* Repaint */\n\n setTimeout(function() {\n css(progress, { \n transition: 'all ' + speed + 'ms linear', \n opacity: 0 \n });\n setTimeout(function() {\n NProgress.remove();\n next();\n }, speed);\n }, speed);\n } else {\n setTimeout(next, speed);\n }\n });\n\n return this;\n };\n\n NProgress.isStarted = function() {\n return typeof NProgress.status === 'number';\n };\n\n /**\n * Shows the progress bar.\n * This is the same as setting the status to 0%, except that it doesn't go backwards.\n *\n * NProgress.start();\n *\n */\n NProgress.start = function() {\n if (!NProgress.status) NProgress.set(0);\n\n var work = function() {\n setTimeout(function() {\n if (!NProgress.status) return;\n NProgress.trickle();\n work();\n }, Settings.trickleSpeed);\n };\n\n if (Settings.trickle) work();\n\n return this;\n };\n\n /**\n * Hides the progress bar.\n * This is the *sort of* the same as setting the status to 100%, with the\n * difference being `done()` makes some placebo effect of some realistic motion.\n *\n * NProgress.done();\n *\n * If `true` is passed, it will show the progress bar even if its hidden.\n *\n * NProgress.done(true);\n */\n\n NProgress.done = function(force) {\n if (!force && !NProgress.status) return this;\n\n return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);\n };\n\n /**\n * Increments by a random amount.\n */\n\n NProgress.inc = function(amount) {\n var n = NProgress.status;\n\n if (!n) {\n return NProgress.start();\n } else {\n if (typeof amount !== 'number') {\n amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);\n }\n\n n = clamp(n + amount, 0, 0.994);\n return NProgress.set(n);\n }\n };\n\n NProgress.trickle = function() {\n return NProgress.inc(Math.random() * Settings.trickleRate);\n };\n\n /**\n * Waits for all supplied jQuery promises and\n * increases the progress as the promises resolve.\n *\n * @param $promise jQUery Promise\n */\n (function() {\n var initial = 0, current = 0;\n\n NProgress.promise = function($promise) {\n if (!$promise || $promise.state() === \"resolved\") {\n return this;\n }\n\n if (current === 0) {\n NProgress.start();\n }\n\n initial++;\n current++;\n\n $promise.always(function() {\n current--;\n if (current === 0) {\n initial = 0;\n NProgress.done();\n } else {\n NProgress.set((initial - current) / initial);\n }\n });\n\n return this;\n };\n\n })();\n\n /**\n * (Internal) renders the progress bar markup based on the `template`\n * setting.\n */\n\n NProgress.render = function(fromStart) {\n if (NProgress.isRendered()) return document.getElementById('nprogress');\n\n addClass(document.documentElement, 'nprogress-busy');\n \n var progress = document.createElement('div');\n progress.id = 'nprogress';\n progress.innerHTML = Settings.template;\n\n var bar = progress.querySelector(Settings.barSelector),\n perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0),\n parent = document.querySelector(Settings.parent),\n spinner;\n \n css(bar, {\n transition: 'all 0 linear',\n transform: 'translate3d(' + perc + '%,0,0)'\n });\n\n if (!Settings.showSpinner) {\n spinner = progress.querySelector(Settings.spinnerSelector);\n spinner && removeElement(spinner);\n }\n\n if (parent != document.body) {\n addClass(parent, 'nprogress-custom-parent');\n }\n\n parent.appendChild(progress);\n return progress;\n };\n\n /**\n * Removes the element. Opposite of render().\n */\n\n NProgress.remove = function() {\n removeClass(document.documentElement, 'nprogress-busy');\n removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent');\n var progress = document.getElementById('nprogress');\n progress && removeElement(progress);\n };\n\n /**\n * Checks if the progress bar is rendered.\n */\n\n NProgress.isRendered = function() {\n return !!document.getElementById('nprogress');\n };\n\n /**\n * Determine which positioning CSS rule to use.\n */\n\n NProgress.getPositioningCSS = function() {\n // Sniff on document.body.style\n var bodyStyle = document.body.style;\n\n // Sniff prefixes\n var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' :\n ('MozTransform' in bodyStyle) ? 'Moz' :\n ('msTransform' in bodyStyle) ? 'ms' :\n ('OTransform' in bodyStyle) ? 'O' : '';\n\n if (vendorPrefix + 'Perspective' in bodyStyle) {\n // Modern browsers with 3D support, e.g. Webkit, IE10\n return 'translate3d';\n } else if (vendorPrefix + 'Transform' in bodyStyle) {\n // Browsers without 3D support, e.g. IE9\n return 'translate';\n } else {\n // Browsers without translate() support, e.g. IE7-8\n return 'margin';\n }\n };\n\n /**\n * Helpers\n */\n\n function clamp(n, min, max) {\n if (n < min) return min;\n if (n > max) return max;\n return n;\n }\n\n /**\n * (Internal) converts a percentage (`0..1`) to a bar translateX\n * percentage (`-100%..0%`).\n */\n\n function toBarPerc(n) {\n return (-1 + n) * 100;\n }\n\n\n /**\n * (Internal) returns the correct CSS for changing the bar's\n * position given an n percentage, and speed and ease from Settings\n */\n\n function barPositionCSS(n, speed, ease) {\n var barCSS;\n\n if (Settings.positionUsing === 'translate3d') {\n barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' };\n } else if (Settings.positionUsing === 'translate') {\n barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' };\n } else {\n barCSS = { 'margin-left': toBarPerc(n)+'%' };\n }\n\n barCSS.transition = 'all '+speed+'ms '+ease;\n\n return barCSS;\n }\n\n /**\n * (Internal) Queues a function to be executed.\n */\n\n var queue = (function() {\n var pending = [];\n \n function next() {\n var fn = pending.shift();\n if (fn) {\n fn(next);\n }\n }\n\n return function(fn) {\n pending.push(fn);\n if (pending.length == 1) next();\n };\n })();\n\n /**\n * (Internal) Applies css properties to an element, similar to the jQuery \n * css method.\n *\n * While this helper does assist with vendor prefixed property names, it \n * does not perform any manipulation of values prior to setting styles.\n */\n\n var css = (function() {\n var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ],\n cssProps = {};\n\n function camelCase(string) {\n return string.replace(/^-ms-/, 'ms-').replace(/-([\\da-z])/gi, function(match, letter) {\n return letter.toUpperCase();\n });\n }\n\n function getVendorProp(name) {\n var style = document.body.style;\n if (name in style) return name;\n\n var i = cssPrefixes.length,\n capName = name.charAt(0).toUpperCase() + name.slice(1),\n vendorName;\n while (i--) {\n vendorName = cssPrefixes[i] + capName;\n if (vendorName in style) return vendorName;\n }\n\n return name;\n }\n\n function getStyleProp(name) {\n name = camelCase(name);\n return cssProps[name] || (cssProps[name] = getVendorProp(name));\n }\n\n function applyCss(element, prop, value) {\n prop = getStyleProp(prop);\n element.style[prop] = value;\n }\n\n return function(element, properties) {\n var args = arguments,\n prop, \n value;\n\n if (args.length == 2) {\n for (prop in properties) {\n value = properties[prop];\n if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value);\n }\n } else {\n applyCss(element, args[1], args[2]);\n }\n }\n })();\n\n /**\n * (Internal) Determines if an element or space separated list of class names contains a class name.\n */\n\n function hasClass(element, name) {\n var list = typeof element == 'string' ? element : classList(element);\n return list.indexOf(' ' + name + ' ') >= 0;\n }\n\n /**\n * (Internal) Adds a class to an element.\n */\n\n function addClass(element, name) {\n var oldList = classList(element),\n newList = oldList + name;\n\n if (hasClass(oldList, name)) return; \n\n // Trim the opening space.\n element.className = newList.substring(1);\n }\n\n /**\n * (Internal) Removes a class from an element.\n */\n\n function removeClass(element, name) {\n var oldList = classList(element),\n newList;\n\n if (!hasClass(element, name)) return;\n\n // Replace the class name.\n newList = oldList.replace(' ' + name + ' ', ' ');\n\n // Trim the opening and closing spaces.\n element.className = newList.substring(1, newList.length - 1);\n }\n\n /**\n * (Internal) Gets a space separated list of the class names on the element. \n * The list is wrapped with a single space on each end to facilitate finding \n * matches within the list.\n */\n\n function classList(element) {\n return (' ' + (element.className || '') + ' ').replace(/\\s+/gi, ' ');\n }\n\n /**\n * (Internal) Removes an element from the DOM.\n */\n\n function removeElement(element) {\n element && element.parentNode && element.parentNode.removeChild(element);\n }\n\n return NProgress;\n});\n\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __objRest = (source, exclude) => {\n var target = {};\n for (var prop in source)\n if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n target[prop] = source[prop];\n if (source != null && __getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(source)) {\n if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n target[prop] = source[prop];\n }\n return target;\n};\n\n// src/index.tsx\nimport React, { useRef, useEffect, useState } from \"react\";\n\n// src/third-party/qrcodegen/index.ts\n/**\n * @license QR Code generator library (TypeScript)\n * Copyright (c) Project Nayuki.\n * SPDX-License-Identifier: MIT\n */\nvar qrcodegen;\n((qrcodegen2) => {\n const _QrCode = class {\n constructor(version, errorCorrectionLevel, dataCodewords, msk) {\n this.version = version;\n this.errorCorrectionLevel = errorCorrectionLevel;\n this.modules = [];\n this.isFunction = [];\n if (version < _QrCode.MIN_VERSION || version > _QrCode.MAX_VERSION)\n throw new RangeError(\"Version value out of range\");\n if (msk < -1 || msk > 7)\n throw new RangeError(\"Mask value out of range\");\n this.size = version * 4 + 17;\n let row = [];\n for (let i = 0; i < this.size; i++)\n row.push(false);\n for (let i = 0; i < this.size; i++) {\n this.modules.push(row.slice());\n this.isFunction.push(row.slice());\n }\n this.drawFunctionPatterns();\n const allCodewords = this.addEccAndInterleave(dataCodewords);\n this.drawCodewords(allCodewords);\n if (msk == -1) {\n let minPenalty = 1e9;\n for (let i = 0; i < 8; i++) {\n this.applyMask(i);\n this.drawFormatBits(i);\n const penalty = this.getPenaltyScore();\n if (penalty < minPenalty) {\n msk = i;\n minPenalty = penalty;\n }\n this.applyMask(i);\n }\n }\n assert(0 <= msk && msk <= 7);\n this.mask = msk;\n this.applyMask(msk);\n this.drawFormatBits(msk);\n this.isFunction = [];\n }\n static encodeText(text, ecl) {\n const segs = qrcodegen2.QrSegment.makeSegments(text);\n return _QrCode.encodeSegments(segs, ecl);\n }\n static encodeBinary(data, ecl) {\n const seg = qrcodegen2.QrSegment.makeBytes(data);\n return _QrCode.encodeSegments([seg], ecl);\n }\n static encodeSegments(segs, ecl, minVersion = 1, maxVersion = 40, mask = -1, boostEcl = true) {\n if (!(_QrCode.MIN_VERSION <= minVersion && minVersion <= maxVersion && maxVersion <= _QrCode.MAX_VERSION) || mask < -1 || mask > 7)\n throw new RangeError(\"Invalid value\");\n let version;\n let dataUsedBits;\n for (version = minVersion; ; version++) {\n const dataCapacityBits2 = _QrCode.getNumDataCodewords(version, ecl) * 8;\n const usedBits = QrSegment.getTotalBits(segs, version);\n if (usedBits <= dataCapacityBits2) {\n dataUsedBits = usedBits;\n break;\n }\n if (version >= maxVersion)\n throw new RangeError(\"Data too long\");\n }\n for (const newEcl of [_QrCode.Ecc.MEDIUM, _QrCode.Ecc.QUARTILE, _QrCode.Ecc.HIGH]) {\n if (boostEcl && dataUsedBits <= _QrCode.getNumDataCodewords(version, newEcl) * 8)\n ecl = newEcl;\n }\n let bb = [];\n for (const seg of segs) {\n appendBits(seg.mode.modeBits, 4, bb);\n appendBits(seg.numChars, seg.mode.numCharCountBits(version), bb);\n for (const b of seg.getData())\n bb.push(b);\n }\n assert(bb.length == dataUsedBits);\n const dataCapacityBits = _QrCode.getNumDataCodewords(version, ecl) * 8;\n assert(bb.length <= dataCapacityBits);\n appendBits(0, Math.min(4, dataCapacityBits - bb.length), bb);\n appendBits(0, (8 - bb.length % 8) % 8, bb);\n assert(bb.length % 8 == 0);\n for (let padByte = 236; bb.length < dataCapacityBits; padByte ^= 236 ^ 17)\n appendBits(padByte, 8, bb);\n let dataCodewords = [];\n while (dataCodewords.length * 8 < bb.length)\n dataCodewords.push(0);\n bb.forEach((b, i) => dataCodewords[i >>> 3] |= b << 7 - (i & 7));\n return new _QrCode(version, ecl, dataCodewords, mask);\n }\n getModule(x, y) {\n return 0 <= x && x < this.size && 0 <= y && y < this.size && this.modules[y][x];\n }\n getModules() {\n return this.modules;\n }\n drawFunctionPatterns() {\n for (let i = 0; i < this.size; i++) {\n this.setFunctionModule(6, i, i % 2 == 0);\n this.setFunctionModule(i, 6, i % 2 == 0);\n }\n this.drawFinderPattern(3, 3);\n this.drawFinderPattern(this.size - 4, 3);\n this.drawFinderPattern(3, this.size - 4);\n const alignPatPos = this.getAlignmentPatternPositions();\n const numAlign = alignPatPos.length;\n for (let i = 0; i < numAlign; i++) {\n for (let j = 0; j < numAlign; j++) {\n if (!(i == 0 && j == 0 || i == 0 && j == numAlign - 1 || i == numAlign - 1 && j == 0))\n this.drawAlignmentPattern(alignPatPos[i], alignPatPos[j]);\n }\n }\n this.drawFormatBits(0);\n this.drawVersion();\n }\n drawFormatBits(mask) {\n const data = this.errorCorrectionLevel.formatBits << 3 | mask;\n let rem = data;\n for (let i = 0; i < 10; i++)\n rem = rem << 1 ^ (rem >>> 9) * 1335;\n const bits = (data << 10 | rem) ^ 21522;\n assert(bits >>> 15 == 0);\n for (let i = 0; i <= 5; i++)\n this.setFunctionModule(8, i, getBit(bits, i));\n this.setFunctionModule(8, 7, getBit(bits, 6));\n this.setFunctionModule(8, 8, getBit(bits, 7));\n this.setFunctionModule(7, 8, getBit(bits, 8));\n for (let i = 9; i < 15; i++)\n this.setFunctionModule(14 - i, 8, getBit(bits, i));\n for (let i = 0; i < 8; i++)\n this.setFunctionModule(this.size - 1 - i, 8, getBit(bits, i));\n for (let i = 8; i < 15; i++)\n this.setFunctionModule(8, this.size - 15 + i, getBit(bits, i));\n this.setFunctionModule(8, this.size - 8, true);\n }\n drawVersion() {\n if (this.version < 7)\n return;\n let rem = this.version;\n for (let i = 0; i < 12; i++)\n rem = rem << 1 ^ (rem >>> 11) * 7973;\n const bits = this.version << 12 | rem;\n assert(bits >>> 18 == 0);\n for (let i = 0; i < 18; i++) {\n const color = getBit(bits, i);\n const a = this.size - 11 + i % 3;\n const b = Math.floor(i / 3);\n this.setFunctionModule(a, b, color);\n this.setFunctionModule(b, a, color);\n }\n }\n drawFinderPattern(x, y) {\n for (let dy = -4; dy <= 4; dy++) {\n for (let dx = -4; dx <= 4; dx++) {\n const dist = Math.max(Math.abs(dx), Math.abs(dy));\n const xx = x + dx;\n const yy = y + dy;\n if (0 <= xx && xx < this.size && 0 <= yy && yy < this.size)\n this.setFunctionModule(xx, yy, dist != 2 && dist != 4);\n }\n }\n }\n drawAlignmentPattern(x, y) {\n for (let dy = -2; dy <= 2; dy++) {\n for (let dx = -2; dx <= 2; dx++)\n this.setFunctionModule(x + dx, y + dy, Math.max(Math.abs(dx), Math.abs(dy)) != 1);\n }\n }\n setFunctionModule(x, y, isDark) {\n this.modules[y][x] = isDark;\n this.isFunction[y][x] = true;\n }\n addEccAndInterleave(data) {\n const ver = this.version;\n const ecl = this.errorCorrectionLevel;\n if (data.length != _QrCode.getNumDataCodewords(ver, ecl))\n throw new RangeError(\"Invalid argument\");\n const numBlocks = _QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver];\n const blockEccLen = _QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver];\n const rawCodewords = Math.floor(_QrCode.getNumRawDataModules(ver) / 8);\n const numShortBlocks = numBlocks - rawCodewords % numBlocks;\n const shortBlockLen = Math.floor(rawCodewords / numBlocks);\n let blocks = [];\n const rsDiv = _QrCode.reedSolomonComputeDivisor(blockEccLen);\n for (let i = 0, k = 0; i < numBlocks; i++) {\n let dat = data.slice(k, k + shortBlockLen - blockEccLen + (i < numShortBlocks ? 0 : 1));\n k += dat.length;\n const ecc = _QrCode.reedSolomonComputeRemainder(dat, rsDiv);\n if (i < numShortBlocks)\n dat.push(0);\n blocks.push(dat.concat(ecc));\n }\n let result = [];\n for (let i = 0; i < blocks[0].length; i++) {\n blocks.forEach((block, j) => {\n if (i != shortBlockLen - blockEccLen || j >= numShortBlocks)\n result.push(block[i]);\n });\n }\n assert(result.length == rawCodewords);\n return result;\n }\n drawCodewords(data) {\n if (data.length != Math.floor(_QrCode.getNumRawDataModules(this.version) / 8))\n throw new RangeError(\"Invalid argument\");\n let i = 0;\n for (let right = this.size - 1; right >= 1; right -= 2) {\n if (right == 6)\n right = 5;\n for (let vert = 0; vert < this.size; vert++) {\n for (let j = 0; j < 2; j++) {\n const x = right - j;\n const upward = (right + 1 & 2) == 0;\n const y = upward ? this.size - 1 - vert : vert;\n if (!this.isFunction[y][x] && i < data.length * 8) {\n this.modules[y][x] = getBit(data[i >>> 3], 7 - (i & 7));\n i++;\n }\n }\n }\n }\n assert(i == data.length * 8);\n }\n applyMask(mask) {\n if (mask < 0 || mask > 7)\n throw new RangeError(\"Mask value out of range\");\n for (let y = 0; y < this.size; y++) {\n for (let x = 0; x < this.size; x++) {\n let invert;\n switch (mask) {\n case 0:\n invert = (x + y) % 2 == 0;\n break;\n case 1:\n invert = y % 2 == 0;\n break;\n case 2:\n invert = x % 3 == 0;\n break;\n case 3:\n invert = (x + y) % 3 == 0;\n break;\n case 4:\n invert = (Math.floor(x / 3) + Math.floor(y / 2)) % 2 == 0;\n break;\n case 5:\n invert = x * y % 2 + x * y % 3 == 0;\n break;\n case 6:\n invert = (x * y % 2 + x * y % 3) % 2 == 0;\n break;\n case 7:\n invert = ((x + y) % 2 + x * y % 3) % 2 == 0;\n break;\n default:\n throw new Error(\"Unreachable\");\n }\n if (!this.isFunction[y][x] && invert)\n this.modules[y][x] = !this.modules[y][x];\n }\n }\n }\n getPenaltyScore() {\n let result = 0;\n for (let y = 0; y < this.size; y++) {\n let runColor = false;\n let runX = 0;\n let runHistory = [0, 0, 0, 0, 0, 0, 0];\n for (let x = 0; x < this.size; x++) {\n if (this.modules[y][x] == runColor) {\n runX++;\n if (runX == 5)\n result += _QrCode.PENALTY_N1;\n else if (runX > 5)\n result++;\n } else {\n this.finderPenaltyAddHistory(runX, runHistory);\n if (!runColor)\n result += this.finderPenaltyCountPatterns(runHistory) * _QrCode.PENALTY_N3;\n runColor = this.modules[y][x];\n runX = 1;\n }\n }\n result += this.finderPenaltyTerminateAndCount(runColor, runX, runHistory) * _QrCode.PENALTY_N3;\n }\n for (let x = 0; x < this.size; x++) {\n let runColor = false;\n let runY = 0;\n let runHistory = [0, 0, 0, 0, 0, 0, 0];\n for (let y = 0; y < this.size; y++) {\n if (this.modules[y][x] == runColor) {\n runY++;\n if (runY == 5)\n result += _QrCode.PENALTY_N1;\n else if (runY > 5)\n result++;\n } else {\n this.finderPenaltyAddHistory(runY, runHistory);\n if (!runColor)\n result += this.finderPenaltyCountPatterns(runHistory) * _QrCode.PENALTY_N3;\n runColor = this.modules[y][x];\n runY = 1;\n }\n }\n result += this.finderPenaltyTerminateAndCount(runColor, runY, runHistory) * _QrCode.PENALTY_N3;\n }\n for (let y = 0; y < this.size - 1; y++) {\n for (let x = 0; x < this.size - 1; x++) {\n const color = this.modules[y][x];\n if (color == this.modules[y][x + 1] && color == this.modules[y + 1][x] && color == this.modules[y + 1][x + 1])\n result += _QrCode.PENALTY_N2;\n }\n }\n let dark = 0;\n for (const row of this.modules)\n dark = row.reduce((sum, color) => sum + (color ? 1 : 0), dark);\n const total = this.size * this.size;\n const k = Math.ceil(Math.abs(dark * 20 - total * 10) / total) - 1;\n assert(0 <= k && k <= 9);\n result += k * _QrCode.PENALTY_N4;\n assert(0 <= result && result <= 2568888);\n return result;\n }\n getAlignmentPatternPositions() {\n if (this.version == 1)\n return [];\n else {\n const numAlign = Math.floor(this.version / 7) + 2;\n const step = this.version == 32 ? 26 : Math.ceil((this.version * 4 + 4) / (numAlign * 2 - 2)) * 2;\n let result = [6];\n for (let pos = this.size - 7; result.length < numAlign; pos -= step)\n result.splice(1, 0, pos);\n return result;\n }\n }\n static getNumRawDataModules(ver) {\n if (ver < _QrCode.MIN_VERSION || ver > _QrCode.MAX_VERSION)\n throw new RangeError(\"Version number out of range\");\n let result = (16 * ver + 128) * ver + 64;\n if (ver >= 2) {\n const numAlign = Math.floor(ver / 7) + 2;\n result -= (25 * numAlign - 10) * numAlign - 55;\n if (ver >= 7)\n result -= 36;\n }\n assert(208 <= result && result <= 29648);\n return result;\n }\n static getNumDataCodewords(ver, ecl) {\n return Math.floor(_QrCode.getNumRawDataModules(ver) / 8) - _QrCode.ECC_CODEWORDS_PER_BLOCK[ecl.ordinal][ver] * _QrCode.NUM_ERROR_CORRECTION_BLOCKS[ecl.ordinal][ver];\n }\n static reedSolomonComputeDivisor(degree) {\n if (degree < 1 || degree > 255)\n throw new RangeError(\"Degree out of range\");\n let result = [];\n for (let i = 0; i < degree - 1; i++)\n result.push(0);\n result.push(1);\n let root = 1;\n for (let i = 0; i < degree; i++) {\n for (let j = 0; j < result.length; j++) {\n result[j] = _QrCode.reedSolomonMultiply(result[j], root);\n if (j + 1 < result.length)\n result[j] ^= result[j + 1];\n }\n root = _QrCode.reedSolomonMultiply(root, 2);\n }\n return result;\n }\n static reedSolomonComputeRemainder(data, divisor) {\n let result = divisor.map((_) => 0);\n for (const b of data) {\n const factor = b ^ result.shift();\n result.push(0);\n divisor.forEach((coef, i) => result[i] ^= _QrCode.reedSolomonMultiply(coef, factor));\n }\n return result;\n }\n static reedSolomonMultiply(x, y) {\n if (x >>> 8 != 0 || y >>> 8 != 0)\n throw new RangeError(\"Byte out of range\");\n let z = 0;\n for (let i = 7; i >= 0; i--) {\n z = z << 1 ^ (z >>> 7) * 285;\n z ^= (y >>> i & 1) * x;\n }\n assert(z >>> 8 == 0);\n return z;\n }\n finderPenaltyCountPatterns(runHistory) {\n const n = runHistory[1];\n assert(n <= this.size * 3);\n const core = n > 0 && runHistory[2] == n && runHistory[3] == n * 3 && runHistory[4] == n && runHistory[5] == n;\n return (core && runHistory[0] >= n * 4 && runHistory[6] >= n ? 1 : 0) + (core && runHistory[6] >= n * 4 && runHistory[0] >= n ? 1 : 0);\n }\n finderPenaltyTerminateAndCount(currentRunColor, currentRunLength, runHistory) {\n if (currentRunColor) {\n this.finderPenaltyAddHistory(currentRunLength, runHistory);\n currentRunLength = 0;\n }\n currentRunLength += this.size;\n this.finderPenaltyAddHistory(currentRunLength, runHistory);\n return this.finderPenaltyCountPatterns(runHistory);\n }\n finderPenaltyAddHistory(currentRunLength, runHistory) {\n if (runHistory[0] == 0)\n currentRunLength += this.size;\n runHistory.pop();\n runHistory.unshift(currentRunLength);\n }\n };\n let QrCode = _QrCode;\n QrCode.MIN_VERSION = 1;\n QrCode.MAX_VERSION = 40;\n QrCode.PENALTY_N1 = 3;\n QrCode.PENALTY_N2 = 3;\n QrCode.PENALTY_N3 = 40;\n QrCode.PENALTY_N4 = 10;\n QrCode.ECC_CODEWORDS_PER_BLOCK = [\n [-1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],\n [-1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],\n [-1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],\n [-1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30]\n ];\n QrCode.NUM_ERROR_CORRECTION_BLOCKS = [\n [-1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 24, 25],\n [-1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49],\n [-1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40, 43, 45, 48, 51, 53, 56, 59, 62, 65, 68],\n [-1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48, 51, 54, 57, 60, 63, 66, 70, 74, 77, 81]\n ];\n qrcodegen2.QrCode = QrCode;\n function appendBits(val, len, bb) {\n if (len < 0 || len > 31 || val >>> len != 0)\n throw new RangeError(\"Value out of range\");\n for (let i = len - 1; i >= 0; i--)\n bb.push(val >>> i & 1);\n }\n function getBit(x, i) {\n return (x >>> i & 1) != 0;\n }\n function assert(cond) {\n if (!cond)\n throw new Error(\"Assertion error\");\n }\n const _QrSegment = class {\n constructor(mode, numChars, bitData) {\n this.mode = mode;\n this.numChars = numChars;\n this.bitData = bitData;\n if (numChars < 0)\n throw new RangeError(\"Invalid argument\");\n this.bitData = bitData.slice();\n }\n static makeBytes(data) {\n let bb = [];\n for (const b of data)\n appendBits(b, 8, bb);\n return new _QrSegment(_QrSegment.Mode.BYTE, data.length, bb);\n }\n static makeNumeric(digits) {\n if (!_QrSegment.isNumeric(digits))\n throw new RangeError(\"String contains non-numeric characters\");\n let bb = [];\n for (let i = 0; i < digits.length; ) {\n const n = Math.min(digits.length - i, 3);\n appendBits(parseInt(digits.substr(i, n), 10), n * 3 + 1, bb);\n i += n;\n }\n return new _QrSegment(_QrSegment.Mode.NUMERIC, digits.length, bb);\n }\n static makeAlphanumeric(text) {\n if (!_QrSegment.isAlphanumeric(text))\n throw new RangeError(\"String contains unencodable characters in alphanumeric mode\");\n let bb = [];\n let i;\n for (i = 0; i + 2 <= text.length; i += 2) {\n let temp = _QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)) * 45;\n temp += _QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i + 1));\n appendBits(temp, 11, bb);\n }\n if (i < text.length)\n appendBits(_QrSegment.ALPHANUMERIC_CHARSET.indexOf(text.charAt(i)), 6, bb);\n return new _QrSegment(_QrSegment.Mode.ALPHANUMERIC, text.length, bb);\n }\n static makeSegments(text) {\n if (text == \"\")\n return [];\n else if (_QrSegment.isNumeric(text))\n return [_QrSegment.makeNumeric(text)];\n else if (_QrSegment.isAlphanumeric(text))\n return [_QrSegment.makeAlphanumeric(text)];\n else\n return [_QrSegment.makeBytes(_QrSegment.toUtf8ByteArray(text))];\n }\n static makeEci(assignVal) {\n let bb = [];\n if (assignVal < 0)\n throw new RangeError(\"ECI assignment value out of range\");\n else if (assignVal < 1 << 7)\n appendBits(assignVal, 8, bb);\n else if (assignVal < 1 << 14) {\n appendBits(2, 2, bb);\n appendBits(assignVal, 14, bb);\n } else if (assignVal < 1e6) {\n appendBits(6, 3, bb);\n appendBits(assignVal, 21, bb);\n } else\n throw new RangeError(\"ECI assignment value out of range\");\n return new _QrSegment(_QrSegment.Mode.ECI, 0, bb);\n }\n static isNumeric(text) {\n return _QrSegment.NUMERIC_REGEX.test(text);\n }\n static isAlphanumeric(text) {\n return _QrSegment.ALPHANUMERIC_REGEX.test(text);\n }\n getData() {\n return this.bitData.slice();\n }\n static getTotalBits(segs, version) {\n let result = 0;\n for (const seg of segs) {\n const ccbits = seg.mode.numCharCountBits(version);\n if (seg.numChars >= 1 << ccbits)\n return Infinity;\n result += 4 + ccbits + seg.bitData.length;\n }\n return result;\n }\n static toUtf8ByteArray(str) {\n str = encodeURI(str);\n let result = [];\n for (let i = 0; i < str.length; i++) {\n if (str.charAt(i) != \"%\")\n result.push(str.charCodeAt(i));\n else {\n result.push(parseInt(str.substr(i + 1, 2), 16));\n i += 2;\n }\n }\n return result;\n }\n };\n let QrSegment = _QrSegment;\n QrSegment.NUMERIC_REGEX = /^[0-9]*$/;\n QrSegment.ALPHANUMERIC_REGEX = /^[A-Z0-9 $%*+.\\/:-]*$/;\n QrSegment.ALPHANUMERIC_CHARSET = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:\";\n qrcodegen2.QrSegment = QrSegment;\n})(qrcodegen || (qrcodegen = {}));\n((qrcodegen2) => {\n let QrCode;\n ((QrCode2) => {\n const _Ecc = class {\n constructor(ordinal, formatBits) {\n this.ordinal = ordinal;\n this.formatBits = formatBits;\n }\n };\n let Ecc = _Ecc;\n Ecc.LOW = new _Ecc(0, 1);\n Ecc.MEDIUM = new _Ecc(1, 0);\n Ecc.QUARTILE = new _Ecc(2, 3);\n Ecc.HIGH = new _Ecc(3, 2);\n QrCode2.Ecc = Ecc;\n })(QrCode = qrcodegen2.QrCode || (qrcodegen2.QrCode = {}));\n})(qrcodegen || (qrcodegen = {}));\n((qrcodegen2) => {\n let QrSegment;\n ((QrSegment2) => {\n const _Mode = class {\n constructor(modeBits, numBitsCharCount) {\n this.modeBits = modeBits;\n this.numBitsCharCount = numBitsCharCount;\n }\n numCharCountBits(ver) {\n return this.numBitsCharCount[Math.floor((ver + 7) / 17)];\n }\n };\n let Mode = _Mode;\n Mode.NUMERIC = new _Mode(1, [10, 12, 14]);\n Mode.ALPHANUMERIC = new _Mode(2, [9, 11, 13]);\n Mode.BYTE = new _Mode(4, [8, 16, 16]);\n Mode.KANJI = new _Mode(8, [8, 10, 12]);\n Mode.ECI = new _Mode(7, [0, 0, 0]);\n QrSegment2.Mode = Mode;\n })(QrSegment = qrcodegen2.QrSegment || (qrcodegen2.QrSegment = {}));\n})(qrcodegen || (qrcodegen = {}));\nvar qrcodegen_default = qrcodegen;\n\n// src/index.tsx\n/**\n * @license qrcode.react\n * Copyright (c) Paul O'Shannessy\n * SPDX-License-Identifier: ISC\n */\nvar ERROR_LEVEL_MAP = {\n L: qrcodegen_default.QrCode.Ecc.LOW,\n M: qrcodegen_default.QrCode.Ecc.MEDIUM,\n Q: qrcodegen_default.QrCode.Ecc.QUARTILE,\n H: qrcodegen_default.QrCode.Ecc.HIGH\n};\nvar DEFAULT_SIZE = 128;\nvar DEFAULT_LEVEL = \"L\";\nvar DEFAULT_BGCOLOR = \"#FFFFFF\";\nvar DEFAULT_FGCOLOR = \"#000000\";\nvar DEFAULT_INCLUDEMARGIN = false;\nvar MARGIN_SIZE = 4;\nvar DEFAULT_IMG_SCALE = 0.1;\nfunction generatePath(modules, margin = 0) {\n const ops = [];\n modules.forEach(function(row, y) {\n let start = null;\n row.forEach(function(cell, x) {\n if (!cell && start !== null) {\n ops.push(`M${start + margin} ${y + margin}h${x - start}v1H${start + margin}z`);\n start = null;\n return;\n }\n if (x === row.length - 1) {\n if (!cell) {\n return;\n }\n if (start === null) {\n ops.push(`M${x + margin},${y + margin} h1v1H${x + margin}z`);\n } else {\n ops.push(`M${start + margin},${y + margin} h${x + 1 - start}v1H${start + margin}z`);\n }\n return;\n }\n if (cell && start === null) {\n start = x;\n }\n });\n });\n return ops.join(\"\");\n}\nfunction excavateModules(modules, excavation) {\n return modules.slice().map((row, y) => {\n if (y < excavation.y || y >= excavation.y + excavation.h) {\n return row;\n }\n return row.map((cell, x) => {\n if (x < excavation.x || x >= excavation.x + excavation.w) {\n return cell;\n }\n return false;\n });\n });\n}\nfunction getImageSettings(cells, size, includeMargin, imageSettings) {\n if (imageSettings == null) {\n return null;\n }\n const margin = includeMargin ? MARGIN_SIZE : 0;\n const numCells = cells.length + margin * 2;\n const defaultSize = Math.floor(size * DEFAULT_IMG_SCALE);\n const scale = numCells / size;\n const w = (imageSettings.width || defaultSize) * scale;\n const h = (imageSettings.height || defaultSize) * scale;\n const x = imageSettings.x == null ? cells.length / 2 - w / 2 : imageSettings.x * scale;\n const y = imageSettings.y == null ? cells.length / 2 - h / 2 : imageSettings.y * scale;\n let excavation = null;\n if (imageSettings.excavate) {\n let floorX = Math.floor(x);\n let floorY = Math.floor(y);\n let ceilW = Math.ceil(w + x - floorX);\n let ceilH = Math.ceil(h + y - floorY);\n excavation = { x: floorX, y: floorY, w: ceilW, h: ceilH };\n }\n return { x, y, h, w, excavation };\n}\nvar SUPPORTS_PATH2D = function() {\n try {\n new Path2D().addPath(new Path2D());\n } catch (e) {\n return false;\n }\n return true;\n}();\nfunction QRCodeCanvas(props) {\n const _a = props, {\n value,\n size = DEFAULT_SIZE,\n level = DEFAULT_LEVEL,\n bgColor = DEFAULT_BGCOLOR,\n fgColor = DEFAULT_FGCOLOR,\n includeMargin = DEFAULT_INCLUDEMARGIN,\n style,\n imageSettings\n } = _a, otherProps = __objRest(_a, [\n \"value\",\n \"size\",\n \"level\",\n \"bgColor\",\n \"fgColor\",\n \"includeMargin\",\n \"style\",\n \"imageSettings\"\n ]);\n const imgSrc = imageSettings == null ? void 0 : imageSettings.src;\n const _canvas = useRef(null);\n const _image = useRef(null);\n const [isImgLoaded, setIsImageLoaded] = useState(false);\n useEffect(() => {\n if (_canvas.current != null) {\n const canvas = _canvas.current;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n return;\n }\n let cells = qrcodegen_default.QrCode.encodeText(value, ERROR_LEVEL_MAP[level]).getModules();\n const margin = includeMargin ? MARGIN_SIZE : 0;\n const numCells = cells.length + margin * 2;\n const calculatedImageSettings = getImageSettings(cells, size, includeMargin, imageSettings);\n const image = _image.current;\n const haveImageToRender = calculatedImageSettings != null && image !== null && image.complete && image.naturalHeight !== 0 && image.naturalWidth !== 0;\n if (haveImageToRender) {\n if (calculatedImageSettings.excavation != null) {\n cells = excavateModules(cells, calculatedImageSettings.excavation);\n }\n }\n const pixelRatio = window.devicePixelRatio || 1;\n canvas.height = canvas.width = size * pixelRatio;\n const scale = size / numCells * pixelRatio;\n ctx.scale(scale, scale);\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, numCells, numCells);\n ctx.fillStyle = fgColor;\n if (SUPPORTS_PATH2D) {\n ctx.fill(new Path2D(generatePath(cells, margin)));\n } else {\n cells.forEach(function(row, rdx) {\n row.forEach(function(cell, cdx) {\n if (cell) {\n ctx.fillRect(cdx + margin, rdx + margin, 1, 1);\n }\n });\n });\n }\n if (haveImageToRender) {\n ctx.drawImage(image, calculatedImageSettings.x + margin, calculatedImageSettings.y + margin, calculatedImageSettings.w, calculatedImageSettings.h);\n }\n }\n });\n useEffect(() => {\n setIsImageLoaded(false);\n }, [imgSrc]);\n const canvasStyle = __spreadValues({ height: size, width: size }, style);\n let img = null;\n if (imgSrc != null) {\n img = /* @__PURE__ */ React.createElement(\"img\", {\n src: imgSrc,\n key: imgSrc,\n style: { display: \"none\" },\n onLoad: () => {\n setIsImageLoaded(true);\n },\n ref: _image\n });\n }\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"canvas\", __spreadValues({\n style: canvasStyle,\n height: size,\n width: size,\n ref: _canvas\n }, otherProps)), img);\n}\nfunction QRCodeSVG(props) {\n const _a = props, {\n value,\n size = DEFAULT_SIZE,\n level = DEFAULT_LEVEL,\n bgColor = DEFAULT_BGCOLOR,\n fgColor = DEFAULT_FGCOLOR,\n includeMargin = DEFAULT_INCLUDEMARGIN,\n imageSettings\n } = _a, otherProps = __objRest(_a, [\n \"value\",\n \"size\",\n \"level\",\n \"bgColor\",\n \"fgColor\",\n \"includeMargin\",\n \"imageSettings\"\n ]);\n let cells = qrcodegen_default.QrCode.encodeText(value, ERROR_LEVEL_MAP[level]).getModules();\n const margin = includeMargin ? MARGIN_SIZE : 0;\n const numCells = cells.length + margin * 2;\n const calculatedImageSettings = getImageSettings(cells, size, includeMargin, imageSettings);\n let image = null;\n if (imageSettings != null && calculatedImageSettings != null) {\n if (calculatedImageSettings.excavation != null) {\n cells = excavateModules(cells, calculatedImageSettings.excavation);\n }\n image = /* @__PURE__ */ React.createElement(\"image\", {\n xlinkHref: imageSettings.src,\n height: calculatedImageSettings.h,\n width: calculatedImageSettings.w,\n x: calculatedImageSettings.x + margin,\n y: calculatedImageSettings.y + margin,\n preserveAspectRatio: \"none\"\n });\n }\n const fgPath = generatePath(cells, margin);\n return /* @__PURE__ */ React.createElement(\"svg\", __spreadValues({\n height: size,\n width: size,\n viewBox: `0 0 ${numCells} ${numCells}`\n }, otherProps), /* @__PURE__ */ React.createElement(\"path\", {\n fill: bgColor,\n d: `M0,0 h${numCells}v${numCells}H0z`,\n shapeRendering: \"crispEdges\"\n }), /* @__PURE__ */ React.createElement(\"path\", {\n fill: fgColor,\n d: fgPath,\n shapeRendering: \"crispEdges\"\n }), image);\n}\nvar QRCode = (props) => {\n const _a = props, { renderAs } = _a, otherProps = __objRest(_a, [\"renderAs\"]);\n if (renderAs === \"svg\") {\n return /* @__PURE__ */ React.createElement(QRCodeSVG, __spreadValues({}, otherProps));\n }\n return /* @__PURE__ */ React.createElement(QRCodeCanvas, __spreadValues({}, otherProps));\n};\nexport {\n QRCodeCanvas,\n QRCodeSVG,\n QRCode as default\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _lottieWeb = require('lottie-web');\n\nvar _lottieWeb2 = _interopRequireDefault(_lottieWeb);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Lottie = function (_React$Component) {\n (0, _inherits3.default)(Lottie, _React$Component);\n\n function Lottie() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, Lottie);\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 = (0, _possibleConstructorReturn3.default)(this, (_ref = Lottie.__proto__ || (0, _getPrototypeOf2.default)(Lottie)).call.apply(_ref, [this].concat(args))), _this), _this.handleClickToPause = function () {\n // The pause() method is for handling pausing by passing a prop isPaused\n // This method is for handling the ability to pause by clicking on the animation\n if (_this.anim.isPaused) {\n _this.anim.play();\n } else {\n _this.anim.pause();\n }\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(Lottie, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _props = this.props,\n options = _props.options,\n eventListeners = _props.eventListeners;\n var loop = options.loop,\n autoplay = options.autoplay,\n animationData = options.animationData,\n rendererSettings = options.rendererSettings,\n segments = options.segments;\n\n\n this.options = {\n container: this.el,\n renderer: 'svg',\n loop: loop !== false,\n autoplay: autoplay !== false,\n segments: segments !== false,\n animationData: animationData,\n rendererSettings: rendererSettings\n };\n\n this.options = (0, _extends3.default)({}, this.options, options);\n\n this.anim = _lottieWeb2.default.loadAnimation(this.options);\n this.registerEvents(eventListeners);\n }\n }, {\n key: 'componentWillUpdate',\n value: function componentWillUpdate(nextProps /* , nextState */) {\n /* Recreate the animation handle if the data is changed */\n if (this.options.animationData !== nextProps.options.animationData) {\n this.deRegisterEvents(this.props.eventListeners);\n this.destroy();\n this.options = (0, _extends3.default)({}, this.options, nextProps.options);\n this.anim = _lottieWeb2.default.loadAnimation(this.options);\n this.registerEvents(nextProps.eventListeners);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (this.props.isStopped) {\n this.stop();\n } else if (this.props.segments) {\n this.playSegments();\n } else {\n this.play();\n }\n\n this.pause();\n this.setSpeed();\n this.setDirection();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.deRegisterEvents(this.props.eventListeners);\n this.destroy();\n this.options.animationData = null;\n this.anim = null;\n }\n }, {\n key: 'setSpeed',\n value: function setSpeed() {\n this.anim.setSpeed(this.props.speed);\n }\n }, {\n key: 'setDirection',\n value: function setDirection() {\n this.anim.setDirection(this.props.direction);\n }\n }, {\n key: 'play',\n value: function play() {\n this.anim.play();\n }\n }, {\n key: 'playSegments',\n value: function playSegments() {\n this.anim.playSegments(this.props.segments);\n }\n }, {\n key: 'stop',\n value: function stop() {\n this.anim.stop();\n }\n }, {\n key: 'pause',\n value: function pause() {\n if (this.props.isPaused && !this.anim.isPaused) {\n this.anim.pause();\n } else if (!this.props.isPaused && this.anim.isPaused) {\n this.anim.pause();\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.anim.destroy();\n }\n }, {\n key: 'registerEvents',\n value: function registerEvents(eventListeners) {\n var _this2 = this;\n\n eventListeners.forEach(function (eventListener) {\n _this2.anim.addEventListener(eventListener.eventName, eventListener.callback);\n });\n }\n }, {\n key: 'deRegisterEvents',\n value: function deRegisterEvents(eventListeners) {\n var _this3 = this;\n\n eventListeners.forEach(function (eventListener) {\n _this3.anim.removeEventListener(eventListener.eventName, eventListener.callback);\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var _props2 = this.props,\n width = _props2.width,\n height = _props2.height,\n ariaRole = _props2.ariaRole,\n ariaLabel = _props2.ariaLabel,\n isClickToPauseDisabled = _props2.isClickToPauseDisabled,\n title = _props2.title;\n\n\n var getSize = function getSize(initial) {\n var size = void 0;\n\n if (typeof initial === 'number') {\n size = initial + 'px';\n } else {\n size = initial || '100%';\n }\n\n return size;\n };\n\n var lottieStyles = (0, _extends3.default)({\n width: getSize(width),\n height: getSize(height),\n overflow: 'hidden',\n margin: '0 auto',\n outline: 'none'\n }, this.props.style);\n\n var onClickHandler = isClickToPauseDisabled ? function () {\n return null;\n } : this.handleClickToPause;\n\n return (\n // Bug with eslint rules https://github.com/airbnb/javascript/issues/1374\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n _react2.default.createElement('div', {\n ref: function ref(c) {\n _this4.el = c;\n },\n style: lottieStyles,\n onClick: onClickHandler,\n title: title,\n role: ariaRole,\n 'aria-label': ariaLabel,\n tabIndex: '0'\n })\n );\n }\n }]);\n return Lottie;\n}(_react2.default.Component);\n\nexports.default = Lottie;\n\n\nLottie.propTypes = {\n eventListeners: _propTypes2.default.arrayOf(_propTypes2.default.object),\n options: _propTypes2.default.object.isRequired,\n height: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n width: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n isStopped: _propTypes2.default.bool,\n isPaused: _propTypes2.default.bool,\n speed: _propTypes2.default.number,\n segments: _propTypes2.default.arrayOf(_propTypes2.default.number),\n direction: _propTypes2.default.number,\n ariaRole: _propTypes2.default.string,\n ariaLabel: _propTypes2.default.string,\n isClickToPauseDisabled: _propTypes2.default.bool,\n title: _propTypes2.default.string\n};\n\nLottie.defaultProps = {\n eventListeners: [],\n isStopped: false,\n isPaused: false,\n speed: 1,\n ariaRole: 'button',\n ariaLabel: 'animation',\n isClickToPauseDisabled: false,\n title: ''\n};","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\n};\n","var fetchApi\nif (typeof fetch === 'function') {\n if (typeof global !== 'undefined' && global.fetch) {\n fetchApi = global.fetch\n } else if (typeof window !== 'undefined' && window.fetch) {\n fetchApi = window.fetch\n } else {\n fetchApi = fetch\n }\n}\n\nif (typeof require !== 'undefined' && (typeof window === 'undefined' || typeof window.document === 'undefined')) {\n var f = fetchApi || require('cross-fetch')\n if (f.default) f = f.default\n exports.default = f\n module.exports = exports.default\n}\n","export var NetworkStatus;\n(function (NetworkStatus) {\n NetworkStatus[NetworkStatus[\"loading\"] = 1] = \"loading\";\n NetworkStatus[NetworkStatus[\"setVariables\"] = 2] = \"setVariables\";\n NetworkStatus[NetworkStatus[\"fetchMore\"] = 3] = \"fetchMore\";\n NetworkStatus[NetworkStatus[\"refetch\"] = 4] = \"refetch\";\n NetworkStatus[NetworkStatus[\"poll\"] = 6] = \"poll\";\n NetworkStatus[NetworkStatus[\"ready\"] = 7] = \"ready\";\n NetworkStatus[NetworkStatus[\"error\"] = 8] = \"error\";\n})(NetworkStatus || (NetworkStatus = {}));\nexport function isNetworkRequestInFlight(networkStatus) {\n return networkStatus ? networkStatus < 7 : false;\n}\n//# sourceMappingURL=networkStatus.js.map","import { __extends } from \"tslib\";\nimport \"../utilities/globals/index.js\";\nimport { isNonEmptyArray } from \"../utilities/index.js\";\nexport function isApolloError(err) {\n return err.hasOwnProperty('graphQLErrors');\n}\nvar generateErrorMessage = function (err) {\n var message = '';\n if (isNonEmptyArray(err.graphQLErrors) || isNonEmptyArray(err.clientErrors)) {\n var errors = (err.graphQLErrors || [])\n .concat(err.clientErrors || []);\n errors.forEach(function (error) {\n var errorMessage = error\n ? error.message\n : 'Error message not found.';\n message += \"\".concat(errorMessage, \"\\n\");\n });\n }\n if (err.networkError) {\n message += \"\".concat(err.networkError.message, \"\\n\");\n }\n message = message.replace(/\\n$/, '');\n return message;\n};\nvar ApolloError = (function (_super) {\n __extends(ApolloError, _super);\n function ApolloError(_a) {\n var graphQLErrors = _a.graphQLErrors, clientErrors = _a.clientErrors, networkError = _a.networkError, errorMessage = _a.errorMessage, extraInfo = _a.extraInfo;\n var _this = _super.call(this, errorMessage) || this;\n _this.graphQLErrors = graphQLErrors || [];\n _this.clientErrors = clientErrors || [];\n _this.networkError = networkError || null;\n _this.message = errorMessage || generateErrorMessage(_this);\n _this.extraInfo = extraInfo;\n _this.__proto__ = ApolloError.prototype;\n return _this;\n }\n return ApolloError;\n}(Error));\nexport { ApolloError };\n//# sourceMappingURL=index.js.map","import * as React from 'react';\nimport { canUseSymbol } from \"../../utilities/index.js\";\nvar contextKey = canUseSymbol\n ? Symbol.for('__APOLLO_CONTEXT__')\n : '__APOLLO_CONTEXT__';\nexport function getApolloContext() {\n var context = React.createContext[contextKey];\n if (!context) {\n Object.defineProperty(React.createContext, contextKey, {\n value: context = React.createContext({}),\n enumerable: false,\n writable: false,\n configurable: true,\n });\n context.displayName = 'ApolloContext';\n }\n return context;\n}\nexport { getApolloContext as resetApolloContext };\n//# sourceMappingURL=ApolloContext.js.map","export function isNonEmptyArray(value) {\n return Array.isArray(value) && value.length > 0;\n}\n//# sourceMappingURL=arrays.js.map","export var canUseWeakMap = typeof WeakMap === 'function' && !(typeof navigator === 'object' &&\n navigator.product === 'ReactNative');\nexport var canUseWeakSet = typeof WeakSet === 'function';\nexport var canUseSymbol = typeof Symbol === 'function' &&\n typeof Symbol.for === 'function';\n//# sourceMappingURL=canUse.js.map","export function compact() {\n var objects = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n objects[_i] = arguments[_i];\n }\n var result = Object.create(null);\n objects.forEach(function (obj) {\n if (!obj)\n return;\n Object.keys(obj).forEach(function (key) {\n var value = obj[key];\n if (value !== void 0) {\n result[key] = value;\n }\n });\n });\n return result;\n}\n//# sourceMappingURL=compact.js.map","import \"../globals/index.js\";\nimport { isNonNullObject } from \"./objects.js\";\nfunction deepFreeze(value) {\n var workSet = new Set([value]);\n workSet.forEach(function (obj) {\n if (isNonNullObject(obj) && shallowFreeze(obj) === obj) {\n Object.getOwnPropertyNames(obj).forEach(function (name) {\n if (isNonNullObject(obj[name]))\n workSet.add(obj[name]);\n });\n }\n });\n return value;\n}\nfunction shallowFreeze(obj) {\n if (__DEV__ && !Object.isFrozen(obj)) {\n try {\n Object.freeze(obj);\n }\n catch (e) {\n if (e instanceof TypeError)\n return null;\n throw e;\n }\n }\n return obj;\n}\nexport function maybeDeepFreeze(obj) {\n if (__DEV__) {\n deepFreeze(obj);\n }\n return obj;\n}\n//# sourceMappingURL=maybeDeepFreeze.js.map","import { __assign } from \"tslib\";\nimport { compact } from \"./compact.js\";\nexport function mergeOptions(defaults, options) {\n return compact(defaults, options, options.variables && {\n variables: __assign(__assign({}, defaults.variables), options.variables),\n });\n}\n//# sourceMappingURL=mergeOptions.js.map","export function isNonNullObject(obj) {\n return obj !== null && typeof obj === 'object';\n}\n//# sourceMappingURL=objects.js.map","import { __extends } from \"tslib\";\nvar genericMessage = \"Invariant Violation\";\nvar _a = Object.setPrototypeOf, setPrototypeOf = _a === void 0 ? function (obj, proto) {\n obj.__proto__ = proto;\n return obj;\n} : _a;\nvar InvariantError = /** @class */ (function (_super) {\n __extends(InvariantError, _super);\n function InvariantError(message) {\n if (message === void 0) { message = genericMessage; }\n var _this = _super.call(this, typeof message === \"number\"\n ? genericMessage + \": \" + message + \" (see https://github.com/apollographql/invariant-packages)\"\n : message) || this;\n _this.framesToPop = 1;\n _this.name = genericMessage;\n setPrototypeOf(_this, InvariantError.prototype);\n return _this;\n }\n return InvariantError;\n}(Error));\nexport { InvariantError };\nexport function invariant(condition, message) {\n if (!condition) {\n throw new InvariantError(message);\n }\n}\nvar verbosityLevels = [\"debug\", \"log\", \"warn\", \"error\", \"silent\"];\nvar verbosityLevel = verbosityLevels.indexOf(\"log\");\nfunction wrapConsoleMethod(name) {\n return function () {\n if (verbosityLevels.indexOf(name) >= verbosityLevel) {\n // Default to console.log if this host environment happens not to provide\n // all the console.* methods we need.\n var method = console[name] || console.log;\n return method.apply(console, arguments);\n }\n };\n}\n(function (invariant) {\n invariant.debug = wrapConsoleMethod(\"debug\");\n invariant.log = wrapConsoleMethod(\"log\");\n invariant.warn = wrapConsoleMethod(\"warn\");\n invariant.error = wrapConsoleMethod(\"error\");\n})(invariant || (invariant = {}));\nexport function setVerbosity(level) {\n var old = verbosityLevels[verbosityLevel];\n verbosityLevel = Math.max(0, verbosityLevels.indexOf(level));\n return old;\n}\nexport default invariant;\n//# sourceMappingURL=invariant.js.map","export function maybe(thunk) {\n try {\n return thunk();\n }\n catch (_a) { }\n}\n//# sourceMappingURL=maybe.js.map","import { maybe } from \"./maybe.js\";\nexport default (maybe(function () { return globalThis; }) ||\n maybe(function () { return window; }) ||\n maybe(function () { return self; }) ||\n maybe(function () { return global; }) || maybe(function () { return maybe.constructor(\"return this\")(); }));\n//# sourceMappingURL=global.js.map","import global from \"./global.js\";\nimport { maybe } from \"./maybe.js\";\nvar __ = \"__\";\nvar GLOBAL_KEY = [__, __].join(\"DEV\");\nfunction getDEV() {\n try {\n return Boolean(__DEV__);\n }\n catch (_a) {\n Object.defineProperty(global, GLOBAL_KEY, {\n value: maybe(function () { return process.env.NODE_ENV; }) !== \"production\",\n enumerable: false,\n configurable: true,\n writable: true,\n });\n return global[GLOBAL_KEY];\n }\n}\nexport default getDEV();\n//# sourceMappingURL=DEV.js.map","function maybe(thunk) {\n try { return thunk() } catch (_) {}\n}\n\nvar safeGlobal = (\n maybe(function() { return globalThis }) ||\n maybe(function() { return window }) ||\n maybe(function() { return self }) ||\n maybe(function() { return global }) ||\n // We don't expect the Function constructor ever to be invoked at runtime, as\n // long as at least one of globalThis, window, self, or global is defined, so\n // we are under no obligation to make it easy for static analysis tools to\n // detect syntactic usage of the Function constructor. If you think you can\n // improve your static analysis to detect this obfuscation, think again. This\n // is an arms race you cannot win, at least not in JavaScript.\n maybe(function() { return maybe.constructor(\"return this\")() })\n);\n\nvar needToRemove = false;\n\nexport function install() {\n if (safeGlobal &&\n !maybe(function() { return process.env.NODE_ENV }) &&\n !maybe(function() { return process })) {\n Object.defineProperty(safeGlobal, \"process\", {\n value: {\n env: {\n // This default needs to be \"production\" instead of \"development\", to\n // avoid the problem https://github.com/graphql/graphql-js/pull/2894\n // will eventually solve, once merged and released.\n NODE_ENV: \"production\",\n },\n },\n // Let anyone else change global.process as they see fit, but hide it from\n // Object.keys(global) enumeration.\n configurable: true,\n enumerable: false,\n writable: true,\n });\n needToRemove = true;\n }\n}\n\n// Call install() at least once, when this module is imported.\ninstall();\n\nexport function remove() {\n if (needToRemove) {\n delete safeGlobal.process;\n needToRemove = false;\n }\n}\n","import { remove } from \"ts-invariant/process/index.js\";\nimport { Source } from 'graphql';\nexport function removeTemporaryGlobals() {\n return typeof Source === \"function\" ? remove() : remove();\n}\n//# sourceMappingURL=fix-graphql.js.map","import { invariant, InvariantError } from \"ts-invariant\";\nimport DEV from \"./DEV.js\";\nexport { DEV };\nexport function checkDEV() {\n __DEV__ ? invariant(\"boolean\" === typeof DEV, DEV) : invariant(\"boolean\" === typeof DEV, 36);\n}\nimport { removeTemporaryGlobals } from \"./fix-graphql.js\";\nremoveTemporaryGlobals();\nexport { maybe } from \"./maybe.js\";\nexport { default as global } from \"./global.js\";\nexport { invariant, InvariantError };\ncheckDEV();\n//# sourceMappingURL=index.js.map","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n","import defineProperty from './_define_property.mjs';\n\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\n\nexport default function _objectSpreadProps(target, source) {\n source = source != null ? source : {}\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(\n target,\n key,\n Object.getOwnPropertyDescriptor(source, key)\n );\n });\n }\n\n return target;\n}","import objectWithoutPropertiesLoose from './_object_without_properties_loose.mjs';\n\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default 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","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}\n","export function devAssert(condition, message) {\n const booleanCondition = Boolean(condition);\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n","const MAX_ARRAY_LENGTH = 10;\nconst MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nexport function inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (typeof value) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? `[function ${value.name}]` : '[function]';\n\n case 'object':\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (value === null) {\n return 'null';\n }\n\n if (previouslySeenValues.includes(value)) {\n return '[Circular]';\n }\n\n const seenValues = [...previouslySeenValues, value];\n\n if (isJSONable(value)) {\n const jsonValue = value.toJSON(); // check for infinite recursion\n\n if (jsonValue !== value) {\n return typeof jsonValue === 'string'\n ? jsonValue\n : formatValue(jsonValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction isJSONable(value) {\n return typeof value.toJSON === 'function';\n}\n\nfunction formatObject(object, seenValues) {\n const entries = Object.entries(object);\n\n if (entries.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n const properties = entries.map(\n ([key, value]) => key + ': ' + formatValue(value, seenValues),\n );\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n const len = Math.min(MAX_ARRAY_LENGTH, array.length);\n const remaining = array.length - len;\n const items = [];\n\n for (let i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(`... ${remaining} more items`);\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getObjectTag(object) {\n const tag = Object.prototype.toString\n .call(object)\n .replace(/^\\[object /, '')\n .replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n const name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n","/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nexport class Location {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n constructor(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n\n get [Symbol.toStringTag]() {\n return 'Location';\n }\n\n toJSON() {\n return {\n start: this.start,\n end: this.end,\n };\n }\n}\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nexport class Token {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n *\n * Note: is undefined for punctuation tokens, but typed as string for\n * convenience in the parser.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. is always the first node and \n * the last.\n */\n constructor(kind, start, end, line, column, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\n this.value = value;\n this.prev = null;\n this.next = null;\n }\n\n get [Symbol.toStringTag]() {\n return 'Token';\n }\n\n toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column,\n };\n }\n}\n/**\n * The list of all possible AST node types.\n */\n\n/**\n * @internal\n */\nexport const QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: [\n 'name',\n 'variableDefinitions',\n 'directives',\n 'selectionSet',\n ],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: [\n 'name', // Note: fragment variable definitions are deprecated and will removed in v17.0.0\n 'variableDefinitions',\n 'typeCondition',\n 'directives',\n 'selectionSet',\n ],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: [\n 'description',\n 'name',\n 'type',\n 'defaultValue',\n 'directives',\n ],\n InterfaceTypeDefinition: [\n 'description',\n 'name',\n 'interfaces',\n 'directives',\n 'fields',\n ],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields'],\n};\nconst kindValues = new Set(Object.keys(QueryDocumentKeys));\n/**\n * @internal\n */\n\nexport function isNode(maybeNode) {\n const maybeKind =\n maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind;\n return typeof maybeKind === 'string' && kindValues.has(maybeKind);\n}\n/** Name */\n\nexport let OperationTypeNode;\n\n(function (OperationTypeNode) {\n OperationTypeNode['QUERY'] = 'query';\n OperationTypeNode['MUTATION'] = 'mutation';\n OperationTypeNode['SUBSCRIPTION'] = 'subscription';\n})(OperationTypeNode || (OperationTypeNode = {}));\n","import { isWhiteSpace } from './characterClasses.mjs';\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\n\nexport function dedentBlockStringLines(lines) {\n var _firstNonEmptyLine2;\n\n let commonIndent = Number.MAX_SAFE_INTEGER;\n let firstNonEmptyLine = null;\n let lastNonEmptyLine = -1;\n\n for (let i = 0; i < lines.length; ++i) {\n var _firstNonEmptyLine;\n\n const line = lines[i];\n const indent = leadingWhitespace(line);\n\n if (indent === line.length) {\n continue; // skip empty lines\n }\n\n firstNonEmptyLine =\n (_firstNonEmptyLine = firstNonEmptyLine) !== null &&\n _firstNonEmptyLine !== void 0\n ? _firstNonEmptyLine\n : i;\n lastNonEmptyLine = i;\n\n if (i !== 0 && indent < commonIndent) {\n commonIndent = indent;\n }\n }\n\n return lines // Remove common indentation from all lines but first.\n .map((line, i) => (i === 0 ? line : line.slice(commonIndent))) // Remove leading and trailing blank lines.\n .slice(\n (_firstNonEmptyLine2 = firstNonEmptyLine) !== null &&\n _firstNonEmptyLine2 !== void 0\n ? _firstNonEmptyLine2\n : 0,\n lastNonEmptyLine + 1,\n );\n}\n\nfunction leadingWhitespace(str) {\n let i = 0;\n\n while (i < str.length && isWhiteSpace(str.charCodeAt(i))) {\n ++i;\n }\n\n return i;\n}\n/**\n * @internal\n */\n\nexport function isPrintableAsBlockString(value) {\n if (value === '') {\n return true; // empty string is printable\n }\n\n let isEmptyLine = true;\n let hasIndent = false;\n let hasCommonIndent = true;\n let seenNonEmptyLine = false;\n\n for (let i = 0; i < value.length; ++i) {\n switch (value.codePointAt(i)) {\n case 0x0000:\n case 0x0001:\n case 0x0002:\n case 0x0003:\n case 0x0004:\n case 0x0005:\n case 0x0006:\n case 0x0007:\n case 0x0008:\n case 0x000b:\n case 0x000c:\n case 0x000e:\n case 0x000f:\n return false;\n // Has non-printable characters\n\n case 0x000d:\n // \\r\n return false;\n // Has \\r or \\r\\n which will be replaced as \\n\n\n case 10:\n // \\n\n if (isEmptyLine && !seenNonEmptyLine) {\n return false; // Has leading new line\n }\n\n seenNonEmptyLine = true;\n isEmptyLine = true;\n hasIndent = false;\n break;\n\n case 9: // \\t\n\n case 32:\n // \n hasIndent || (hasIndent = isEmptyLine);\n break;\n\n default:\n hasCommonIndent && (hasCommonIndent = hasIndent);\n isEmptyLine = false;\n }\n }\n\n if (isEmptyLine) {\n return false; // Has trailing empty lines\n }\n\n if (hasCommonIndent && seenNonEmptyLine) {\n return false; // Has internal indent\n }\n\n return true;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nexport function printBlockString(value, options) {\n const escapedValue = value.replace(/\"\"\"/g, '\\\\\"\"\"'); // Expand a block string's raw value into independent lines.\n\n const lines = escapedValue.split(/\\r\\n|[\\n\\r]/g);\n const isSingleLine = lines.length === 1; // If common indentation is found we can fix some of those cases by adding leading new line\n\n const forceLeadingNewLine =\n lines.length > 1 &&\n lines\n .slice(1)\n .every((line) => line.length === 0 || isWhiteSpace(line.charCodeAt(0))); // Trailing triple quotes just looks confusing but doesn't force trailing new line\n\n const hasTrailingTripleQuotes = escapedValue.endsWith('\\\\\"\"\"'); // Trailing quote (single or double) or slash forces trailing new line\n\n const hasTrailingQuote = value.endsWith('\"') && !hasTrailingTripleQuotes;\n const hasTrailingSlash = value.endsWith('\\\\');\n const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash;\n const printAsMultipleLines =\n !(options !== null && options !== void 0 && options.minimize) && // add leading and trailing new lines only if it improves readability\n (!isSingleLine ||\n value.length > 70 ||\n forceTrailingNewline ||\n forceLeadingNewLine ||\n hasTrailingTripleQuotes);\n let result = ''; // Format a multi-line block quote to account for leading space.\n\n const skipLeadingNewLine = isSingleLine && isWhiteSpace(value.charCodeAt(0));\n\n if ((printAsMultipleLines && !skipLeadingNewLine) || forceLeadingNewLine) {\n result += '\\n';\n }\n\n result += escapedValue;\n\n if (printAsMultipleLines || forceTrailingNewline) {\n result += '\\n';\n }\n\n return '\"\"\"' + result + '\"\"\"';\n}\n","/**\n * ```\n * WhiteSpace ::\n * - \"Horizontal Tab (U+0009)\"\n * - \"Space (U+0020)\"\n * ```\n * @internal\n */\nexport function isWhiteSpace(code) {\n return code === 0x0009 || code === 0x0020;\n}\n/**\n * ```\n * Digit :: one of\n * - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * ```\n * @internal\n */\n\nexport function isDigit(code) {\n return code >= 0x0030 && code <= 0x0039;\n}\n/**\n * ```\n * Letter :: one of\n * - `A` `B` `C` `D` `E` `F` `G` `H` `I` `J` `K` `L` `M`\n * - `N` `O` `P` `Q` `R` `S` `T` `U` `V` `W` `X` `Y` `Z`\n * - `a` `b` `c` `d` `e` `f` `g` `h` `i` `j` `k` `l` `m`\n * - `n` `o` `p` `q` `r` `s` `t` `u` `v` `w` `x` `y` `z`\n * ```\n * @internal\n */\n\nexport function isLetter(code) {\n return (\n (code >= 0x0061 && code <= 0x007a) || // A-Z\n (code >= 0x0041 && code <= 0x005a) // a-z\n );\n}\n/**\n * ```\n * NameStart ::\n * - Letter\n * - `_`\n * ```\n * @internal\n */\n\nexport function isNameStart(code) {\n return isLetter(code) || code === 0x005f;\n}\n/**\n * ```\n * NameContinue ::\n * - Letter\n * - Digit\n * - `_`\n * ```\n * @internal\n */\n\nexport function isNameContinue(code) {\n return isLetter(code) || isDigit(code) || code === 0x005f;\n}\n","/**\n * The set of allowed kind values for AST nodes.\n */\nexport let Kind;\n/**\n * The enum type representing the possible kind values of AST nodes.\n *\n * @deprecated Please use `Kind`. Will be remove in v17.\n */\n\n(function (Kind) {\n Kind['NAME'] = 'Name';\n Kind['DOCUMENT'] = 'Document';\n Kind['OPERATION_DEFINITION'] = 'OperationDefinition';\n Kind['VARIABLE_DEFINITION'] = 'VariableDefinition';\n Kind['SELECTION_SET'] = 'SelectionSet';\n Kind['FIELD'] = 'Field';\n Kind['ARGUMENT'] = 'Argument';\n Kind['FRAGMENT_SPREAD'] = 'FragmentSpread';\n Kind['INLINE_FRAGMENT'] = 'InlineFragment';\n Kind['FRAGMENT_DEFINITION'] = 'FragmentDefinition';\n Kind['VARIABLE'] = 'Variable';\n Kind['INT'] = 'IntValue';\n Kind['FLOAT'] = 'FloatValue';\n Kind['STRING'] = 'StringValue';\n Kind['BOOLEAN'] = 'BooleanValue';\n Kind['NULL'] = 'NullValue';\n Kind['ENUM'] = 'EnumValue';\n Kind['LIST'] = 'ListValue';\n Kind['OBJECT'] = 'ObjectValue';\n Kind['OBJECT_FIELD'] = 'ObjectField';\n Kind['DIRECTIVE'] = 'Directive';\n Kind['NAMED_TYPE'] = 'NamedType';\n Kind['LIST_TYPE'] = 'ListType';\n Kind['NON_NULL_TYPE'] = 'NonNullType';\n Kind['SCHEMA_DEFINITION'] = 'SchemaDefinition';\n Kind['OPERATION_TYPE_DEFINITION'] = 'OperationTypeDefinition';\n Kind['SCALAR_TYPE_DEFINITION'] = 'ScalarTypeDefinition';\n Kind['OBJECT_TYPE_DEFINITION'] = 'ObjectTypeDefinition';\n Kind['FIELD_DEFINITION'] = 'FieldDefinition';\n Kind['INPUT_VALUE_DEFINITION'] = 'InputValueDefinition';\n Kind['INTERFACE_TYPE_DEFINITION'] = 'InterfaceTypeDefinition';\n Kind['UNION_TYPE_DEFINITION'] = 'UnionTypeDefinition';\n Kind['ENUM_TYPE_DEFINITION'] = 'EnumTypeDefinition';\n Kind['ENUM_VALUE_DEFINITION'] = 'EnumValueDefinition';\n Kind['INPUT_OBJECT_TYPE_DEFINITION'] = 'InputObjectTypeDefinition';\n Kind['DIRECTIVE_DEFINITION'] = 'DirectiveDefinition';\n Kind['SCHEMA_EXTENSION'] = 'SchemaExtension';\n Kind['SCALAR_TYPE_EXTENSION'] = 'ScalarTypeExtension';\n Kind['OBJECT_TYPE_EXTENSION'] = 'ObjectTypeExtension';\n Kind['INTERFACE_TYPE_EXTENSION'] = 'InterfaceTypeExtension';\n Kind['UNION_TYPE_EXTENSION'] = 'UnionTypeExtension';\n Kind['ENUM_TYPE_EXTENSION'] = 'EnumTypeExtension';\n Kind['INPUT_OBJECT_TYPE_EXTENSION'] = 'InputObjectTypeExtension';\n})(Kind || (Kind = {}));\n","import { inspect } from './inspect.mjs';\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n * See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n * See: https://webpack.js.org/guides/production/\n */\n\nexport const instanceOf =\n /* c8 ignore next 6 */\n // FIXME: https://github.com/graphql/graphql-js/issues/2317\n // eslint-disable-next-line no-undef\n process.env.NODE_ENV === 'production'\n ? function instanceOf(value, constructor) {\n return value instanceof constructor;\n }\n : function instanceOf(value, constructor) {\n if (value instanceof constructor) {\n return true;\n }\n\n if (typeof value === 'object' && value !== null) {\n var _value$constructor;\n\n // Prefer Symbol.toStringTag since it is immune to minification.\n const className = constructor.prototype[Symbol.toStringTag];\n const valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.\n Symbol.toStringTag in value // @ts-expect-error TS bug see, https://github.com/microsoft/TypeScript/issues/38009\n ? value[Symbol.toStringTag]\n : (_value$constructor = value.constructor) === null ||\n _value$constructor === void 0\n ? void 0\n : _value$constructor.name;\n\n if (className === valueClassName) {\n const stringifiedValue = inspect(value);\n throw new Error(`Cannot use ${className} \"${stringifiedValue}\" from another module or realm.\n\nEnsure that there is only one instance of \"graphql\" in the node_modules\ndirectory. If different versions of \"graphql\" are the dependencies of other\nrelied on modules, use \"resolutions\" to ensure only one version is installed.\n\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\n\nDuplicate \"graphql\" modules cannot be used at the same time since different\nversions may have different capabilities and behavior. The data from one\nversion used in the function from another could produce confusing and\nspurious results.`);\n }\n }\n\n return false;\n };\n","import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { instanceOf } from '../jsutils/instanceOf.mjs';\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport class Source {\n constructor(\n body,\n name = 'GraphQL request',\n locationOffset = {\n line: 1,\n column: 1,\n },\n ) {\n typeof body === 'string' ||\n devAssert(false, `Body must be a string. Received: ${inspect(body)}.`);\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 ||\n devAssert(\n false,\n 'line in locationOffset is 1-indexed and must be positive.',\n );\n this.locationOffset.column > 0 ||\n devAssert(\n false,\n 'column in locationOffset is 1-indexed and must be positive.',\n );\n }\n\n get [Symbol.toStringTag]() {\n return 'Source';\n }\n}\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\nexport function isSource(source) {\n return instanceOf(source, Source);\n}\n","let e={data:\"\"},t=t=>\"object\"==typeof window?((t?t.querySelector(\"#_goober\"):window._goober)||Object.assign((t||document.head).appendChild(document.createElement(\"style\")),{innerHTML:\" \",id:\"_goober\"})).firstChild:t||e,r=e=>{let r=t(e),l=r.data;return r.data=\"\",l},l=/(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\\s*)/g,a=/\\/\\*[^]*?\\*\\/| +/g,n=/\\n+/g,o=(e,t)=>{let r=\"\",l=\"\",a=\"\";for(let n in e){let c=e[n];\"@\"==n[0]?\"i\"==n[1]?r=n+\" \"+c+\";\":l+=\"f\"==n[1]?o(c,n):n+\"{\"+o(c,\"k\"==n[1]?\"\":t)+\"}\":\"object\"==typeof c?l+=o(c,t?t.replace(/([^,])+/g,e=>n.replace(/(^:.*)|([^,])+/g,t=>/&/.test(t)?t.replace(/&/g,e):e?e+\" \"+t:t)):n):null!=c&&(n=/^--/.test(n)?n:n.replace(/[A-Z]/g,\"-$&\").toLowerCase(),a+=o.p?o.p(n,c):n+\":\"+c+\";\")}return r+(t&&a?t+\"{\"+a+\"}\":a)+l},c={},s=e=>{if(\"object\"==typeof e){let t=\"\";for(let r in e)t+=r+s(e[r]);return t}return e},i=(e,t,r,i,p)=>{let u=s(e),d=c[u]||(c[u]=(e=>{let t=0,r=11;for(;t>>0;return\"go\"+r})(u));if(!c[d]){let t=u!==e?e:(e=>{let t,r,o=[{}];for(;t=l.exec(e.replace(a,\"\"));)t[4]?o.shift():t[3]?(r=t[3].replace(n,\" \").trim(),o.unshift(o[0][r]=o[0][r]||{})):o[0][t[1]]=t[2].replace(n,\" \").trim();return o[0]})(e);c[d]=o(p?{[\"@keyframes \"+d]:t}:t,r?\"\":\".\"+d)}let f=r&&c.g?c.g:null;return r&&(c.g=c[d]),((e,t,r,l)=>{l?t.data=t.data.replace(l,e):-1===t.data.indexOf(e)&&(t.data=r?e+t.data:t.data+e)})(c[d],t,i,f),d},p=(e,t,r)=>e.reduce((e,l,a)=>{let n=t[a];if(n&&n.call){let e=n(r),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;n=t?\".\"+t:e&&\"object\"==typeof e?e.props?\"\":o(e,\"\"):!1===e?\"\":e}return e+l+(null==n?\"\":n)},\"\");function u(e){let r=this||{},l=e.call?e(r.p):e;return i(l.unshift?l.raw?p(l,[].slice.call(arguments,1),r.p):l.reduce((e,t)=>Object.assign(e,t&&t.call?t(r.p):t),{}):l,t(r.target),r.g,r.o,r.k)}let d,f,g,b=u.bind({g:1}),h=u.bind({k:1});function m(e,t,r,l){o.p=t,d=e,f=r,g=l}function j(e,t){let r=this||{};return function(){let l=arguments;function a(n,o){let c=Object.assign({},n),s=c.className||a.className;r.p=Object.assign({theme:f&&f()},c),r.o=/ *go\\d+/.test(s),c.className=u.apply(r,l)+(s?\" \"+s:\"\"),t&&(c.ref=o);let i=e;return e[0]&&(i=c.as||e,delete c.as),g&&i[0]&&g(c),d(i,c)}return t?t(a):a}}export{u as css,r as extractCss,b as glob,h as keyframes,m as setup,j as styled};\n","var W=e=>typeof e==\"function\",T=(e,t)=>W(e)?e(t):e;var U=(()=>{let e=0;return()=>(++e).toString()})(),b=(()=>{let e;return()=>{if(e===void 0&&typeof window<\"u\"){let t=matchMedia(\"(prefers-reduced-motion: reduce)\");e=!t||t.matches}return e}})();import{useEffect as H,useState as j}from\"react\";var Q=20;var S=new Map,X=1e3,$=e=>{if(S.has(e))return;let t=setTimeout(()=>{S.delete(e),u({type:4,toastId:e})},X);S.set(e,t)},J=e=>{let t=S.get(e);t&&clearTimeout(t)},v=(e,t)=>{switch(t.type){case 0:return{...e,toasts:[t.toast,...e.toasts].slice(0,Q)};case 1:return t.toast.id&&J(t.toast.id),{...e,toasts:e.toasts.map(r=>r.id===t.toast.id?{...r,...t.toast}:r)};case 2:let{toast:o}=t;return e.toasts.find(r=>r.id===o.id)?v(e,{type:1,toast:o}):v(e,{type:0,toast:o});case 3:let{toastId:s}=t;return s?$(s):e.toasts.forEach(r=>{$(r.id)}),{...e,toasts:e.toasts.map(r=>r.id===s||s===void 0?{...r,visible:!1}:r)};case 4:return t.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(r=>r.id!==t.toastId)};case 5:return{...e,pausedAt:t.time};case 6:let a=t.time-(e.pausedAt||0);return{...e,pausedAt:void 0,toasts:e.toasts.map(r=>({...r,pauseDuration:r.pauseDuration+a}))}}},A=[],P={toasts:[],pausedAt:void 0},u=e=>{P=v(P,e),A.forEach(t=>{t(P)})},Y={blank:4e3,error:4e3,success:2e3,loading:1/0,custom:4e3},I=(e={})=>{let[t,o]=j(P);H(()=>(A.push(o),()=>{let a=A.indexOf(o);a>-1&&A.splice(a,1)}),[t]);let s=t.toasts.map(a=>{var r,c;return{...e,...e[a.type],...a,duration:a.duration||((r=e[a.type])==null?void 0:r.duration)||(e==null?void 0:e.duration)||Y[a.type],style:{...e.style,...(c=e[a.type])==null?void 0:c.style,...a.style}}});return{...t,toasts:s}};var G=(e,t=\"blank\",o)=>({createdAt:Date.now(),visible:!0,type:t,ariaProps:{role:\"status\",\"aria-live\":\"polite\"},message:e,pauseDuration:0,...o,id:(o==null?void 0:o.id)||U()}),h=e=>(t,o)=>{let s=G(t,e,o);return u({type:2,toast:s}),s.id},n=(e,t)=>h(\"blank\")(e,t);n.error=h(\"error\");n.success=h(\"success\");n.loading=h(\"loading\");n.custom=h(\"custom\");n.dismiss=e=>{u({type:3,toastId:e})};n.remove=e=>u({type:4,toastId:e});n.promise=(e,t,o)=>{let s=n.loading(t.loading,{...o,...o==null?void 0:o.loading});return e.then(a=>(n.success(T(t.success,a),{id:s,...o,...o==null?void 0:o.success}),a)).catch(a=>{n.error(T(t.error,a),{id:s,...o,...o==null?void 0:o.error})}),e};import{useEffect as K,useCallback as L}from\"react\";var Z=(e,t)=>{u({type:1,toast:{id:e,height:t}})},ee=()=>{u({type:5,time:Date.now()})},D=e=>{let{toasts:t,pausedAt:o}=I(e);K(()=>{if(o)return;let r=Date.now(),c=t.map(i=>{if(i.duration===1/0)return;let d=(i.duration||0)+i.pauseDuration-(r-i.createdAt);if(d<0){i.visible&&n.dismiss(i.id);return}return setTimeout(()=>n.dismiss(i.id),d)});return()=>{c.forEach(i=>i&&clearTimeout(i))}},[t,o]);let s=L(()=>{o&&u({type:6,time:Date.now()})},[o]),a=L((r,c)=>{let{reverseOrder:i=!1,gutter:d=8,defaultPosition:p}=c||{},g=t.filter(m=>(m.position||p)===(r.position||p)&&m.height),E=g.findIndex(m=>m.id===r.id),x=g.filter((m,R)=>Rm.visible).slice(...i?[x+1]:[0,x]).reduce((m,R)=>m+(R.height||0)+d,0)},[t]);return{toasts:t,handlers:{updateHeight:Z,startPause:ee,endPause:s,calculateOffset:a}}};import*as l from\"react\";import{styled as B,keyframes as z}from\"goober\";import*as y from\"react\";import{styled as C,keyframes as me}from\"goober\";import{styled as te,keyframes as k}from\"goober\";var oe=k`\nfrom {\n transform: scale(0) rotate(45deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(45deg);\n opacity: 1;\n}`,re=k`\nfrom {\n transform: scale(0);\n opacity: 0;\n}\nto {\n transform: scale(1);\n opacity: 1;\n}`,se=k`\nfrom {\n transform: scale(0) rotate(90deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(90deg);\n\topacity: 1;\n}`,_=te(\"div\")`\n width: 20px;\n opacity: 0;\n height: 20px;\n border-radius: 10px;\n background: ${e=>e.primary||\"#ff4b4b\"};\n position: relative;\n transform: rotate(45deg);\n\n animation: ${oe} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n animation-delay: 100ms;\n\n &:after,\n &:before {\n content: '';\n animation: ${re} 0.15s ease-out forwards;\n animation-delay: 150ms;\n position: absolute;\n border-radius: 3px;\n opacity: 0;\n background: ${e=>e.secondary||\"#fff\"};\n bottom: 9px;\n left: 4px;\n height: 2px;\n width: 12px;\n }\n\n &:before {\n animation: ${se} 0.15s ease-out forwards;\n animation-delay: 180ms;\n transform: rotate(90deg);\n }\n`;import{styled as ae,keyframes as ie}from\"goober\";var ne=ie`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`,V=ae(\"div\")`\n width: 12px;\n height: 12px;\n box-sizing: border-box;\n border: 2px solid;\n border-radius: 100%;\n border-color: ${e=>e.secondary||\"#e0e0e0\"};\n border-right-color: ${e=>e.primary||\"#616161\"};\n animation: ${ne} 1s linear infinite;\n`;import{styled as ce,keyframes as N}from\"goober\";var pe=N`\nfrom {\n transform: scale(0) rotate(45deg);\n\topacity: 0;\n}\nto {\n transform: scale(1) rotate(45deg);\n\topacity: 1;\n}`,de=N`\n0% {\n\theight: 0;\n\twidth: 0;\n\topacity: 0;\n}\n40% {\n height: 0;\n\twidth: 6px;\n\topacity: 1;\n}\n100% {\n opacity: 1;\n height: 10px;\n}`,w=ce(\"div\")`\n width: 20px;\n opacity: 0;\n height: 20px;\n border-radius: 10px;\n background: ${e=>e.primary||\"#61d345\"};\n position: relative;\n transform: rotate(45deg);\n\n animation: ${pe} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n animation-delay: 100ms;\n &:after {\n content: '';\n box-sizing: border-box;\n animation: ${de} 0.2s ease-out forwards;\n opacity: 0;\n animation-delay: 200ms;\n position: absolute;\n border-right: 2px solid;\n border-bottom: 2px solid;\n border-color: ${e=>e.secondary||\"#fff\"};\n bottom: 6px;\n left: 6px;\n height: 10px;\n width: 6px;\n }\n`;var ue=C(\"div\")`\n position: absolute;\n`,le=C(\"div\")`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n min-width: 20px;\n min-height: 20px;\n`,Te=me`\nfrom {\n transform: scale(0.6);\n opacity: 0.4;\n}\nto {\n transform: scale(1);\n opacity: 1;\n}`,fe=C(\"div\")`\n position: relative;\n transform: scale(0.6);\n opacity: 0.4;\n min-width: 20px;\n animation: ${Te} 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275)\n forwards;\n`,M=({toast:e})=>{let{icon:t,type:o,iconTheme:s}=e;return t!==void 0?typeof t==\"string\"?y.createElement(fe,null,t):t:o===\"blank\"?null:y.createElement(le,null,y.createElement(V,{...s}),o!==\"loading\"&&y.createElement(ue,null,o===\"error\"?y.createElement(_,{...s}):y.createElement(w,{...s})))};var ye=e=>`\n0% {transform: translate3d(0,${e*-200}%,0) scale(.6); opacity:.5;}\n100% {transform: translate3d(0,0,0) scale(1); opacity:1;}\n`,ge=e=>`\n0% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}\n100% {transform: translate3d(0,${e*-150}%,-1px) scale(.6); opacity:0;}\n`,he=\"0%{opacity:0;} 100%{opacity:1;}\",xe=\"0%{opacity:1;} 100%{opacity:0;}\",be=B(\"div\")`\n display: flex;\n align-items: center;\n background: #fff;\n color: #363636;\n line-height: 1.3;\n will-change: transform;\n box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05);\n max-width: 350px;\n pointer-events: auto;\n padding: 8px 10px;\n border-radius: 8px;\n`,Se=B(\"div\")`\n display: flex;\n justify-content: center;\n margin: 4px 10px;\n color: inherit;\n flex: 1 1 auto;\n white-space: pre-line;\n`,Ae=(e,t)=>{let s=e.includes(\"top\")?1:-1,[a,r]=b()?[he,xe]:[ye(s),ge(s)];return{animation:t?`${z(a)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`:`${z(r)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`}},F=l.memo(({toast:e,position:t,style:o,children:s})=>{let a=e.height?Ae(e.position||t||\"top-center\",e.visible):{opacity:0},r=l.createElement(M,{toast:e}),c=l.createElement(Se,{...e.ariaProps},T(e.message,e));return l.createElement(be,{className:e.className,style:{...a,...o,...e.style}},typeof s==\"function\"?s({icon:r,message:c}):l.createElement(l.Fragment,null,r,c))});import{css as Pe,setup as Oe}from\"goober\";import*as f from\"react\";Oe(f.createElement);var Ee=({id:e,className:t,style:o,onHeightUpdate:s,children:a})=>{let r=f.useCallback(c=>{if(c){let i=()=>{let d=c.getBoundingClientRect().height;s(e,d)};i(),new MutationObserver(i).observe(c,{subtree:!0,childList:!0,characterData:!0})}},[e,s]);return f.createElement(\"div\",{ref:r,className:t,style:o},a)},Re=(e,t)=>{let o=e.includes(\"top\"),s=o?{top:0}:{bottom:0},a=e.includes(\"center\")?{justifyContent:\"center\"}:e.includes(\"right\")?{justifyContent:\"flex-end\"}:{};return{left:0,right:0,display:\"flex\",position:\"absolute\",transition:b()?void 0:\"all 230ms cubic-bezier(.21,1.02,.73,1)\",transform:`translateY(${t*(o?1:-1)}px)`,...s,...a}},ve=Pe`\n z-index: 9999;\n > * {\n pointer-events: auto;\n }\n`,O=16,Ie=({reverseOrder:e,position:t=\"top-center\",toastOptions:o,gutter:s,children:a,containerStyle:r,containerClassName:c})=>{let{toasts:i,handlers:d}=D(o);return f.createElement(\"div\",{style:{position:\"fixed\",zIndex:9999,top:O,left:O,right:O,bottom:O,pointerEvents:\"none\",...r},className:c,onMouseEnter:d.startPause,onMouseLeave:d.endPause},i.map(p=>{let g=p.position||t,E=d.calculateOffset(p,{reverseOrder:e,gutter:s,defaultPosition:t}),x=Re(g,E);return f.createElement(Ee,{id:p.id,key:p.id,onHeightUpdate:d.updateHeight,className:p.visible?ve:\"\",style:x},p.type===\"custom\"?T(p.message,p):a?a(p):f.createElement(F,{toast:p,position:g}))}))};var _t=n;export{w as CheckmarkIcon,_ as ErrorIcon,V as LoaderIcon,F as ToastBar,M as ToastIcon,Ie as Toaster,_t as default,T as resolveValue,n as toast,D as useToaster,I as useToasterStore};\n//# sourceMappingURL=index.mjs.map","import e from\"void-elements\";var t=/\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\".*?\"|'.*?')/g;function n(n){var r={type:\"tag\",name:\"\",voidElement:!1,attrs:{},children:[]},i=n.match(/<\\/?([^\\s]+?)[/\\s>]/);if(i&&(r.name=i[1],(e[i[1]]||\"/\"===n.charAt(n.length-2))&&(r.voidElement=!0),r.name.startsWith(\"!--\"))){var s=n.indexOf(\"--\\x3e\");return{type:\"comment\",comment:-1!==s?n.slice(4,s):\"\"}}for(var a=new RegExp(t),c=null;null!==(c=a.exec(n));)if(c[0].trim())if(c[1]){var o=c[1].trim(),l=[o,\"\"];o.indexOf(\"=\")>-1&&(l=o.split(\"=\")),r.attrs[l[0]]=l[1],a.lastIndex--}else c[2]&&(r.attrs[c[2]]=c[3].trim().substring(1,c[3].length-1));return r}var r=/<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g,i=/^\\s*$/,s=Object.create(null);function a(e,t){switch(t.type){case\"text\":return e+t.content;case\"tag\":return e+=\"<\"+t.name+(t.attrs?function(e){var t=[];for(var n in e)t.push(n+'=\"'+e[n]+'\"');return t.length?\" \"+t.join(\" \"):\"\"}(t.attrs):\"\")+(t.voidElement?\"/>\":\">\"),t.voidElement?e:e+t.children.reduce(a,\"\")+\"\";case\"comment\":return e+\"\\x3c!--\"+t.comment+\"--\\x3e\"}}var c={parse:function(e,t){t||(t={}),t.components||(t.components=s);var a,c=[],o=[],l=-1,m=!1;if(0!==e.indexOf(\"<\")){var u=e.indexOf(\"<\");c.push({type:\"text\",content:-1===u?e:e.substring(0,u)})}return e.replace(r,function(r,s){if(m){if(r!==\"\")return;m=!1}var u,f=\"/\"!==r.charAt(1),h=r.startsWith(\"\\x3c!--\"),p=s+r.length,d=e.charAt(p);if(h){var v=n(r);return l<0?(c.push(v),c):((u=o[l]).children.push(v),c)}if(f&&(l++,\"tag\"===(a=n(r)).type&&t.components[a.name]&&(a.type=\"component\",m=!0),a.voidElement||m||!d||\"<\"===d||a.children.push({type:\"text\",content:e.slice(p,e.indexOf(\"<\",p))}),0===l&&c.push(a),(u=o[l-1])&&u.children.push(a),o[l]=a),(!f||a.voidElement)&&(l>-1&&(a.voidElement||a.name===r.slice(2,-1))&&(l--,a=-1===l?c:o[l]),!m&&\"<\"!==d&&d)){u=-1===l?c:o[l].children;var x=e.indexOf(\"<\",p),g=e.slice(p,-1===x?void 0:x);i.test(g)&&(g=\" \"),(x>-1&&l+u.length>=0||\" \"!==g)&&u.push({type:\"text\",content:g})}}),c},stringify:function(e){return e.reduce(function(e,t){return e+a(\"\",t)},\"\")}};export default c;\n//# sourceMappingURL=html-parse-stringify.module.js.map\n","export function warn() {\n if (console && console.warn) {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (typeof args[0] === 'string') args[0] = `react-i18next:: ${args[0]}`;\n console.warn(...args);\n }\n}\nconst alreadyWarned = {};\nexport function warnOnce() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' && alreadyWarned[args[0]]) return;\n if (typeof args[0] === 'string') alreadyWarned[args[0]] = new Date();\n warn(...args);\n}\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport function loadNamespaces(i18n, ns, cb) {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n}\nexport function loadLanguages(i18n, lng, ns, cb) {\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n}\nfunction oldI18nextHasLoadedNamespace(ns, i18n) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const lng = i18n.languages[0];\n const fallbackLng = i18n.options ? i18n.options.fallbackLng : false;\n const lastLng = i18n.languages[i18n.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = i18n.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 2;\n };\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18n.services.backendConnector.backend && i18n.isLanguageChangingTo && !loadNotPending(i18n.isLanguageChangingTo, ns)) return false;\n if (i18n.hasResourceBundle(lng, ns)) return true;\n if (!i18n.services.backendConnector.backend || i18n.options.resources && !i18n.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n}\nexport function hasLoadedNamespace(ns, i18n) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce('i18n.languages were undefined or empty', i18n.languages);\n return true;\n }\n const isNewerI18next = i18n.options.ignoreJSONStructure !== undefined;\n if (!isNewerI18next) {\n return oldI18nextHasLoadedNamespace(ns, i18n, options);\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n}\nexport function getDisplayName(Component) {\n return Component.displayName || Component.name || (typeof Component === 'string' && Component.length > 0 ? Component : 'Unknown');\n}","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape\n};\nexport function setDefaults() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n}\nexport function getDefaults() {\n return defaultOptions;\n}","let i18nInstance;\nexport function setI18n(instance) {\n i18nInstance = instance;\n}\nexport function getI18n() {\n return i18nInstance;\n}","import { setDefaults } from './defaults.js';\nimport { setI18n } from './i18nInstance.js';\nexport const initReactI18next = {\n type: '3rdParty',\n init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n });\n }\n getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n}\nexport function composeInitialProps(ForComponent) {\n return ctx => new Promise(resolve => {\n const i18nInitialProps = getInitialProps();\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(componentsInitialProps => {\n resolve({\n ...componentsInitialProps,\n ...i18nInitialProps\n });\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n}\nexport function getInitialProps() {\n const i18n = getI18n();\n const namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","import { useState, useEffect, useContext, useRef } from 'react';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace } from './utils.js';\nconst usePrevious = (value, ignore) => {\n const ref = useRef();\n useEffect(() => {\n ref.current = ignore ? ref.current : value;\n }, [value, ignore]);\n return ref.current;\n};\nexport function useTranslation(ns) {\n let props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce('You will need to pass in an i18next instance by using initReactI18next');\n const notReadyT = (k, optsOrDefaultValue) => {\n if (typeof optsOrDefaultValue === 'string') return optsOrDefaultValue;\n if (optsOrDefaultValue && typeof optsOrDefaultValue === 'object' && typeof optsOrDefaultValue.defaultValue === 'string') return optsOrDefaultValue.defaultValue;\n return Array.isArray(k) ? k[k.length - 1] : k;\n };\n const retNotReady = [notReadyT, {}, false];\n retNotReady.t = notReadyT;\n retNotReady.i18n = {};\n retNotReady.ready = false;\n return retNotReady;\n }\n if (i18n.options.react && i18n.options.react.wait !== undefined) warnOnce('It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.');\n const i18nOptions = {\n ...getDefaults(),\n ...i18n.options.react,\n ...props\n };\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n let namespaces = ns || defaultNSFromContext || i18n.options && i18n.options.defaultNS;\n namespaces = typeof namespaces === 'string' ? [namespaces] : namespaces || ['translation'];\n if (i18n.reportNamespaces.addUsedNamespaces) i18n.reportNamespaces.addUsedNamespaces(namespaces);\n const ready = (i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n function getT() {\n return i18n.getFixedT(props.lng || null, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n }\n const [t, setT] = useState(getT);\n let joinedNS = namespaces.join();\n if (props.lng) joinedNS = `${props.lng}${joinedNS}`;\n const previousJoinedNS = usePrevious(joinedNS);\n const isMounted = useRef(true);\n useEffect(() => {\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n isMounted.current = true;\n if (!ready && !useSuspense) {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => {\n if (isMounted.current) setT(getT);\n });\n } else {\n loadNamespaces(i18n, namespaces, () => {\n if (isMounted.current) setT(getT);\n });\n }\n }\n if (ready && previousJoinedNS && previousJoinedNS !== joinedNS && isMounted.current) {\n setT(getT);\n }\n function boundReset() {\n if (isMounted.current) setT(getT);\n }\n if (bindI18n && i18n) i18n.on(bindI18n, boundReset);\n if (bindI18nStore && i18n) i18n.store.on(bindI18nStore, boundReset);\n return () => {\n isMounted.current = false;\n if (bindI18n && i18n) bindI18n.split(' ').forEach(e => i18n.off(e, boundReset));\n if (bindI18nStore && i18n) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, boundReset));\n };\n }, [i18n, joinedNS]);\n const isInitial = useRef(true);\n useEffect(() => {\n if (isMounted.current && !isInitial.current) {\n setT(getT);\n }\n isInitial.current = false;\n }, [i18n, keyPrefix]);\n const ret = [t, i18n, ready];\n ret.t = t;\n ret.i18n = i18n;\n ret.ready = ready;\n if (ready) return ret;\n if (!ready && !useSuspense) return ret;\n throw new Promise(resolve => {\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, () => resolve());\n } else {\n loadNamespaces(i18n, namespaces, () => resolve());\n }\n });\n}","import { createElement, useMemo } from 'react';\nimport { I18nContext } from './context.js';\nexport function I18nextProvider(_ref) {\n let {\n i18n,\n defaultNS,\n children\n } = _ref;\n const value = useMemo(() => ({\n i18n,\n defaultNS\n }), [i18n, defaultNS]);\n return createElement(I18nContext.Provider, {\n value\n }, children);\n}"],"names":["captureException","exception","captureContext","configureScope","callback","withScope","DEFAULT_BREADCRUMBS","Hub","__init","this","_stack","constructor","client","scope","_version","prototype","call","getStackTop","bindClient","isOlderThan","version","setupIntegrations","pushScope","getScope","getStack","push","getClient","popScope","length","pop","hint","eventId","_lastEventId","event_id","syntheticException","Error","_withClient","originalException","captureMessage","message","level","captureEvent","event","type","lastEventId","addBreadcrumb","breadcrumb","beforeBreadcrumb","maxBreadcrumbs","getOptions","mergedBreadcrumb","timestamp","finalBreadcrumb","setUser","user","setTags","tags","setExtras","extras","setTag","key","value","setExtra","extra","setContext","name","context","run","oldHub","makeMain","getIntegration","integration","_oO","__SENTRY_DEBUG__","id","startTransaction","customSamplingContext","_callExtensionMethod","traceHeaders","captureSession","endSession","_sendSessionUpdate","layer","session","getSession","setSession","startSession","release","environment","global","userAgent","navigator","getUser","currentSession","status","shouldSendDefaultPii","options","Boolean","sendDefaultPii","method","args","sentry","getMainCarrier","__SENTRY__","extensions","apply","carrier","hub","undefined","registry","getHubFromCarrier","setHubOnCarrier","getCurrentHub","hasHubOnCarrier","activeDomain","domain","active","registryHubTopStack","_Oo","getHubFromActiveDomain","Scope","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_attachments","_user","_tags","_extra","_contexts","_sdkProcessingMetadata","static","newScope","_level","_span","_session","_transactionName","_fingerprint","_requestSession","addScopeListener","addEventProcessor","_notifyScopeListeners","getRequestSession","setRequestSession","requestSession","setFingerprint","fingerprint","setLevel","setTransactionName","setSpan","span","getSpan","getTransaction","transaction","update","updatedScope","Object","keys","contexts","clear","maxCrumbs","Math","min","slice","clearBreadcrumbs","addAttachment","attachment","getAttachments","clearAttachments","applyToEvent","trace","getTraceContext","transactionName","_applyFingerprint","breadcrumbs","sdkProcessingMetadata","_notifyEventProcessors","getGlobalEventProcessors","setSDKProcessingMetadata","newData","processors","index","resolve","reject","processor","result","log","then","final","forEach","Array","isArray","concat","addGlobalEventProcessor","makeSession","startingTime","sid","init","started","duration","errors","ignoreDuration","toJSON","Date","toISOString","did","attrs","ip_address","ipAddress","user_agent","sessionToJSON","updateSession","email","username","closeSession","errorCallback","activeTransaction","logger","setStatus","toTraceparent","sample","samplingContext","sampled","setMetadata","transactionSampling","sampleRate","tracesSampler","rate","Number","parentSampled","tracesSampleRate","is","JSON","stringify","isValidSampleRate","random","op","_startTransaction","transactionContext","initSpanRecorder","_experiments","startIdleTransaction","idleTimeout","finalTimeout","onScope","addExtensionMethods","_addTracingExtensions","packageToIntegrationMapping","mongodb","module","Mongo","mongoose","mysql","Mysql","pg","Postgres","mappedPackages","filter","moduleName","map","pkg","e","p","integrations","_autoloadDatabaseIntegrations","DEFAULT_IDLE_TIMEOUT","DEFAULT_FINAL_TIMEOUT","IdleTransactionSpanRecorder","_pushActivity","_popActivity","transactionSpanId","maxlen","super","add","spanId","finish","endTimestamp","IdleTransaction","activities","__init2","_heartbeatCounter","__init3","_finished","__init4","_beforeFinishCallbacks","_idleHub","_idleTimeout","_finalTimeout","_onScope","clearActiveTransaction","_startIdleTimeout","setTimeout","spanRecorder","spans","keepSpan","startTimestamp","registerBeforeFinishCallback","_pingHeartbeat","_cancelIdleTimeout","_idleTimeoutID","clearTimeout","_beat","heartbeatString","join","_prevHeartbeatString","SpanRecorder","_maxlen","Span","traceId","substring","__init5","__init6","data","spanContext","parentSpanId","description","startChild","childSpan","logMessage","metadata","spanMetadata","setData","setHttpStatus","httpStatus","String","spanStatus","spanStatusfromHttpCode","isSuccess","replace","sampledString","toContext","updateWithContext","parent_span_id","span_id","trace_id","start_timestamp","Transaction","_measurements","_hub","_name","_trimEnd","trimEnd","newName","source","setName","setMeasurement","unit","newMetadata","finishedSpans","s","reduce","prev","current","baggage","getBaggage","transaction_info","measurements","recordDroppedEvent","existingBaggage","finalBaggage","_populateBaggageWithSentryValues","publicKey","public_key","getDsn","sample_rate","toLocaleString","useGrouping","maximumFractionDigits","segment","user_segment","hasTracingEnabled","maybeOptions","getActiveTransaction","maybeHub","msToSec","time","BAGGAGE_HEADER_NAME","SENTRY_BAGGAGE_KEY_PREFIX_REGEX","createBaggage","initItems","baggageString","mutable","getSentryBaggageItems","isBaggageMutable","parseBaggageHeader","inputBaggageValue","includeThirdPartyEntries","split","entry","trim","test","baggageObj","curr","val","baggageKey","decodeURIComponent","mergeAndSerializeBaggage","incomingBaggage","thirdPartyBaggageHeader","headerBaggage","thirdPartyHeaderBaggage","baggageEntry","encodeURIComponent","newVal","serializeBaggage","parseBaggageSetMutability","rawBaggageValue","sentryTraceHeader","isSentryBaggageEmpty","setBaggageImmutable","htmlTreeAsString","elem","keyAttrs","currentElem","out","height","len","sepLength","nextStr","_htmlElementAsString","parentNode","reverse","el","className","classes","attr","i","tagName","toLowerCase","keyAttrPairs","keyAttr","getAttribute","keyAttrPair","allowedAttrs","getLocationHref","document","location","href","oO","_nullishCoalesce","lhs","rhsFn","fallbackGlobalObject","getGlobalObject","g","window","self","getGlobalSingleton","creator","obj","handlers","instrumented","instrument","console","originalConsoleMethod","triggerHandlers","instrumentConsole","triggerDOMHandler","bind","globalDOMEventHandler","makeDOMEventHandler","addEventListener","target","proto","hasOwnProperty","originalAddEventListener","listener","__sentry_instrumentation_handlers__","handlerForType","refCount","handler","originalRemoveEventListener","instrumentDOM","xhrproto","XMLHttpRequest","originalOpen","xhr","url","xhrInfo","__sentry_xhr__","toUpperCase","match","__sentry_own_request__","onreadystatechangeHandler","readyState","status_code","now","onreadystatechange","original","readyStateArgs","originalSend","body","instrumentXHR","originalFetch","handlerData","fetchData","getFetchMethod","getFetchUrl","response","error","instrumentFetch","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","from","lastHref","to","history","instrumentHistory","_oldOnErrorHandler","onerror","msg","line","column","arguments","_oldOnUnhandledRejectionHandler","onunhandledrejection","addInstrumentationHandler","fetchArgs","Request","debounceTimerID","lastCapturedEvent","globalListener","isContentEditable","shouldSkipDOMEvent","previous","shouldShortcircuitPreviousDebounce","objectToString","toString","isError","wat","isInstanceOf","isBuiltin","ty","isErrorEvent","isDOMError","isDOMException","isString","isPrimitive","isPlainObject","isEvent","Event","isElement","Element","isRegExp","isThenable","isSyntheticEvent","isNaN","base","_e","CONSOLE_LEVELS","consoleSandbox","originalConsole","wrappedLevels","originalWrappedFunc","__sentry_original__","makeLogger","enabled","enable","disable","uuid4","crypto","msCrypto","randomUUID","getRandomByte","getRandomValues","Uint8Array","c","parseUrl","query","fragment","host","path","protocol","relative","getFirstException","values","getEventDescription","firstException","addExceptionTypeValue","addExceptionMechanism","newMechanism","currentMechanism","mechanism","handled","mergedData","stripUrlQueryAndFragment","urlPath","checkOrSetAlreadyCaught","__sentry_captured__","err","isNodeEnv","__SENTRY_BROWSER_BUNDLE__","process","dynamicRequire","mod","request","require","loadModule","cwd","normalize","input","depth","Infinity","maxProperties","visit","ERROR","normalizeToSize","object","maxSize","normalized","encodeURI","utf8Length","memo","hasWeakSet","WeakSet","inner","has","delete","splice","memoBuilder","memoize","unmemoize","includes","stringified","_events","getPrototypeOf","stringifyValue","startsWith","valueWithToJSON","numAdded","visitable","visitKey","visitValue","fill","replacementFactory","wrapped","markFunctionWrapped","addNonEnumerableProperty","defineProperty","writable","configurable","getOriginalFunction","func","urlEncode","convertToPlainObject","stack","getOwnProperties","newObj","serializeEventTarget","currentTarget","CustomEvent","detail","extractedProps","property","extractExceptionKeysForMessage","maxLength","sort","includedKeys","serialized","dropUndefinedKeys","inputValue","_dropUndefinedKeys","Map","memoizationMap","memoVal","get","returnValue","set","item","createStackParser","parsers","sortedParsers","a","b","skipFirst","frames","parser","frame","localStack","firstFrameFunction","function","lastFrameFunction","indexOf","filename","stripSentryFramesAndReverse","stackParserFromStackParserOptions","stackParser","defaultFunctionName","getFunctionName","fn","truncate","str","max","substr","safeJoin","delimiter","output","isMatchingPattern","pattern","supportsFetch","Headers","Response","isNativeFetch","supportsNativeFetch","fetch","doc","sandbox","createElement","hidden","head","appendChild","contentWindow","removeChild","supportsHistory","chrome","isChromePackagedApp","app","runtime","hasHistoryApi","pushState","replaceState","States","resolvedSyncPromise","SyncPromise","rejectedSyncPromise","reason","_","_state","PENDING","_handlers","executor","_resolve","_reject","onfulfilled","onrejected","_executeHandlers","catch","finally","onfinally","isRejected","_setResult","RESOLVED","REJECTED","state","_value","cachedHandlers","dateTimestampSource","nowSeconds","platformPerformance","performance","getNodePerformance","timeOrigin","getBrowserPerformance","timestampSource","dateTimestampInSeconds","timestampInSeconds","timestampWithMs","_browserPerformanceTimeOriginMode","browserPerformanceTimeOrigin","threshold","performanceNow","dateNow","timeOriginDelta","abs","timeOriginIsReliable","navigationStart","timing","navigationStartDelta","SENTRY_RELEASE","_a","fnToStr","Function","previousComparisons","equal","check","aTag","previouslyCompared","aKeys","definedKeys","bKeys","keyCount","k","size","aIterator","entries","isMap","info","next","done","aKey","aValue","byteLength","aCode","full","suffix","fromIndex","endsWith","nativeCodeSuffix","isDefinedKey","bSet","Set","exports","__esModule","instance","Constructor","TypeError","_defineProperty","_defineProperty2","default","defineProperties","props","descriptor","enumerable","protoProps","staticProps","_assign","_assign2","_setPrototypeOf2","_interopRequireDefault","_create2","_typeof3","subClass","superClass","__proto__","_typeof2","ReferenceError","_iterator2","_symbol2","_typeof","$Object","P","D","create","it","desc","isObject","toIObject","toLength","toAbsoluteIndex","IS_INCLUDES","$this","O","core","__e","aFunction","that","getKeys","gOPS","pIE","getSymbols","f","symbols","isEnum","ctx","hide","$export","own","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","IS_BIND","B","IS_WRAP","W","expProto","C","virtual","R","U","exec","__g","dP","createDesc","documentElement","cof","propertyIsEnumerable","arg","setToStringTag","IteratorPrototype","NAME","LIBRARY","redefine","Iterators","$iterCreate","ITERATOR","BUGGY","KEYS","VALUES","returnThis","Base","DEFAULT","IS_SET","FORCED","methods","getMethod","kind","TAG","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","meta","KEY","NEED","fastKey","getWeak","onFreeze","DESCRIPTORS","toObject","IObject","$assign","assign","A","Symbol","K","T","aLen","j","anObject","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","src","open","write","lt","close","Properties","IE8_DOM_DEFINE","toPrimitive","Attributes","gOPD","getOwnPropertyDescriptor","gOPN","windowNames","getOwnPropertyNames","getWindowNames","$keys","hiddenKeys","getOwnPropertySymbols","ObjectProto","arrayIndexOf","names","fails","exp","bitmap","setPrototypeOf","buggy","def","tag","stat","shared","uid","SHARED","store","mode","copyright","toInteger","defined","TO_STRING","pos","l","charCodeAt","charAt","ceil","floor","valueOf","px","wksExt","$Symbol","USE_SYMBOL","addToUnscopables","step","iterated","_t","_i","_k","Arguments","$getPrototypeOf","$at","point","$fails","wks","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$GOPS","$DP","$JSON","_stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","setter","findChild","setSymbolDesc","protoDesc","wrap","sym","isSymbol","iterator","$defineProperty","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","TO_STRING_TAG","DOMIterables","Collection","__self__","DOMException","support","Blob","viewClasses","isArrayBufferView","ArrayBuffer","isView","normalizeName","normalizeValue","iteratorFor","items","shift","headers","append","header","consumed","bodyUsed","Promise","fileReaderReady","reader","onload","readBlobAsArrayBuffer","blob","FileReader","promise","readAsArrayBuffer","bufferClone","buf","view","buffer","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","rejected","arrayBuffer","text","readAsText","readBlobAsText","chars","fromCharCode","readArrayBufferAsText","formData","decode","json","parse","oldValue","thisArg","credentials","signal","upcased","normalizeMethod","referrer","form","bytes","parseHeaders","rawHeaders","parts","bodyInit","ok","statusText","clone","redirectStatuses","redirect","RangeError","aborted","abortXhr","abort","getAllResponseHeaders","responseURL","responseText","ontimeout","onabort","withCredentials","responseType","setRequestHeader","removeEventListener","send","polyfill","ponyfill","invariant","condition","LineRegExp","getLocation","position","lastLineStart","matchAll","printSourceLocation","sourceLocation","firstLineColumnOffset","locationOffset","padStart","lineIndex","lineOffset","lineNum","columnOffset","columnNum","locationStr","lines","locationLine","subLineIndex","subLineColumnNum","subLines","printPrefixedLines","subLine","existingLines","padLen","prefix","GraphQLError","rawArgs","_this$nodes","_nodeLocations$","_ref","nodes","positions","originalError","firstArg","toNormalizedOptions","undefinedIfEmpty","nodeLocations","node","loc","start","locations","originalExtensions","captureStackTrace","toStringTag","formattedError","array","syntaxError","DirectiveLocation","TokenKind","Lexer","startOfFileToken","lastToken","token","lineStart","advance","lookahead","nextToken","readNextToken","end","isUnicodeScalarValue","code","isSupplementaryCodePoint","isLeadingSurrogate","isTrailingSurrogate","printCodePointAt","lexer","codePointAt","char","fromCodePoint","createToken","col","bodyLength","readComment","readBlockString","readString","readNumber","readName","firstCode","isFloat","readDigits","chunkStart","escape","readEscapedUnicodeVariableWidth","readEscapedUnicodeFixedWidth","readEscapedCharacter","readHexDigit","read16BitHexCode","trailingCode","currentLine","blockLines","Parser","sourceObj","_lexer","_options","parseName","expectToken","parseDocument","definitions","many","parseDefinition","peek","parseOperationDefinition","hasDescription","peekDescription","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseFragmentDefinition","parseTypeSystemExtension","unexpected","operation","variableDefinitions","directives","selectionSet","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","optionalMany","parseVariableDefinition","variable","parseVariable","parseTypeReference","defaultValue","expectOptionalToken","parseConstValueLiteral","parseConstDirectives","selections","parseSelection","parseFragment","parseField","nameOrAlias","alias","parseArguments","isConst","parseConstArgument","parseArgument","parseValueLiteral","hasTypeCondition","expectOptionalKeyword","parseFragmentName","typeCondition","parseNamedType","_this$_options","expectKeyword","allowLegacyFragmentVariables","parseList","parseObject","parseStringLiteral","varName","block","any","fields","parseObjectField","parseDirective","innerType","parseDescription","operationTypes","parseOperationTypeDefinition","interfaces","parseImplementsInterfaces","parseFieldsDefinition","delimitedMany","parseFieldDefinition","parseArgumentDefs","parseInputValueDef","types","parseUnionMemberTypes","parseEnumValuesDefinition","parseEnumValueDefinition","parseEnumValueName","getTokenDesc","parseInputFieldsDefinition","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","repeatable","parseDirectiveLocations","parseDirectiveLocation","startToken","_this$_options2","noLocation","getTokenKindDesc","atToken","openKind","parseFn","closeKind","delimiterKind","isPunctuatorTokenKind","docCache","fragmentSourceMap","printFragmentWarnings","experimentalFragmentVariables","string","processFragments","ast","seenKeys","fragmentDefinition","fragmentName","sourceKey","sourceKeySet","warn","cacheKey","parsed","workSet","endToken","stripLoc","gql","literals","gql_1","resetCaches","disableFragmentWarnings","enableExperimentalFragmentVariables","disableExperimentalFragmentVariables","factory","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","createTag","extendPrototype","sources","destination","sourcePrototype","getDescriptor","prop","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","pause","resume","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","play","seek","playing","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","createRegularArray","arr","Uint8ClampedArray","Float32Array","Int16Array","createSizedArray","_typeof$6","subframeEnabled","expressionsPlugin","expressionsInterfaces","idPrefix$1","isSafari","_shouldRoundValues","bmPow","pow","bmSqrt","sqrt","bmFloor","bmMax","bmMin","BMMath","ProjectInterface$1","propertyNames","absArr","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","bmRnd","round","styleDiv","element","top","left","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","totalTime","frameMultiplier","direction","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","h","v","r","q","t","RGBtoHSV","d","addSaturationToRGB","color","offset","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","setSubframeEnabled","getSubframeEnabled","setExpressionsPlugin","getExpressionsPlugin","setExpressionInterfaces","getExpressionInterfaces","setDefaultCurveSegments","getDefaultCurveSegments","setIdPrefix","getIdPrefix","createNS","createElementNS","_typeof$5","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","onmessage","postMessage","_workerSelf","setupWorker","Worker","URL","createObjectURL","createWorker","completeLayers","layers","comps","layerData","jLen","kLen","completed","hasMask","maskProps","masksProperties","pt","convertPathsToAbsoluteValues","findCompLayers","refId","completeShapes","shapes","completeText","comp","findComp","__used","ks","o","checkVersion","minimum","animVersionString","animVersion","checkText","minimumVersion","updateTextLayer","textLayer","documentData","iterateLayers","animationData","assets","checkChars","charData","ip","st","sr","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","checkShapes","completeClosingShapes","closed","cl","moduleOb","__complete","completeChars","dataFunctionManager","assetLoader","formatResponse","contentTypeHeader","getResponseHeader","load","fullPath","completeData","payload","animation","onComplete","onError","createProcess","loadAnimation","processId","origin","pathname","loadData","completeAnimation","anim","ImagePreloader","proxyImage","canvas","width","getContext","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","u","testImageLoaded","img","intervalId","setInterval","getBBox","_imageLoaded","clearInterval","createFootageData","ob","footageData","_footageLoaded","ImagePreloaderFactory","images","loadAssets","cb","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","destroy","getAsset","createImgData","crossOrigin","createImageData","setAttributeNS","_elementHelper","setCacheType","elementHelper","BaseEvent","triggerEvent","eventName","_cbs","callbacks","markerParser","parsePayloadLines","keysCount","_markers","markers","_marker","markerData","tm","dr","cm","__","ProjectInterface","registerComposition","compositions","_thisProjectFunction","nm","prepareFrame","xt","currentFrame","compInterface","renderers","registerRenderer","getRenderer","getRegisteredRenderer","_typeof$4","AnimationItem","isLoaded","currentRawFrame","frameRate","frameMult","playSpeed","playDirection","playCount","isPaused","autoplay","loop","renderer","animationID","timeCompleted","segmentPos","isSubframeEnabled","segments","_idle","_completedLoop","projectInterface","imagePreloader","audioController","configAnimation","onSetupError","onSegmentComplete","drawnFrameEvent","setParams","params","wrapper","container","animType","RendererClass","rendererSettings","globalData","defs","setProjectInterface","parseInt","autoloadSegments","initialSegment","setupAnimation","lastIndexOf","fileName","trigger","wrapperAttributes","attributes","getNamedItem","prerender","includeLayers","newLayers","fonts","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","animData","fr","searchExtraCompositions","updaFrameModifier","waitForFontsLoaded","triggerConfigError","rendererType","gotoFrame","resize","_width","_height","updateContainerSize","setSubframe","renderFrame","resetFrame","triggerRenderFrameError","togglePause","stop","setCurrentRawFrameValue","getMarkerData","markerName","marker","goToAndStop","isFrame","numValue","frameModifier","goToAndPlay","playSegments","advanceTime","nextValue","_isComplete","checkSegments","adjustSegment","setSpeed","setDirection","setSegment","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","setLoop","isLooping","getPath","getAssetData","show","getDuration","updateDocumentData","getElementByPath","animationManager","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","subtractPlayingCount","registerAnimation","addPlayingCount","activate","nowTime","elapsedTime","requestAnimationFrame","first","searchAnimations","standalone","animElements","getElementsByClassName","lenAnims","setAttribute","getElementsByTagName","innerText","div","freeze","unfreeze","getRegisteredAnimations","animations","BezierFactory","beziers","bezEasing","BezierEasing","kSampleStepSize","float32ArraySupported","aA1","aA2","calcBezier","aT","getSlope","points","_p","_mSampleValues","_precomputed","x","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","pooling","poolFactory","initialLength","_release","_length","_maxLength","pool","newElement","bezierLengthPool","addedLength","percents","lengths","segmentsLengthPool","totalLength","bezFunction","math","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","getBezierLength","pt1","pt2","pt3","pt4","ptCoord","perc","ptDistance","curveSegments","lastPoint","lengthData","BezierData","segmentLength","PointData","partial","partialLength","buildBezierData","storedData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","dir","bezierSegmentPoints","getSegmentsLength","shapeData","segmentsLength","pathV","pathO","pathI","getNewSegment","startPerc","endPerc","t0","t1","u0","u1","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","bez","initFrame","mathAbs","interpolateValue","frameNum","caching","newValue","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","lastIndex","keyframes","keyframesMetadata","endValue","nextKeyTime","keyTime","ti","ind","__fnct","getBezierEasing","y","n","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quaternionToEuler","slerp","createQuaternion","omega","cosom","sinom","scale0","scale1","ax","ay","az","aw","bx","by","bz","bw","acos","sin","quat","qx","qy","qz","qw","heading","atan2","attitude","asin","bank","c1","cos","c2","c3","s1","s2","s3","getValueAtCurrentTime","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","_mdf","processEffectsSequence","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","addDynamicProperty","ValueProperty","vel","getValue","MultiDimensionalProperty","KeyframedValueProperty","KeyframedMultidimensionalProperty","arrLen","PropertyFactory","getProp","slotManager","DynamicPropertyContainer","dynamicProperties","_isAnimated","iterateDynamicProperties","initDynamicPropertyContainer","pointPool","ShapePath","setPathData","setLength","doubleArrayLength","setXYAt","setTripleAt","vX","vY","oX","oY","iX","iY","newPath","vertices","outPoints","inPoints","cnt","shapePool","shapePath","shape","cloned","ShapeCollection","addShape","releaseShapes","shapeCollectionPool","newShapeCollection","shapeCollection","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","paths","localShapeCollection","shape1","shape2","shapesEqual","ShapeProperty","reset","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","p0","p1","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","sy","ir","convertToPath","convertStarToPath","convertPolygonToPath","or","os","rad","roundness","perimSegment","numPts","angle","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","v1","Matrix","_cos","_sin","_tan","tan","_rnd","rotate","mCos","mSin","rotateX","rotateY","rotateZ","shear","sx","skew","skewFromAxis","scale","sz","setTransform","m","translate","tx","tz","transform","a2","b2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_identityCalculated","a1","b1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","multiply","matrix","matrixProps","isIdentity","_identity","equals","matr","cloneFromProps","applyToPoint","z","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","_typeof$3","lottie","setLocation","setSubframeRendering","setPrefix","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","vars","queryString","pair","useWebWorker","setIDPrefix","__getFactory","scripts","myScript","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","PuckerAndBloatModifier","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","processShapes","shapePaths","_s","totalShapeLength","edges","newShapesData","addShapes","lastShape","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","amount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","py","pz","rx","ry","rz","_isDirty","applyToMatrix","mat","forceRender","precalculateMatrix","autoOriented","v2","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","RepeaterModifier","RoundCornersModifier","floatEqual","floatZero","lerp","lerpPoint","quadRoots","singleRoot","delta","polynomialCoefficients","p3","singlePoint","PolynomialBezier","linearize","pointEqual","coeffx","coeffy","extrema","intersectData","t2","box","boundingBox","cx","cy","splitData","boxIntersect","intersectsImpl","tolerance","intersections","maxRecursion","d1s","d2s","crossProduct","lineIntersection","start1","end1","start2","end2","v3","v4","polarOffset","pointDistance","hypot","ZigZagModifier","setPoint","outputBezier","amplitude","outAmplitude","inAmplitude","angO","angI","getPerpendicularVector","vector","rot","getProjectingAngle","cur","prevIndex","nextIndex","pVector","zigZagCorner","frequency","pointType","prevPoint","nextPoint","prevDist","nextDist","zigZagSegment","dist","normalAngle","linearOffset","offsetSegment","p1a","p1b","p2b","p2a","joinLines","seg1","seg2","lineJoin","miterLimit","angleOut","tangentAngle","angleIn","center","radius","intersection","getIntersection","intersect","pruneSegmentIntersection","outa","outb","pruneIntersections","offsetSegmentSplit","right","mid","flex","inflectionPoints","OffsetPathModifier","getFontProperties","fontData","styles","fStyle","fWeight","weight","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","unshift","resetElements","elements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","itemsTransform","cont","hasReloaded","copies","group","ix","reloadShapes","elems","transformData","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","rd","currentV","currentI","currentO","closerV","distance","newPosPerc","derivative","denom","tcusp","square","root","p10","p11","p20","p21","bounds","bottom","other","shapeSegmentInverted","pointsType","count","ml","lj","inputBezier","multiSegments","lastSeg","multiSegment","FontManager","emptyChar","combinedCharacters","BLACK_FLAG_CODE_POINT","surrogateModifiers","setUpNode","font","family","fontFamily","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","offsetWidth","familyArray","enabledFamilies","trimFontOptions","parent","createHelper","helper","engine","fontProps","tHelper","fFamily","textContent","fClass","tCanvasHelper","OffscreenCanvas","measureText","getComputedTextLength","getCodePoint","codePoint","second","isRegionalCode","Font","typekitLoaded","_warned","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","charCode","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","isVariationSelector","fontPrototype","found","ch","list","cache","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","loaded","monoCase","sansCase","fPath","fOrigin","querySelectorAll","rel","sc","getCharData","_char","getFontByName","fName","_char2","fontName","doubleSize","singleSize","loadedCount","SlotManager","slotFactory","RenderableElement","slots","initRenderable","isInRange","isTransparent","renderableComponents","addRenderableComponent","component","removeRenderableComponent","prepareRenderableFrame","num","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","hideOnTransparent","renderRenderable","sourceRectAtTime","getLayerSize","textData","getBlendMode","blendModeEnums","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","EffectsManager","effects","ef","effectElements","effectItem","GroupEffect","BaseElement","FrameElement","FootageElement","imageLoader","initBaseData","AudioElement","_isPlaying","_canPlay","_currentTime","_volumeMultiplier","_previousVolume","_placeholder","lv","au","BaseRenderer","eff","checkMasks","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","layerInterface","maskManager","registerMaskInterface","effectsInterface","createEffectsInterface","registerEffectsInterface","shapeInterface","shapesData","itemsData","content","textInterface","setBlendMode","blendModeValue","bm","baseElement","layerElement","layerId","effectsManager","getType","prepareProperties","isVisible","_isParent","getBaseElement","FootageInterface","getFootageData","timeRemapped","totalVolume","volumeValue","checkLayers","buildItem","checkPendingElements","createItem","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","buildAllItems","pInterface","progressiveLoad","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","pendingElements","getElementById","pathValue","setupGlobalData","fontsContainer","animationItem","compSize","effectTypes","TRANSFORM_EFFECT","TransformElement","MaskElement","maskElement","viewData","solidPath","rect","expansor","feMorph","properties","currentMasks","maskType","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","mask","createLayerSolidPath","invRect","drawPath","maskedElement","initTransform","_matMdf","_localMatMdf","_opMdf","localMat","localOpacity","ao","renderTransform","finalMat","renderLocalTransform","localTransforms","lmat","localOp","opacity","searchEffectTransforms","renderableEffectsManager","transformEffects","getEffects","globalToLocal","transforms","ptNew","mHelper","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","featureSupport","svgLumaHidden","offscreenCanvas","registeredEffects$1","idPrefix","SVGEffects","filterManager","createFilter","filters","Effect","effect","countsAsEffect","registerEffect$1","SVGBaseElement","HierarchyElement","RenderableDOMElement","IImageElement","initElement","sourceRect","ProcessedElement","IShapeElement","initRendererElement","createContainerElements","matteElement","transformedElement","_sizeChanged","layerElementParent","td","matteMasks","gg","tt","ln","hd","cp","clipId","cpGroup","renderElement","destroyBaseElement","createRenderableComponents","getMatte","matteType","useElement","masker","createAlphaToLuminanceFilter","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","setMatte","initHierarchy","checkParenting","createContent","renderInnerContent","innerElem","pr","imagePreserveAspectRatio","addShapeToModifiers","shapeModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","searchProcessedElement","processedElements","addProcessedElement","lineCapEnum","lineJoinEnum","SVGShapeData","transformers","caches","lStr","lvl","SVGStyleData","pElem","msElem","DashProperty","dataProps","dashStr","dashArray","dashoffset","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGNoStyleData","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","SVGTransformData","comparePoints","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","maskId","opFill","lc","of","ms","ost","buildShapeString","_o","shapeString","SVGElementsRenderer","_identityMatrix","_matrixHelper","renderContentTransform","styleData","itemData","renderNoop","renderPath","pathStringTransformed","redraw","iterations","lLen","renderFill","styleElem","renderGradientStroke","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","createRenderFunction","SVGShapeElement","stylesList","animatedContents","LetterProps","sw","fc","TextProperty","_frameId","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","setElementStyles","render","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","charactersArray","shouldCombine","shouldCombineNext","currentChars","newLineFlag","letters","anchorGrouping","currentSize","currentPos","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","an","anIndexes","animatorJustifyOffset","animatorData","letterData","based","animators","indexes","fh","fs","fb","rn","totalChars","newInd","currentInd","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorProp","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","sm","getMult","textProperty","easer","tot","smoothness","newCharsFlag","divisor","getTextSelectorProp","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","TextAnimatorProperty","renderType","_hasMaskedPath","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","ITextElement","searchProperties","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","tanAngle","matrixHelper","renderedLettersCount","tLength","pi","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","letterM","letterP","defaultPropsArray","animatorFirstCharOffset","justifyOffsetMult","isNewLine","animatorOffset","atan","textAnimator","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","validateText","buildNewText","emptyShapeData","SVGTextLottieElement","textSpans","ISolidElement","NullElement","SVGRendererBase","ICompElement","SVGCompElement","supports3d","SVGRenderer","config","svgElement","ariaLabel","title","titleElement","titleId","descElement","descId","preserveAspectRatio","contentVisibility","viewBoxOnly","viewBoxSize","focusable","filterSize","runExpressions","destroyed","ShapeTransformManager","sequences","sequenceList","transform_key_count","singleShape","textContainer","buildTextContents","textArray","textContents","currentTextContent","buildShapeData","shapeItem","tSpan","usesGlyphs","cachedSpansLength","glyph","glyphElement","_debug","tElement","justify","textBox","bbox","renderedLetter","textSpan","findIndexByInd","appendElementInPos","elementIndex","tp","matteMask","nextElement","insertBefore","setElements","getElements","destroyElements","addTransformSequence","sequence","processSequence","processSequences","getNewKey","lumaLoader","lumaBuffer","lumaBufferCtx","svg","loadLuma","_svg","createLumaSvgFilter","createCanvas","loadLumaCanvas","getLumaCanvas","registeredEffects","CVEffects","registerEffect","CVMaskElement","hasMasks","CVBaseElement","canvasContext","beginPath","moveTo","lineTo","bezierCurveTo","save","clip","operationsMap","CVShapeData","transformsManager","styledShapes","styledShape","trNodes","CVShapeElement","CVTextElement","stroke","currentRender","sWidth","fValue","CVImageElement","CVSolidElement","CanvasRendererBase","CanvasContext","strokeStyle","lineCap","CVContextData","cArrPos","cTr","nativeContext","transformMat","currentOpacity","currentFillStyle","appliedFillStyle","currentStrokeStyle","appliedStrokeStyle","currentLineWidth","appliedLineWidth","currentLineCap","appliedLineCap","currentLineJoin","appliedLineJoin","appliedMiterLimit","currentMiterLimit","CVCompElement","CanvasRenderer","clearCanvas","dpr","devicePixelRatio","currentGlobalAlpha","contextData","ctxTransform","ctxOpacity","ctxFillStyle","ctxStrokeStyle","ctxLineWidth","ctxLineCap","ctxLineJoin","ctxMiterLimit","ctxFill","ctxFillRect","ctxStroke","HBaseElement","HSolidElement","HShapeElement","shapesContainer","currentBBox","HTextElement","textPaths","isMasked","HCameraElement","pe","_prevMat","HImageElement","HybridRendererBase","threeDElements","camera","HCompElement","HybridRenderer","createElements","buffers","bufferCanvas","bufferCanvas2","_isProxy","transformCanvas","blendMode","globalCompositeOperation","hideElement","showElement","clearRect","prepareLayer","bufferCtx","drawImage","getTransform","exitLayer","forceRealStack","restore","transformHelper","dashResetter","preTransforms","co","wi","da","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","currentStyle","coOp","grd","setLineDash","lineDashOffset","closePath","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","par","globalAlpha","rule","actionFlag","containerStyle","mozTransformOrigin","isDashed","elementWidth","elementHeight","elementRel","animationRel","offsetHeight","fillType","duplicate","newLength","forceRestore","currentContext","prevStack","saveOnNativeFlag","currentStack","newStack","setOpacity","trProps","checkBlendMode","tg","transformedElementStyle","matrixValue","webkitTransform","addEffects","backgroundColor","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","shapeBoundingBox","xMax","yMax","tempBoundingBox","b2ac","calculateF","calculateBoundingBox","expandStrokeBoundingBox","widthProperty","kfw","currentBoxContains","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","textColor","strokeWidth","lineHeight","tParent","tCont","children","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","margin","svgTransform","setup","perspectiveStyle","perspectiveElem","perspective","webkitPerspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","Image","imageElem","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","startPos","endPos","createThreeDContainer","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","overflow","cWidth","cHeight","floatingContainer","_createBaseContainerElements","_thisLayerFunction","pixelAspect","frameDuration","displayStartTime","numLayers","_typeof$2","seedRandom","startdenom","significance","ARC4","keylen","me","copy","flatten","typ","mixkey","seed","smear","stringseed","tostring","shortseed","entropy","browser","plugins","screen","autoseed","arc4","prng","int32","quick","pass","is_math_call","initialize$2","propTypes","SHAPE","_typeof$1","ExpressionManager","_lottieGlobal","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","sub","mul","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","clamp","mm","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","arr1","arr2","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","createPath","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","noOp","needsVelocity","_needsRandom","elemType","$bm_transform","thisProperty","valueAtTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","eval","numKeys","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","seedrandom","randSeed","posterizeTime","framesPerSecond","hasParent","executeExpression","frameExpressionId","__preventDeadCodeRemoval","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","MaskManagerInterface","MaskInterface","_mask","_data","_masksInterfaces","ExpressionPropertyInterface","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","getSpeedAtTime","propertyGroup","defaultGetter","UnidimensionalPropertyInterface","arrValue","MultidimensionalPropertyInterface","TransformExpressionInterface","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","getMatrix","toWorldMat","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","transformInterface","anchorPointDescriptor","anchor_point","startTime","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","propertyName","createGroupInterface","groupInterface","mn","_propertyGroup","createValueInterface","numProperties","np","en","expressionProperty","setGroupProperty","effectsData","ShapePathInterface","propertyIndex","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","transformInterfaceFactory","cix","contentsInterfaceFactory","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","_interfaceFunction","_sourceText","sourceText","stringValue","fillColor","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","footage","getInterface","expressionHelpers","searchExpressions","speed","_cachingAtTime","getStaticValueAtTime","addPropertyDecorator","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","shapeValue","lastTime","propertyGetShapeProp","trims","initialize$1","addDecorator","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","initialize","SVGComposableEffect","createMergeNode","resultId","ins","feMergeNode","feMerge","linearFilterValue","SVGTintFilter","linearFilter","matrixFilter","SVGFillFilter","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","globalFilterSize","feGaussianBlur","feOffset","feFlood","feComposite","colorBlack","colorWhite","groupPath","elemChildren","childNodes","removeAttribute","pathMasker","dasharrayValue","getTotalLength","lineLength","units","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","_svgMatteSymbols","SVGMatte3Effect","filterElem","SVGGaussianBlurEffect","TransformEffect","SVGTransformEffect","CVTransformEffect","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","symbol","sigma","dimensions","sigmaX","sigmaY","edgeMode","forceFrame","isUniformScale","scaleHeight","scaleWidth","ref","ref1","env","__NEXT_P","Loader","isInverted","viewBox","xmlns","linearGradient","stopColor","stopOpacity","fillRule","animateTransform","attributeName","dur","repeatCount","circle","_path","_path2","_extends","clipRule","DEFAULT_COLOR","AppHero","inverted","useTranslation","RastelTitleIcon","defaultMakeData","Trie","weakness","makeData","lookup","lookupArray","getChildTrie","isObjRef","weak","WeakMap","strong","child","MISSING_VALUE","idCounter","globalKey","Slot","hasValue","context_1","withValue","saved","noContext","defaultDispose","Cache","dispose","newest","oldest","getNode","older","newer","clean","parentEntrySlot","toArray","collection","maybeUnsubscribe","entryOrDep","unsubscribe","emptySetPool","assert","optionalMessage","valueGet","Entry","parents","childValues","dirtyChildren","dirty","recomputing","deps","mightBeDirty","rememberParent","recompute","forgetChildren","recomputeNewValue","subscribe","setDirty","maybeSubscribe","reportClean","setClean","reallyRecompute","reportDirty","_this","eachParent","forgetChild","forget","dependOn","dep","forgetDeps","reportDirtyChild","reportCleanChild","parentCount","parentWasClean","childValue","valueIs","removeDirtyChild","dc","EntryMethods","depsByKey","depend","dep_1","entryMethodName","m_1","makeDefaultMakeCacheKeyFunction","keyTrie","originalFunction","keyArgs","makeCacheKey","optimistic","dirtyKey","peekKey","forgetKey","getKey","cacheSlot","cacheInfoMap","getCacheInfo","forgetCache","rv","makeVar","listeners","broadcast","oldListeners","attach","onNextChange","attachCache","broadcastWatches","_createForOfIteratorHelperLoose","allowArrayLike","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_defineProperties","_createClass","hasSymbols","hasSymbol","getSymbol","observable","SymbolIterator","SymbolObservable","SymbolSpecies","getSpecies","ctor","Observable","isObservable","hostReportError","enqueue","cleanupSubscription","subscription","cleanup","_cleanup","closeSubscription","_observer","_queue","notifySubscription","observer","onNotify","queue","flushSubscription","Subscription","subscriber","subscriptionObserver","SubscriptionObserver","_subscription","_proto2","complete","_subscriber","_proto3","_this2","_this3","_this4","hasSeed","acc","_this5","_len","_key","startNext","flatMap","_this6","subscriptions","outer","completeIfDone","_step","_iterator","_len2","_key2","getFragmentQueryDocument","actualFragmentName","fragments","definition","__DEV__","createFragmentMap","symTable","getFragmentFromSelection","selection","fragmentMap","makeReference","__ref","isReference","valueToObjectRepresentation","argObj","variables","isIntValue","isFloatValue","isBooleanValue","isStringValue","isObjectValue","nestedArgObj_1","isVariable","variableValue","isListValue","listValue","nestedArgArrayObj","isEnumValue","isNullValue","KNOWN_DIRECTIVES","getStoreKeyName","fieldName","filterKeys","filteredArgs_1","completeFieldName","stringifiedArgs","setStringify","stringifyReplacer","argumentsObjectFromField","field","argObj_1","resultKeyNameFromField","getTypenameFromResult","__typename","typename","isInlineFragment","checkDocument","operations","getOperationDefinition","getOperationName","getFragmentDefinitions","getQueryDefinition","queryDef","getMainDefinition","queryDoc","getDefaultValues","defaultValues","passthrough","forward","toLink","ApolloLink","isTerminating","link","LinkError","_super","empty","links","leftLink","rightLink","execute","starting","createOperation","transformedOperation","operationName","transformOperation","OPERATION_FIELDS","validateOperation","firstLink","nextLink","setOnError","BREAK","visitor","visitorKeys","enterLeaveMap","getEnterLeaveForKind","inArray","edits","ancestors","isLeaving","isEdited","editOffset","editKey","editValue","arrayKey","getOwnPropertyDescriptors","_enterLeaveMap$get","_enterLeaveMap$get2","devAssert","inspect","visitFn","leave","enter","_node$kind","kindVisitor","serializeFetchParameter","label","parseError","throwServerError","statusCode","escapedRegExp","escapedReplacer","escapeSequences","print","printDocASTReducer","Name","Variable","Document","OperationDefinition","varDefs","VariableDefinition","SelectionSet","Field","argsLine","indent","Argument","FragmentSpread","InlineFragment","FragmentDefinition","IntValue","FloatValue","StringValue","isBlockString","BooleanValue","NullValue","EnumValue","ListValue","ObjectValue","ObjectField","Directive","NamedType","ListType","NonNullType","SchemaDefinition","OperationTypeDefinition","ScalarTypeDefinition","ObjectTypeDefinition","FieldDefinition","hasMultilineItems","InputValueDefinition","InterfaceTypeDefinition","UnionTypeDefinition","EnumTypeDefinition","EnumValueDefinition","InputObjectTypeDefinition","DirectiveDefinition","SchemaExtension","ScalarTypeExtension","ObjectTypeExtension","InterfaceTypeExtension","UnionTypeExtension","EnumTypeExtension","InputObjectTypeExtension","maybeArray","separator","_maybeArray$filter$jo","maybeString","_maybeArray$some","some","fallbackHttpConfig","http","includeQuery","includeExtensions","accept","defaultPrinter","printer","selectHttpOptionsAndBodyInternal","configs","headersToLowerCase","normalized_1","fromError","errorValue","backupFetch","createHttpLink","linkOptions","uri","preferredFetch","_b","useGETForQueries","_c","includeUnusedVariables","requestOptions","fetcher","checkFetcher","linkConfig","fetchOptions","chosenURI","fallbackURI","selectURI","clientAwarenessHeaders","clientAwareness","name_1","controller","contextHeaders","contextConfig","unusedNames_1","AbortController","createSignalIfSupported","_controller","_d","queryParams","addQueryParam","serializedVariables","serializedExtensions","preFragment","fragmentStart","queryParamsPrefix","newURI","rewriteURIForGET","bodyText","HttpLink","shouldInclude","directive","isInclusionDirective","directiveArguments","directiveName","ifArgument","ifValue","getInclusionDirectives","every","evaledValue","hasDirectives","getDirectiveNames","hasClientExports","mergeDeep","mergeDeepArray","merger","DeepMerger","merge","defaultReconciler","reconciler","pastCopies","targetValue","shallowCopyForMerge","isFrozen","hasOwn","defaultDataIdFromObject","_id","keyObject","defaultConfig","dataIdFromObject","addTypename","resultCaching","canonizeResults","shouldCanonizeResults","TypeOrFieldNameRegExp","fieldNameFromStoreName","storeFieldName","selectionSetMatchesResult","storeValueIsStoreObject","stringifyCanon","stringifyCache","ObjectCanon","known","canUse","passes","keysByJSON","admit","isKnown","shallowCopy","proto_1","array_1","sortedKeys","firstValueIndex_1","sorted","obj_1","canonicalStringify","resetCanonicalStringify","canonical","asyncMap","mapFn","catchFn","activeCallbackCount","promiseQueue","makeCallback","examiner","delegate","both","caught","graphQLResultHasError","filterInPlace","TYPENAME_FIELD","isEmpty","nullIfDocIsEmpty","fragmentDef","getFragmentDefinition","getDirectiveMatcher","removeDirectivesFromDocument","variablesInUse","variablesToRemove","fragmentSpreadsInUse","fragmentSpreadsToRemove","modifiedDoc","remove","getAllFragmentSpreadsFromSelectionSet","frag","argMatcher","argument","aConfig","getArgumentMatcher","varDef","argConfig","argMatchCount_1","removeArgumentsFromDocument","removeFragmentSpreadFromDocument","addTypenameToDocument","added","connectionRemoveConfig","willRemove","allFragments","buildQueryFromSelectionSet","prefixCounts","makeUniqueId","iterateObserversSafely","observers","observersWithMethod","obs","fixObservableSubclass","subclass","species","Concast","addObserver","removeObserver","addCount","latest","cancel","iterable","deliverLastMessage","nextOrError","quietly","called","once","cloneDeep","cloneDeepHelper","seen","copy_1","copy_2","ObservableQuery","queryManager","queryInfo","subObserver","defaultSubscriptionObserverErrorCallback","last","reobserve","tearDownQuery","isTornDown","initialFetchPolicy","fetchPolicy","queryId","generateQueryId","opDef","queryName","removeQuery","getCurrentResult","saveAsLastResult","lastResult","getLastResult","networkStatus","loading","hasForcedResolvers","diff","getDiff","returnPartialData","partialRefetch","logMissingFieldErrors","missing","updateLastResult","isDifferentFromLastResult","newResult","getLast","variablesMustMatch","getLastError","resetLastResults","resetQueryStoreErrors","resetErrors","refetch","reobserveOptions","pollInterval","resetLastWrite","fetchMore","fetchMoreOptions","combinedOptions","qid","originalNetworkStatus","notifyOnNetworkStatusChange","observe","updatedQuerySet","fetchQuery","fetchMoreResult","batch","updateQuery","writeQuery","onWatchUpdated","watch","reobserveCacheFirst","subscribeToMore","startGraphQLSubscription","subscriptionData","setOptions","newOptions","setVariables","broadcastQueries","startPolling","updatePolling","stopPolling","applyNextFetchPolicy","nextFetchPolicy","newNetworkStatus","setObservableQuery","fetchQueryObservable","ssrMode","pollingInfo","interval","maybeFetch","poll","timeout","assumeImmutableResults","useDisposableConcast","oldVariables","oldFetchPolicy","mergedOptions","mergeOptions","concast","reportResult","reportError","lastError","errorResult","graphQLErrors","hasObservers","stopQuery","obsQuery","LocalState","resolvers","fragmentMatcher","addResolvers","setFragmentMatcher","resolverGroup","setResolvers","getResolvers","runResolvers","remoteResult","onlyRunForcedResolvers","resolveDocument","localResult","getFragmentMatcher","clientQuery","serverQuery","removeClientSetsFromDocument","prepareContext","getCacheKey","identify","addExportedVariables","buildRootValueFromCache","exportedVariables","shouldForceResolvers","forceResolvers","rootValue","mainDefinition","definitionOperation","defaultOperationType","execContext","resolveSelectionSet","resultsToMerge","resolveField","fieldResult","fragmentResult","all","aliasedFieldName","aliasUsed","defaultResult","resultPromise","resolverType","resolverMap","resolveSubSelectedArray","destructiveMethodCounts","wrapDestructiveCacheMethod","methodName","cancelNotifyTimeout","QueryInfo","lastRequestId","stopped","observableQuery","lastDiff","networkError","getDiffOptions","updateWatch","oq","updateLastDiff","setDiff","oldDiff","notifyTimeout","notify","oqListener","fromOptimisticTransaction","shouldNotify","watchOptions","watcher","lastWatch","lastWrite","shouldWrite","dmCount","markResult","cacheWriteBehavior","shouldWriteResult","errorPolicy","performTransaction","overwrite","diffOptions","markReady","markError","ignoreErrors","writeWithErrors","QueryManager","defaultOptions","queryDeduplication","onBroadcast","localState","queries","fetchCancelFns","transformCache","queryIdCounter","requestIdCounter","mutationIdCounter","inFlightLinkObservables","mutationStore","_info","stopQueryNoBroadcast","cancelPendingFetches","mutate","mutation","optimisticResponse","updateQueries","refetchQueries","awaitRefetchQueries","updateWithProxyFn","onQueryUpdated","_f","_g","keepRootFields","mutationId","mutationStoreValue","_h","generateMutationId","getVariables","sent","markMutationOptimistic","getObservableFromLink","storeResult","markMutationResult","removeOptimistic","cacheWrites","skipCache","dataId","updateQueries_1","updater","currentQueryResult","nextQueryResult","mutationResult","queryVariables","results_1","updateCache","asQuery","modify","DELETE","include","recordOptimisticTransaction","getQueryStore","transformed","transformDocument","forLink","transformForLink","cacheEntry_1","defaultVars","watchQuery","generateRequestId","stopQueryInStore","stopQueryInStoreNoBroadcast","clearStore","discardWatches","getObservableQueries","queryNamesAndDocs","legacyQueryOptions","getQuery","included","nameOrDoc","reFetchObservableQueries","includeStandby","observableQueryPromises","makeObservable","observablePromise_1","getLocalState","deduplication","inFlightLinkObservables_1","forceFetch","byVariables_1","varJson_1","getResultsFromLink","requestId","hasErrors","aqr","defaults","fromVariables","fetchQueryByPolicy","includedQueriesById","results","refetchWritePolicy","oldNetworkStatus","readCache","resultsFromCache","fromData","resolved","resultsFromLink","newContext","hasSuggestedDevtools","ApolloClient","resetStoreCallbacks","clearStoreCallbacks","ssrForceFetchDelay","connectToDevTools","__APOLLO_CLIENT__","typeDefs","clientAwarenessName","clientAwarenessVersion","disableNetworkFetches","resetStore","__APOLLO_DEVTOOLS_GLOBAL_HOOK__","nav","ua","devToolsHookCb","action","mutations","dataWithOptimisticResults","extract","readQuery","readFragment","writeFragment","__actionHookForDevTools","__requestRaw","onResetStore","onClearStore","serializedState","setLocalStateFragmentMatcher","setLink","newLink","ApolloCache","getFragmentDoc","updateResult","optimisticId","gc","read","rootId","updateFragment","MissingFieldError","delModifier","INVALIDATE","EntityStore","policies","rootIds","refs","getFieldValue","objectOrReference","maybeDeepFreeze","canRead","objOrRef","toReference","objOrIdOrRef","mergeIntoStore","storeObject","rootTypenamesById","Layer","dependOnExistence","existing","incoming","merged","storeObjectReconciler","fieldsToDirty_1","__exists","hasKeyArgs","changedFields_1","needToMerge_1","allDeleted_1","sharedDetails_1","readField","fieldNameOrOptions","fieldValue","storage","getStorage","getStoreFieldName","evict","limit","evicted","extraRootIds","getRootIdSet","__META","rest_1","retain","ids","snapshot","findChildRefIds","idsToRemove","root_1","found_1","workSet_1","keyMaker","CacheGroup","resetCaching","makeDepKey","maybeDependOnExistenceOfEntity","entityId","supportsResultCaching","Root","stump","Stump","storageTrie","addLayer","replay","removeLayer","ownStoreObject","parentStoreObject","fromParent","existingObject","incomingObject","existingValue","incomingValue","execSelectionSetKeyArgs","StoreReader","knownResults","compact","canon","executeSelectionSet","peekArgs","enclosingRef","execSelectionSetImpl","resultCacheMaxSize","varString","executeSubSelectedArray","execSubSelectedArrayImpl","resetCanon","diffQueryAgainstStore","rootRef","execResult","firstMissing","isFresh","handleMissing","resultName","rootIdsByTypename","fragmentMatches","finalResult","frozen","childResult","getTypenameFromStoreObject","assertSelectionSetForIdValue","tree","specifierInfoCache","lookupSpecifierInfo","spec","keyFieldsFnFromSpecifier","specifier","keyFieldsFn","collectSpecifierPaths","schemaKeyPath","extracted","extractKeyPath","extractKey","keyArgsFnFromSpecifier","keyArgsFn","collected","keyPath","firstKey","firstChar","variableName","varKeyPath","directiveName_1","find","directiveArgs","extractor","getSpecifierPaths","toMerge","paths_1","currentPath_1","reducer","argsFromFieldSpecifier","nullKeyFieldsFn","simpleKeyArgsFn","_args","mergeTrueFn","mergeObjects","mergeFalseFn","Policies","typePolicies","toBeAdded","supertypeMap","fuzzySubtypes","usingPossibleTypes","setRootTypename","possibleTypes","addPossibleTypes","addTypePolicies","partialContext","ROOT_QUERY","normalizeReadFieldOptions","policy","getTypePolicy","keyFn","specifierOrId","queryType","mutationType","subscriptionType","updateTypePolicy","keyFields","setMerge","getFieldPolicy","which","old","supertype","getSupertypeSet","subtype","RegExp","policy_1","supertypes","rest","inbox","createIfMissing","fieldPolicies","supertypeSet","typenameSupertypeSet","workQueue_1","maybeEnqueue_1","needToCheckFuzzySubtypes","checkingFuzzySubtypes","regExp","fuzzyString","fieldSpec","specifierOrString","directivesObj","storeKeyNameFromField","readOptions","makeFieldFunctionOptions","getReadFunction","getMergeFunction","parentTypename","childTypename","runMergeFunction","makeMergeObjectsFunction","readFieldArgs","argc","undefId","stringifyForDisplay","eType","iType","getContextFlavor","clientOnly","deferred","flavored","flavors","StoreWriter","writeToStore","operationDefinition","written","incomingById","processSelectionSet","mergeTree","fieldNodeSet","entityRef","applied","applyMerges","fieldsWithSelectionSets_1","hasSelectionSet_1","childTree","hasMergeFunction_1","existingRef","incomingObj","getChild","parentType","typeDotName","warnings","childTypenames","warnAboutDataLoss","result_1","flattenFields","resultFieldKey","getChildMergeTree","processFieldValue","maybeRecycleChildMergeTree","dataRef","sets","previous_1","mergeMergeTrees","mergeTreeIsEmpty","fieldMap","limitingTrie","inheritedContext","visitedNode","visited","if","getStorageArgs","e_1","i_1","getValue_1","eVal","iVal","aVal","emptyMergeTreePool","needToMergeMaps","remainingRightKeys_1","leftTree","InMemoryCache","watches","typenameDocumentCache","txCount","normalizeConfig","rootStore","optimisticData","resetResultCache","resetResultIdentities","previousReader","storeReader","storeWriter","maybeBroadcastWatch","broadcastWatch","immediate","idToRemove","newOptimisticData","perform","alreadyDirty","errorHandler","retriedSub","retriedResult","ErrorLink","errorLink","currentSelectedParkingId","parkingsInUnlockRadius","currentSelectedVendorId","apolloClient","authLink","getToken","authorization","handle","req","httpLink","createApolloClient","Parking","isSelected","isInUnlockRadius","parkingId","Vendor","ApolloProvider","ApolloContext","Consumer","Provider","CurrentUserQuery","RedeemForgotPasswordTokenMutation","LoginWithPasswordMutation","RegisterRiderMutation","AuthContext","createContext","getCurrentUser","currentUser","logout","login","signUp","changePassword","AuthProvider","auth","useState","setCurrentUser","password","authenticateUserWithPassword","sessionToken","saveToken","phoneNumber","isTermsAccepted","isOfLegalAge","companyId","clearToken","redeemUserPasswordResetToken","authenticatedItem","useProvideAuth","useAuth","useContext","V3_URL","V3_URL_REGEX","EXISTING_SCRIPT_MESSAGE","stripePromise","loadScript","Stripe","script","findScript","advancedFraudSignals","headOrBody","injectScript","initStripe","maybeStripe","stripe","_registerWrapper","registerWrapper","stripePromise$1","loadCalled","loadStripe","DEFAULT_LANGUAGE","ni18nConfig","supportedLngs","ns","GA_TRACKING_ID","Script","strategy","strokeLinecap","strokeLinejoin","routes","icon","MapIcon","ProfileIcon","zenRoutes","hideNavRoutes","BottomNav","router","useRouter","usedRoutes","organization","route","isActiveRoute","onClick","selectedRoute","isPhoneNumberVerified","shallow","Page","whitelistRoute","fullScreenAuthenticatedRoutes","authAgnosticRoutes","AppContainer","pageProps","hasCheckedAuth","setHasCheckedAuth","canRenderBottomNav","routeProtection","baseUrl","asPath","useEffect","Component","Toaster","MobileOnly","Lottie","mobileOnlyAnimationData","QRCodeSVG","imageSettings","excavate","consoleLogger","Logger","concreteLogger","debug","_len3","_key3","deprecate","_len4","_key4","debugOnly","baseLogger","EventEmitter","on","events","off","emit","defer","res","rej","makeString","getLastOfPath","cleanKey","canNotTraverseDeeper","getPathWithDefaults","deepExtend","regexEscape","_entityMap","deepFind","keySeparator","mix","joinedPath","getCleanedCode","ResourceStore","defaultNS","ignoreJSONStructure","addNamespaces","removeNamespaces","getResource","lng","addResource","silent","addResources","resources","addResourceBundle","deep","pack","removeResourceBundle","hasResourceBundle","getResourceBundle","compatibilityAPI","getDataByLanguage","hasLanguageSomeTranslations","postProcessor","addPostProcessor","translator","checkedLoadedFor","Translator","services","changeLanguage","language","exists","interpolation","extractFromKey","nsSeparator","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","matched","ki","looksLikeObjectPath","interpolator","nestingRegexp","lastKey","overloadTranslationOptionHandler","returnDetails","namespace","appendNamespaceToCIMode","usedKey","exactUsedKey","usedLng","usedNS","resUsedKey","resExactUsedKey","resType","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","extendTranslation","usedDefault","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValueSuffixOrdinalFallback","ordinal","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","getSuffixes","appendNamespaceToMissingKey","parseMissingKeyHandler","defaultVariables","skipInterpolation","skipOnVariables","nestBef","nb","interpolate","na","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","fallbackNS","needsZeroSuffixLookup","shouldUseIntlApi","needsContextHandling","codes","utils","hasLoadedNamespace","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","pluralSeparator","ordinalPrefix","contextKey","contextSeparator","possibleKey","returnNull","returnEmptyString","resourceStore","option","capitalize","LanguageUtil","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","specialCases","lowerCaseLng","part","cleanCode","isSupportedCode","nonExplicitSupportedLngs","getBestMatchFromCodes","cleanedLng","lngOnly","supportedLng","fallbacks","fallbackCode","fallbackCodes","addCode","nr","_rulesPluralsTypes","nonIntlVersions","intlVersions","suffixesOrder","zero","one","two","few","PluralResolver","compatibilityJSON","Intl","PluralRules","rules","numbers","plurals","createRules","addRule","getRule","needsPlural","resolvedOptions","pluralCategories","getPluralFormsOfKey","pluralCategory1","pluralCategory2","pluralCategory","prepend","number","select","getSuffixRetroCompatible","idx","noAbs","simplifyPluralSuffix","returnSuffix","deepFindWithDefaults","Interpolator","format","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexp","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","interpolationkey","missingInterpolationHandler","regex","safeValue","todo","matchedVar","temp","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","doReduce","createCachedFormatter","formatter","Formatter","formats","opt","NumberFormat","currency","datetime","DateTimeFormat","relativetime","RelativeTimeFormat","range","ListFormat","addCached","mem","formatName","formatOptions","formatStr","optStr","parseFormatStr","formatted","valOptions","formatParams","locale","Connector","backend","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","queueLoad","languages","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","pendingCount","pushPath","removePending","loadedKeys","fcName","tried","wait","resolver","prepareLoading","loadOne","fallbackValue","isUpdate","clb","opts","initImmediate","preload","partialBundledLanguages","tDescription","transformOptions","noop","I18n","inst","modules","external","isInitialized","isClone","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","initializedStoreOnce","loadResources","usedCallback","resolvedLanguage","setResolvedLanguage","reloadResources","use","li","lngInLngs","isLanguageChangingTo","setLngProps","setLng","cacheUserLanguage","async","detect","getFixedT","keyPrefix","fixedT","resultKey","setDefaultNamespace","lastLng","loadNotPending","loadState","precheck","preResult","loadNamespaces","loadLanguages","preloaded","newLngs","cloneInstance","forkResourceStore","createInstance","each","hasXMLHttpRequest","fetchApi","XmlHttpRequestApi","ActiveXObjectApi","ActiveXObject","addQueryString","paramName","fetchIt","omitFetchOptions","queryStringParams","customHeaders","reqOptions","requestWithFetch","crossDomain","overrideMimeType","requestWithXmlHttpRequest","_classCallCheck","_toPropertyKey","prim","_toPrimitive","getDefaults","loadPath","addPath","parsePayload","parseLoadPayload","reloadInterval","Backend","allOptions","_readAny","loadUrlLanguages","loadUrlNamespaces","maybePromise","isPromise","resolvedLoadPath","loadUrl","parseErr","finished","dataArray","resArray","_this$services","currentLanguage","isBrowser","localesPath","filePath","__assign","hasCustomBackend","getBackendConfig","react","useSuspense","i18n","flat","__rest","ar","nProgressConfig","showOnShallow","WrappedComponent","__ni18n_server__","__ni18n_client__","i18nInstance","useMemo","i18nextOptions","isMobileDevice","setIsMobileDevice","useSyncLanguage","getDefaultLanguage","NextNProgress","GoogleAnalytics","SDK_VERSION","installedIntegrations","filterDuplicates","accIntegration","getIntegrationsToSetup","defaultIntegrations","userIntegrations","userIntegration","integrationsNames","alwaysLastToRun","DEFAULT_IGNORE_ERRORS","InboundFilters","setupOnce","eventProcess","clientOptions","internalOptions","allowUrls","denyUrls","ignoreInternal","_mergeOptions","_isSentryError","_getPossibleEventMessages","_isIgnoredError","_getEventFilterUrl","_isDeniedUrl","_isAllowedUrl","_shouldDropEvent","stacktrace","_getLastValidUrl","__initStatic","originalFunctionToString","FunctionToString","SentryError","DSN_REGEX","dsn","withPassword","port","projectId","dsnFromComponents","components","projectMatch","dsnFromString","isValidProtocol","validateDsn","createEnvelope","addItemToEnvelope","envelope","newItem","forEachEnvelopeItem","envelopeItem","envelopeItemType","encodeUTF8","textEncoder","TextEncoder","encode","serializeEnvelope","envHeaders","itemHeaders","concatBuffers","createAttachmentEnvelopeItem","content_type","contentType","attachment_type","attachmentType","ITEM_TYPE_TO_DATA_CATEGORY_MAP","sessions","client_report","user_report","envelopeItemTypeToDataCategory","getBaseApiEndpoint","getEnvelopeEndpointWithUrlEncodedAuth","tunnelOrOptions","tunnel","sdkInfo","_metadata","sdk","_getIngestEndpoint","sentry_key","sentry_version","sentry_client","_encodedAuth","getSdkMetadataForEnvelopeHeader","createEventEnvelope","eventType","samplingMethod","packages","enhanceEventWithSdkInfo","envelopeHeaders","dynamicSamplingContext","sent_at","createEventEnvelopeHeaders","sample_rates","ALREADY_SEEN_ERROR","BaseClient","_integrations","_integrationsInitialized","_numProcessing","_outcomes","_dsn","_transport","transport","transportOptions","_process","eventFromException","_captureEvent","promisedEvent","eventFromMessage","_isEnabled","sendSession","getTransport","flush","_isClientDoneProcessing","clientFinished","transportFlushed","integrationIndex","getIntegrationById","integrationId","sendEvent","attachments","_sendEnvelope","createSessionEnvelope","category","sendClientReports","_updateSessionFromEvent","crashed","errored","exceptions","ex","sessionNonTerminal","ticked","_prepareEvent","normalizeDepth","normalizeMaxBreadth","prepared","_applyClientOptions","_applyIntegrationsMetadata","finalScope","evt","_normalizeEvent","maxBreadth","maxValueLength","integrationsArray","_processEvent","finalEvent","beforeSend","isTransaction","__sentry__","nullErr","_ensureBeforeSendRv","processedEvent","_clearOutcomes","outcomes","quantity","exceptionFromError","parseStackFrames","extractMessage","eventFromError","popSize","framesToPop","reactMinifiedRegexp","getPopSize","eventFromUnknownInput","attachStacktrace","isUnhandledRejection","domException","eventFromString","__serialized__","eventFromPlainObject","synthetic","validSeverityLevels","severityLevelFromString","BREADCRUMB_INTEGRATION_ID","Breadcrumbs","dom","_consoleBreadcrumb","_innerDomBreadcrumb","serializeAttribute","_domBreadcrumb","_xhrBreadcrumb","_fetchBreadcrumb","_historyBreadcrumb","parsedLoc","parsedFrom","parsedTo","cachedFetchImpl","getNativeFetchImplementation","fetchImpl","globalObject","BrowserClient","visibilityState","_flushOutcomes","breadcrumbIntegration","platform","discarded_events","sendBeacon","supports","keepalive","sendReport","UNKNOWN_FUNCTION","createFrame","lineno","colno","in_app","chromeRegex","chromeEvalRegex","geckoREgex","geckoEvalRegex","winjsRegex","defaultStackLineParsers","subMatch","extractSafariExtensionDetails","defaultStackParser","isSafariExtension","isSafariWebExtension","ignoreOnError","shouldIgnoreOnError","ignoreNextOnError","before","__sentry_wrapped__","sentryWrapped","wrappedArguments","DEFAULT_EVENT_TARGET","TryCatch","eventTarget","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","_wrapEventTarget","originalCallback","wrapOptions","handleEvent","wrappedEventHandler","originalEventHandler","GlobalHandlers","_installFunc","_installGlobalOnErrorHandler","_installGlobalOnUnhandledRejectionHandler","stackTraceLimit","installFunc","getHubAndOptions","ERROR_TYPES_RE","groups","_enhanceEventWithInitialFrame","_eventFromIncompleteOnError","addMechanismAndCapture","ev0","ev0s","ev0sf","LinkedErrors","_limit","linkedErrors","_walkErrorTree","_handler","Dedupe","eventProcessor","currentEvent","previousEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_isSameMessageEvent","previousException","_getExceptionFromEvent","currentException","_isSameExceptionEvent","_previousEvent","currentFrames","_getFramesFromEvent","previousFrames","frameA","frameB","currentFingerprint","previousFingerprint","HttpContext","Referer","makePromiseBuffer","task","$","taskProducer","drain","counter","capturedSetTimeout","updateRateLimits","limits","updatedRateLimits","rateLimitHeader","retryAfterHeader","retryAfter","categories","headerDelay","delay","headerDate","parseRetryAfterHeader","createTransport","makeRequest","bufferSize","rateLimits","filteredEnvelopeItems","envelopeItemDataCategory","disabledUntil","isRateLimited","filteredEnvelope","recordEnvelopeLoss","makeFetchTransport","nativeFetch","referrerPolicy","makeXHRTransport","autoSessionTracking","clientClass","initialScope","initAndBind","startSessionOnHub","startSessionTracking","TRACEPARENT_REGEXP","bindReporter","metric","reportAllChanges","prevValue","forceReport","initMetric","PerformanceObserver","supportedEntryTypes","po","getEntries","buffered","onHidden","onHiddenOrPageHide","firstHiddenTime","getVisibilityWatcher","timeStamp","reportedMetricIDs","isMeasurementValue","isFinite","_startChild","getBrowserPerformanceAPI","_lcpEntry","_clsEntry","_performanceCursor","startTrackingWebVitals","mark","onReport","report","sessionValue","sessionEntries","entryHandler","hadRecentInput","firstSessionEntry","lastSessionEntry","takeRecords","getCLS","visibilityWatcher","stopListening","disconnect","capture","getLCP","_trackLCP","processingStart","getFID","addPerformanceEntries","performanceEntries","responseStartTimestamp","requestStartTimestamp","entryType","_addPerformanceNavigationTiming","requestStart","responseEnd","responseStart","_addRequest","_addNavigationSpans","measureStartTimestamp","measureEndTimestamp","_addMeasureSpans","firstHidden","shouldRecord","resourceName","initiatorType","transferSize","encodedBodySize","decodedBodySize","_addResourceSpans","connection","effectiveType","rtt","downlink","deviceMemory","hardwareConcurrency","_trackNavigator","measurementTimestamp","normalizedValue","cls","measurementName","_tagMetricInfo","eventEnd","defaultRequestInstrumentationOptions","traceFetch","traceXHR","tracingOrigins","instrumentOutgoingRequests","shouldCreateSpanForRequest","urlMap","defaultShouldCreateSpan","origins","shouldCreateSpan","__span","headerBaggageString","addTracingHeaders","fetchCallback","__sentry_xhr_span_id__","getRequestHeader","xhrCallback","DEFAULT_BROWSER_TRACING_OPTIONS","markBackgroundTransactions","routingInstrumentation","customStartTransaction","startTransactionOnPageLoad","startTransactionOnLocationChange","startingUrl","BrowserTracing","_emitOptionsWarning","_metricOptions","_reportAllChanges","_getCurrentHub","instrumentRouting","_createRouteTransaction","statusType","beforeNavigate","parentContextFromHeader","sentrytraceValue","getMetaContent","baggageValue","sentrytraceData","traceparent","matches","extractTraceparentData","extractTraceDataFromMetaTags","expandedContext","modifiedContext","finalContext","idleTransaction","metaName","querySelector","__SENTRY_TRACING__","DEFAULT_TAGS","prevTransactionName","nextRouterInstrumentation","startTransactionCb","pathIsRoute","routerPrototype","changeStateWrapper","originalChangeStateWrapper","as","newTransactionName","setNestedKey","addIntegration","addIntegrationToArray","userIntegrationsFunc","userFinalIntegrations","addIntegrationToFunction","includesName","buildMetadata","defaultBrowserTracingIntegration","createClientIntegrations","filterTransactions","Sentry","SENTRY_DSN","NEXT_PUBLIC_SENTRY_DSN","LANG_LOCAL_STORAGE_KEY","localStorageLanguage","localStorage","getItem","TOKEN_KEY","setItem","removeItem","assertPath","normalizeStringPosix","isAbsolute","_makeLong","dirname","basename","extname","ext","_format","win32","posix","__nccwpck_require__","ab","__dirname","defaultSetTimout","defaultClearTimeout","runTimeout","cleanUpNextTick","drainQueue","runClearTimeout","Item","fun","nextTick","argv","versions","addListener","removeListener","removeAllListeners","prependListener","prependOnceListener","binding","chdir","umask","N","startPosition","stopDelayMs","nonce","configure","bool","NProgress","Settings","settings","easing","positionUsing","trickle","trickleRate","trickleSpeed","showSpinner","barSelector","spinnerSelector","template","toBarPerc","barPositionCSS","barCSS","transition","isStarted","progress","bar","getPositioningCSS","css","work","force","inc","initial","$promise","always","fromStart","isRendered","addClass","innerHTML","spinner","removeClass","bodyStyle","vendorPrefix","cssPrefixes","cssProps","camelCase","letter","getVendorProp","vendorName","capName","getStyleProp","applyCss","hasClass","classList","oldList","newList","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","bigint","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","exact","checkPropTypes","PropTypes","qrcodegen","__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","__objRest","exclude","qrcodegen2","_QrCode","errorCorrectionLevel","dataCodewords","msk","isFunction","MIN_VERSION","MAX_VERSION","row","drawFunctionPatterns","allCodewords","addEccAndInterleave","drawCodewords","minPenalty","applyMask","drawFormatBits","penalty","getPenaltyScore","ecl","segs","QrSegment","makeSegments","encodeSegments","seg","makeBytes","minVersion","maxVersion","boostEcl","dataUsedBits","dataCapacityBits2","getNumDataCodewords","usedBits","getTotalBits","newEcl","Ecc","MEDIUM","QUARTILE","HIGH","bb","appendBits","modeBits","numChars","numCharCountBits","getData","dataCapacityBits","padByte","getModule","getModules","setFunctionModule","drawFinderPattern","alignPatPos","getAlignmentPatternPositions","numAlign","drawAlignmentPattern","drawVersion","formatBits","rem","bits","getBit","dy","dx","xx","yy","isDark","ver","numBlocks","NUM_ERROR_CORRECTION_BLOCKS","blockEccLen","ECC_CODEWORDS_PER_BLOCK","rawCodewords","getNumRawDataModules","numShortBlocks","shortBlockLen","blocks","rsDiv","reedSolomonComputeDivisor","dat","ecc","reedSolomonComputeRemainder","vert","invert","runColor","runX","runHistory","PENALTY_N1","finderPenaltyAddHistory","finderPenaltyCountPatterns","PENALTY_N3","finderPenaltyTerminateAndCount","runY","PENALTY_N2","dark","total","PENALTY_N4","degree","reedSolomonMultiply","factor","coef","currentRunColor","currentRunLength","QrCode","cond","_QrSegment","bitData","Mode","BYTE","digits","isNumeric","NUMERIC","isAlphanumeric","ALPHANUMERIC_CHARSET","ALPHANUMERIC","makeNumeric","makeAlphanumeric","toUtf8ByteArray","assignVal","ECI","NUMERIC_REGEX","ALPHANUMERIC_REGEX","ccbits","QrCode2","_Ecc","LOW","QrSegment2","_Mode","numBitsCharCount","KANJI","qrcodegen_default","ERROR_LEVEL_MAP","L","M","Q","H","DEFAULT_SIZE","DEFAULT_LEVEL","DEFAULT_BGCOLOR","DEFAULT_FGCOLOR","DEFAULT_INCLUDEMARGIN","generatePath","ops","cell","excavateModules","excavation","getImageSettings","cells","includeMargin","numCells","defaultSize","floorX","floorY","Path2D","bgColor","fgColor","otherProps","encodeText","calculatedImageSettings","image","xlinkHref","fgPath","shapeRendering","_extends3","_getPrototypeOf2","_classCallCheck3","_createClass3","_possibleConstructorReturn3","_inherits3","_react2","_propTypes2","_lottieWeb2","_React$Component","_temp","_ret","handleClickToPause","_props","eventListeners","registerEvents","nextProps","deRegisterEvents","isStopped","eventListener","_props2","ariaRole","isClickToPauseDisabled","getSize","lottieStyles","outline","onClickHandler","role","tabIndex","defaultProps","extendStatics","__extends","__awaiter","_arguments","generator","fulfilled","__generator","trys","verb","__spreadArray","NetworkStatus","isNetworkRequestInFlight","isApolloError","ApolloError","clientErrors","errorMessage","extraInfo","generateErrorMessage","for","getApolloContext","displayName","isNonEmptyArray","canUseWeakMap","product","canUseWeakSet","canUseSymbol","objects","deepFreeze","shallowFreeze","isNonNullObject","genericMessage","InvariantError","verbosityLevels","verbosityLevel","wrapConsoleMethod","maybe","thunk","globalThis","GLOBAL_KEY","safeGlobal","needToRemove","NODE_ENV","DEV","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","_objectSpread","ownKeys","_objectSpreadProps","enumerableOnly","_objectWithoutProperties","excluded","sourceKeys","sourceSymbolKeys","_taggedTemplateLiteral","strings","raw","formatValue","seenValues","previouslySeenValues","isJSONable","jsonValue","remaining","formatArray","getObjectTag","formatObject","formatObjectValue","Location","Token","QueryDocumentKeys","kindValues","isNode","maybeNode","maybeKind","OperationTypeNode","dedentBlockStringLines","_firstNonEmptyLine2","commonIndent","MAX_SAFE_INTEGER","firstNonEmptyLine","lastNonEmptyLine","_firstNonEmptyLine","leadingWhitespace","printBlockString","escapedValue","isSingleLine","forceLeadingNewLine","hasTrailingTripleQuotes","hasTrailingQuote","hasTrailingSlash","forceTrailingNewline","printAsMultipleLines","minimize","skipLeadingNewLine","isWhiteSpace","isDigit","isLetter","isNameStart","isNameContinue","Kind","Source","isSource","_goober","firstChild","theme","matchMedia","toastId","toasts","toast","J","visible","pausedAt","pauseDuration","Y","blank","success","custom","createdAt","ariaProps","dismiss","Z","ee","I","reverseOrder","gutter","defaultPosition","findIndex","updateHeight","startPause","endPause","calculateOffset","oe","re","se","primary","secondary","V","de","ue","le","Te","fe","iconTheme","ye","ge","be","Se","Ae","Ee","onHeightUpdate","getBoundingClientRect","MutationObserver","subtree","childList","characterData","ve","Ie","toastOptions","containerClassName","zIndex","pointerEvents","onMouseEnter","onMouseLeave","justifyContent","Re","alreadyWarned","loadedClb","oldI18nextHasLoadedNamespace","bindI18n","isNewerI18next","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","unescape","initReactI18next","setDefaults","setI18n","ReportNamespaces","usedNamespaces","addUsedNamespaces","getUsedNamespaces","usePrevious","ignore","useRef","i18nFromProps","i18nFromContext","defaultNSFromContext","reportNamespaces","notReadyT","optsOrDefaultValue","retNotReady","ready","i18nOptions","getT","nsMode","setT","joinedNS","previousJoinedNS","isMounted","boundReset","isInitial","I18nextProvider"],"sourceRoot":""}