{"version":3,"file":"js/main.js","mappings":"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","sources":["webpack://clienti-baseline-webpack/./node_modules/core-js/internals/a-callable.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/a-constructor.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/a-possible-prototype.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/add-to-unscopables.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/advance-string-index.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/an-instance.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/an-object.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/array-for-each.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/array-from.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/array-includes.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/array-iteration.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/array-method-has-species-support.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/array-method-is-strict.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/array-slice.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/array-species-constructor.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/array-species-create.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/classof-raw.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/classof.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/create-iterator-constructor.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/create-property-descriptor.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/create-property.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/define-iterator.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/define-well-known-symbol.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/descriptors.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/document-create-element.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/dom-iterables.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/dom-token-list-prototype.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/engine-is-browser.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/engine-is-ios-pebble.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/engine-is-ios.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/engine-is-node.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/engine-is-webos-webkit.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/engine-user-agent.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/engine-v8-version.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/enum-bug-keys.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/export.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/fails.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/function-apply.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/function-bind-context.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/function-call.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/function-name.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/function-uncurry-this.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/get-built-in.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/get-iterator-method.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/get-iterator.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/get-method.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/get-substitution.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/global.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/has-own-property.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/hidden-keys.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/host-report-errors.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/html.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/ie8-dom-define.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/indexed-object.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/inspect-source.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/internal-state.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/is-array.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/is-callable.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/is-constructor.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/is-forced.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/is-object.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/is-pure.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/is-regexp.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/is-symbol.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/iterate.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/iterator-close.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/iterators-core.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/iterators.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/length-of-array-like.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/microtask.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/native-promise-constructor.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/native-symbol.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/native-weak-map.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/new-promise-capability.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/not-a-regexp.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/object-create.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/object-define-properties.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/object-define-property.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/object-keys-internal.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/object-keys.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/object-to-string.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/own-keys.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/path.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/perform.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/promise-resolve.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/redefine-all.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/redefine.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/regexp-exec.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/regexp-flags.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/require-object-coercible.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/set-global.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/set-species.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/set-to-string-tag.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/shared-key.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/shared-store.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/shared.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/species-constructor.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/string-multibyte.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/task.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/to-absolute-index.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/to-indexed-object.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/to-length.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/to-object.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/to-primitive.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/to-property-key.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/to-string-tag-support.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/to-string.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/try-to-string.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/uid.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack://clienti-baseline-webpack/./node_modules/core-js/internals/well-known-symbol.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/es.array.concat.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/es.array.from.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/es.array.includes.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/es.array.iterator.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/es.array.map.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/es.array.slice.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/es.function.name.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/es.object.to-string.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/es.promise.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/es.regexp.exec.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/es.string.includes.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/es.string.iterator.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/es.string.replace.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/es.string.split.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/es.symbol.description.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/es.symbol.iterator.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/es.symbol.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack://clienti-baseline-webpack/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://clienti-baseline-webpack/./node_modules/lottie-web/build/player/lottie.js","webpack://clienti-baseline-webpack/webpack/bootstrap","webpack://clienti-baseline-webpack/webpack/runtime/amd options","webpack://clienti-baseline-webpack/webpack/runtime/compat get default export","webpack://clienti-baseline-webpack/webpack/runtime/define property getters","webpack://clienti-baseline-webpack/webpack/runtime/global","webpack://clienti-baseline-webpack/webpack/runtime/hasOwnProperty shorthand","webpack://clienti-baseline-webpack/./src/scripts/partials/search.js","webpack://clienti-baseline-webpack/./src/scripts/partials/searchbar.js","webpack://clienti-baseline-webpack/./src/scripts/customEventsNames.js","webpack://clienti-baseline-webpack/./src/scripts/partials/modal.js","webpack://clienti-baseline-webpack/./src/scripts/partials/cookies.js","webpack://clienti-baseline-webpack/./src/scripts/partials/accordion.js","webpack://clienti-baseline-webpack/./node_modules/swiper/shared/ssr-window.esm.mjs","webpack://clienti-baseline-webpack/./node_modules/swiper/shared/utils.mjs","webpack://clienti-baseline-webpack/./node_modules/swiper/shared/swiper-core.mjs","webpack://clienti-baseline-webpack/./src/scripts/partials/slider.js","webpack://clienti-baseline-webpack/./src/scripts/partials/header.js","webpack://clienti-baseline-webpack/./src/scripts/main.js","webpack://clienti-baseline-webpack/./src/scripts/partials/intersectionObservation.js","webpack://clienti-baseline-webpack/./src/scripts/partials/language.js","webpack://clienti-baseline-webpack/./src/scripts/partials/video.js","webpack://clienti-baseline-webpack/./src/scripts/partials/menu.js","webpack://clienti-baseline-webpack/./src/scripts/partials/lottieAnimations.js"],"sourcesContent":["var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a function');\n};\n","var global = require('../internals/global');\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a constructor');\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var global = require('../internals/global');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw TypeError('Incorrect invocation');\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError(String(argument) + ' is not an object');\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar Array = global.Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","var global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\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","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n redefine(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","var path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","module.exports = typeof window == 'object';\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var uncurriedNativeMethod = uncurryThis(nativeMethod);\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n }\n return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n redefine(String.prototype, KEY, methods[0]);\n redefine(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","var FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (bind ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : bind ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var call = Function.prototype.call;\n\nmodule.exports = call.bind ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar callBind = bind && bind.bind(call);\n\nmodule.exports = bind ? function (fn) {\n return fn && callBind(call, fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw TypeError(tryToString(argument) + ' is not iterable');\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n }\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function (argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function (argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n // we can't check .prototype since constructors produced by .bind haven't it\n } return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n};\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar TypeError = global.TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n redefine(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n // strange IE + webpack dev server bug - use .bind(global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var global = require('../internals/global');\nvar isRegExp = require('../internals/is-regexp');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* 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 DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) == 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var global = require('../internals/global');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar Object = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof Object ? ObjectPrototype : null;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var name = options && options.name !== undefined ? options.name : key;\n var state;\n if (isCallable(value)) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n createNonEnumerableProperty(value, 'name', name);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar TypeError = global.TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = call(exec, R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n throw TypeError('RegExp#exec called on incompatible receiver');\n};\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n // eslint-disable-next-line max-statements -- TODO\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n call(nativeReplace, match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nexports.UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !hasOwn(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.19.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(isCallable(fn) ? fn : Function(fn), undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- safe\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n try {\n return String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\nvar TypeError = global.TypeError;\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return un$Slice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return regExpExec(nameRE, functionToString(this))[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar call = require('../internals/function-call');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromisePrototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new PromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n PromisePrototype = PromiseConstructor.prototype;\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromisePrototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reactions = state.reactions;\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n reactions[reactions.length] = reaction;\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromise) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n redefine(NativePromisePrototype, 'catch', PromisePrototype['catch'], { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~stringIndexOf(\n toString(requireObjectCoercible(this)),\n toString(notARegExp(searchString)),\n arguments.length > 1 ? arguments[1] : undefined\n );\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE);\n return replacer\n ? call(replacer, searchValue, O, replaceValue)\n : call(nativeReplace, toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue == 'string' &&\n stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n stringIndexOf(replaceValue, '$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n push(results, result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = concat([matched], captures, position, S);\n if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n var replacement = toString(apply(replaceValue, undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + stringSlice(S, nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar arraySlice = require('../internals/array-slice');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return call(nativeSplit, string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = call(regexpExec, separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n push(output, stringSlice(string, lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !exec(separatorCopy, '')) push(output, '');\n } else push(output, stringSlice(string, lastLastIndex));\n return output.length > lim ? arraySlice(output, 0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : getMethod(separator, SPLIT);\n return splitter\n ? call(splitter, separator, O, limit)\n : call(internalSplit, toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n push(A, stringSlice(S, p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n push(A, z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n push(A, stringSlice(S, p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n var result = isPrototypeOf(SymbolPrototype, this)\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n SymbolWrapper.prototype = SymbolPrototype;\n SymbolPrototype.constructor = SymbolWrapper;\n\n var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\n var symbolToString = uncurryThis(SymbolPrototype.toString);\n var symbolValueOf = uncurryThis(SymbolPrototype.valueOf);\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n var replace = uncurryThis(''.replace);\n var stringSlice = uncurryThis(''.slice);\n\n defineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = symbolValueOf(this);\n var string = symbolToString(symbol);\n if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar arraySlice = require('../internals/array-slice');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n redefine(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.es/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = $toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.es/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\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\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (isCallable($replacer)) value = call($replacer, this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return apply($stringify, null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!SymbolPrototype[TO_PRIMITIVE]) {\n var valueOf = SymbolPrototype.valueOf;\n // eslint-disable-next-line no-unused-vars -- required for .length\n redefine(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n // TODO: improve hint logic\n return call(valueOf, this);\n });\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n if (DOMIterables[COLLECTION_NAME]) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","(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 ].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","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/*************************************************/\r\n/* SEARCH */\r\n/*************************************************/\r\n\r\nexport function search() {\r\n const suggestionsSelector = '.search-suggestions';\r\n const searchFormSelector = '#searchForm';\r\n var typeTimer;\r\n\r\n const getAndDisplaySearchResults = query => {\r\n const endpointUrl = document.querySelector(searchFormSelector).getAttribute('action');\r\n fetch(`${endpointUrl}?altTemplate=searchSuggestions&q=${query}`)\r\n .then(response => {\r\n return response.text();\r\n }).then(data => {\r\n document.querySelector.insertAdjacentHTML('beforeend', data);\r\n document.querySelector.style.display = 'block';\r\n }).catch(err => {\r\n console.log('Something went wrong in search fetch');\r\n console.error(err);\r\n });\r\n };\r\n\r\n const init = () => {\r\n const searchFormInput = document.querySelector(`${searchFormSelector} input`);\r\n if(searchFormInput) {\r\n searchFormInput.addEventListener('keyup', () => {\r\n const searchForm = document.querySelector(searchFormSelector);\r\n if (searchForm.dataset.showSuggestions === 'False') return;\r\n searchForm.remove();\r\n const query = searchFormInput.value;\r\n clearTimeout(typeTimer);\r\n typeTimer = setTimeout(() => { \r\n getAndDisplaySearchResults(query);\r\n }, 500);\r\n });\r\n }\r\n\r\n document.addEventListener('click', e => {\r\n const clickTarget = e.target;\r\n let searchResultBox = document.querySelector(suggestionsSelector);\r\n if (searchResultBox && clickTarget !== searchResultBox && !clickTarget.closest(suggestionsSelector)) {\r\n searchResultBox.remove();\r\n }\r\n });\r\n };\r\n\r\n init();\r\n}\r\n","/*************************************************/\r\n/* SEARCHBAR /\r\n/*************************************************/\r\n\r\nexport function searchbar(body) {\r\n let searchContainer,\r\n searchForm,\r\n searchInput,\r\n searchToggler;\r\n const showSearchClass = 'search-active',\r\n searchFormButtonClass ='search-form__button',\r\n searchBarSelector = '.search-bar',\r\n searchFormInputSelector = '.search-form__input',\r\n searchBarToggleSelector = '.search-bar__toggle';\r\n\r\n const init = function () {\r\n searchContainer = document.querySelector(searchBarSelector);\r\n if (searchContainer != null) {\r\n searchForm = searchContainer.querySelector('form');\r\n searchInput = searchContainer.querySelector(searchFormInputSelector);\r\n searchToggler = document.querySelector(searchBarToggleSelector);\r\n \r\n\r\n searchToggler.addEventListener('click', e => {\r\n e.stopPropagation();\r\n handleSearchBarVisibility();\r\n searchInput.focus();\r\n });\r\n\r\n searchContainer.addEventListener('click', e => {\r\n e.stopPropagation();\r\n });\r\n\r\n searchContainer.addEventListener('focusout', e => {\r\n if(e.target.classList.contains(searchFormButtonClass)) {\r\n closeSearch();\r\n }\r\n });\r\n\r\n body.addEventListener('click', e => {\r\n closeSearch();\r\n });\r\n }\r\n\r\n\r\n function handleSearchBarVisibility() {\r\n if (!body.classList.contains(showSearchClass)) {\r\n openSearch();\r\n } else {\r\n closeSearch();\r\n }\r\n }\r\n\r\n function openSearch() {\r\n body.classList.add(showSearchClass);\r\n searchContainer.setAttribute('aria-expanded',true);\r\n }\r\n\r\n function closeSearch() {\r\n body.classList.remove(showSearchClass);\r\n searchContainer.setAttribute('aria-expanded',false);\r\n\r\n }\r\n };\r\n\r\n init();\r\n}","export class customEventsNames{\r\n constructor() {\r\n this.openModal = 'openModal';\r\n this.closeModal = 'closeModal';\r\n this.playVideoInModal = 'playVideoInModal';\r\n this.playYoutubeVideoInModal = 'playYoutubeVideoInModal';\r\n this.videoPlayingInModal = 'videoStartedPlayingInModal';\r\n \r\n this.accordionInitialised = 'accordionInitialized';\r\n this.accordionActivateItemEventName = 'activateAccordionItem';\r\n this.accordionDeactivateItemEventName = 'deactivateAccordionItem';\r\n this.accordionDeactivateAllItemsEventName = 'deactivateAllAccordionItems';\r\n }\r\n};\r\nexport default new customEventsNames();","/*************************************************/\r\n/* MODAL */\r\n/*************************************************/\r\nimport customEventsNames from './../customEventsNames';\r\nexport function modal(body, bodyLoadingClass) {\r\n let modals = Array.from(document.querySelectorAll('.modal')),\r\n modalDialogClassSelector = '.modal-dialog',\r\n modalContentClassSelector = '.modal-content',\r\n modalCloseButtonClassSelector = '.modal-close',\r\n utils;\r\n const mainContentSelector = '#mainContent',\r\n modalPlayerId = 'modalplayer',\r\n modalShowClass ='modal--show';\r\n let triggerElement = null;\r\n\r\n const init = function () {\r\n modalUtils();\r\n\r\n modals.forEach(modal => {\r\n modal.addEventListener(customEventsNames.openModal, e => {\r\n if (e.detail.videoElement) {\r\n utils.Video.AddVideoToModal(e.detail.modalId, e.detail.videoElement);\r\n } else if (e.detail.modalId && e.detail.videoId) {\r\n utils.Video.AddYoutubeVideoToModal(e.detail.modalId, e.detail.videoId);\r\n }\r\n });\r\n\r\n modal.addEventListener(customEventsNames.videoPlayingInModal, e => {\r\n body.classList.remove(bodyLoadingClass);\r\n });\r\n\r\n //Close if background is clicked, but not if modalDialog is clicked\r\n modal.addEventListener('click', e => {\r\n utils.Modal.CloseModal(e.target.getAttribute('id'));\r\n });\r\n\r\n const dialog = modal.querySelector(modalDialogClassSelector);\r\n dialog.addEventListener('click', e => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n });\r\n\r\n modal.querySelector(modalCloseButtonClassSelector).addEventListener('click', e => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n utils.Modal.CloseModal(e.target.closest('.modal').getAttribute('id'));\r\n });\r\n });\r\n\r\n\r\n };\r\n\r\n function modalUtils() {\r\n if (!utils) {\r\n utils = {\r\n };\r\n }\r\n\r\n if (modals.length > 0) {\r\n utils.Modal = {\r\n OpenModal(modalId, content) {\r\n triggerElement = document.activeElement;\r\n const modal = document.querySelector(modalId);\r\n body.classList.add('noscroll');\r\n modal.classList.add(modalShowClass);\r\n modal.querySelector(modalContentClassSelector).appendChild(content);\r\n\r\n document.querySelector(mainContentSelector).setAttribute('aria-hidden', true);\r\n\r\n setTimeout(() => {\r\n modal.focus();\r\n }, 300); //Timeout here to compensate for the transition on the modal\r\n\r\n },\r\n CloseModal(modalId, clearContent = true) {\r\n modalId = `#${modalId}`;\r\n const modal = document.querySelector(modalId);\r\n modal.classList.remove(modalShowClass);\r\n if (clearContent = true) {\r\n const content = modal.querySelector(modalContentClassSelector);\r\n content.removeChild(content.querySelector('#'+modalPlayerId));\r\n }\r\n body.classList.remove('noscroll', bodyLoadingClass);\r\n\r\n const closeModalEvent = new CustomEvent(customEventsNames.closeModal, { bubbles: true });\r\n modal.dispatchEvent(closeModalEvent);\r\n\r\n document.querySelector(mainContentSelector).setAttribute('aria-hidden', false);\r\n\r\n setTimeout(() => {\r\n triggerElement.focus();\r\n }, 200); //Timeout here to compensate for the keyup event needing to finish\r\n\r\n\r\n }\r\n };\r\n }\r\n\r\n utils.Video = {\r\n AddYoutubeVideoToModal(modalId, videoId) {\r\n const player = document.createElement('div');\r\n player.id = modalPlayerId;\r\n utils.Modal.OpenModal(modalId, player);\r\n body.classList.add(bodyLoadingClass);\r\n\r\n var playYoutubeVideoEvent = new CustomEvent(customEventsNames.playYoutubeVideoInModal, {\r\n bubbles: true,\r\n detail: {\r\n modalId: modalId,\r\n playerId: modalPlayerId,\r\n videoId: videoId\r\n }\r\n });\r\n\r\n player.dispatchEvent(playYoutubeVideoEvent);\r\n },\r\n AddVideoToModal(modalId, videoElement) {\r\n videoElement.id = modalPlayerId;\r\n\r\n utils.Modal.OpenModal(modalId, videoElement);\r\n\r\n body.classList.add(bodyLoadingClass);\r\n\r\n var playVideoEvent = new CustomEvent(customEventsNames.playVideoInModal, {\r\n bubbles: true,\r\n detail: {\r\n modalId: modalId,\r\n playerId: modalPlayerId\r\n }\r\n });\r\n videoElement.dispatchEvent(playVideoEvent);\r\n\r\n }\r\n };\r\n }\r\n\r\n init();\r\n}\r\n","/*************************************************/\r\n/* COOKIES */\r\n/*************************************************/\r\n\r\nexport function cookies() {\r\n const cookiePlaceholderSelector = '.cookie-placeholder';\r\n const placeholderSelectors = Array.from(document.querySelectorAll(cookiePlaceholderSelector));\r\n\r\n //Implement this for the specific cookie solution. Check out one of our other websites for an example\r\n const RenewConsent = categories => {\r\n Cookiebot.renew();\r\n }\r\n\r\n const SetPlaceholderDisplayState = (placeholder, displayState) => {\r\n placeholder.style.display = displayState;\r\n }\r\n\r\n //Implement this for the specific cookie solution. Check out one of our other websites for an example. In this case, replace the 'false' with Cookie Consent status\r\n const SetPlaceholderState = () => {\r\n window.addEventListener('CookiebotOnConsentReady', function (event) {\r\n\r\n const marketingPlaceholders = document.querySelectorAll('[data-categories*=\"marketing\"]');\r\n if (marketingPlaceholders != null) {\r\n marketingPlaceholders.forEach(placeholder => {\r\n let displayState = Cookiebot.consent.marketing ? 'none' : 'flex';\r\n SetPlaceholderDisplayState(placeholder, displayState);\r\n });\r\n }\r\n\r\n var statisticsPlaceholders = document.querySelectorAll('[data-categories*=\"statistics\"]');\r\n if (statisticsPlaceholders != null) {\r\n statisticsPlaceholders.forEach(placeholder => {\r\n var displayState = Cookiebot.consent.statistics ? 'none' : 'flex';\r\n SetPlaceholderDisplayState(placeholder, displayState);\r\n });\r\n }\r\n\r\n var preferencesPlaceholders = document.querySelectorAll('[data-categories*=\"preferences\"]');\r\n if (preferencesPlaceholders != null) {\r\n preferencesPlaceholders.forEach(placeholder => {\r\n var displayState = Cookiebot.consent.preferences ? 'none' : 'flex';\r\n SetPlaceholderDisplayState(placeholder, displayState);\r\n });\r\n }\r\n\r\n }, false);\r\n\r\n }\r\n\r\n const init = () => {\r\n\r\n SetPlaceholderState();\r\n\r\n for (const placeholderSelector of placeholderSelectors) {\r\n placeholderSelector.addEventListener('click', event => {\r\n let placeholder = event.target;\r\n if (!placeholder.classList.contains(cookiePlaceholderSelector)) {\r\n placeholder = event.target.closest(cookiePlaceholderSelector);\r\n }\r\n event.stopPropagation()\r\n var categories = placeholder.dataset.categories.split(',');\r\n RenewConsent(categories);\r\n });\r\n }\r\n };\r\n\r\n init();\r\n}\r\n\r\n","/*************************************************/\r\n/* ACCORDION */\r\n/*************************************************/\r\nimport customEventsNames from './../customEventsNames';\r\nexport function accordion() {\r\n const accordionParentSelector = '.accordion';\r\n const accordionItemSelector = '.accordion__item';\r\n const accordionItemToggleSelector = '.accordion__item-head';\r\n const accordionItemContentSelector = '.accordion__item-content';\r\n const accordionItemActiveClass = 'accordion__item--active';\r\n const accordionIdDataAttributeName = 'data-accordion-id';\r\n const accordionItemIdDataAttributeName = 'data-accordion-item-id';\r\n const linkAccordionSelector = '.link-accordion';\r\n const linkAccordionContainerSelector = '.link-accordion__images-container';\r\n\r\n const getTargetedAccordion = (event) => {\r\n if (event != null) {\r\n return document.querySelector(\r\n `[${accordionIdDataAttributeName}=\"${event.detail.accordionId}\"]`);\r\n }\r\n };\r\n const getTargetedAccordionItem = (event) => {\r\n if (event != null) {\r\n const targetedAccordion = getTargetedAccordion(event);\r\n if (targetedAccordion != null) {\r\n return targetedAccordion.querySelector(\r\n `[${accordionItemIdDataAttributeName}=\"${event.detail.accordionItemId}\"]`\r\n );\r\n }\r\n };\r\n }\r\n\r\n const setActiveStylesOnAccordionItem = (accordionItem) => {\r\n if (accordionItem != null) {\r\n const accordionItemContent = accordionItem.querySelector(accordionItemContentSelector);\r\n accordionItemContent.style.maxHeight = `${accordionItemContent.scrollHeight}px`;\r\n accordionItemContent.setAttribute('aria-hidden', false);\r\n accordionItem.classList.add(accordionItemActiveClass);\r\n accordionItem.setAttribute('aria-expanded', true);\r\n }\r\n };\r\n\r\n const setInactiveStylesOnAccordionItem = (accordionItem) => {\r\n if (accordionItem != null) {\r\n const accordionItemContent = accordionItem.querySelector(accordionItemContentSelector);\r\n accordionItemContent.style.maxHeight = \"0px\";\r\n accordionItemContent.setAttribute('aria-hidden', true);\r\n accordionItem.classList.remove(accordionItemActiveClass);\r\n accordionItem.setAttribute('aria-expanded', false);\r\n }\r\n };\r\n\r\n const init = () => {\r\n const accordions = document.querySelectorAll(accordionParentSelector);\r\n if (accordion != null && accordions.length > 0) {\r\n accordions.forEach(accordion => {\r\n accordion.addEventListener(customEventsNames.accordionActivateItemEventName, e => {\r\n const targetedAccordionItem = getTargetedAccordionItem(e);\r\n if (targetedAccordionItem) {\r\n const deactivateAllItemsEvent = new CustomEvent(customEventsNames.accordionDeactivateAllItemsEventName, {\r\n detail: {\r\n accordionId: e.detail.accordionId\r\n }\r\n });\r\n accordion.dispatchEvent(deactivateAllItemsEvent);\r\n }\r\n\r\n if (targetedAccordionItem != null) {\r\n setActiveStylesOnAccordionItem(targetedAccordionItem);\r\n }\r\n });\r\n\r\n accordion.addEventListener(customEventsNames.accordionDeactivateItemEventName, e => {\r\n const targetedAccordionItem = getTargetedAccordionItem(e);\r\n if (targetedAccordionItem != null) {\r\n setInactiveStylesOnAccordionItem(targetedAccordionItem);\r\n }\r\n });\r\n\r\n accordion.addEventListener(customEventsNames.accordionDeactivateAllItemsEventName, e => {\r\n const targetedAccordion = getTargetedAccordion(e);\r\n if (targetedAccordion != null) {\r\n targetedAccordion.querySelectorAll(accordionItemSelector).forEach(accordionItem => {\r\n setInactiveStylesOnAccordionItem(accordionItem);\r\n });\r\n }\r\n });\r\n\r\n accordion.querySelectorAll(accordionItemToggleSelector).forEach(accordionItem => {\r\n accordionItem.addEventListener('click', e => {\r\n const clickedAccordionItem = e.target.closest(accordionItemSelector);\r\n const itemId = clickedAccordionItem.dataset.accordionItemId;\r\n const itemIndex = clickedAccordionItem.dataset.accordionItemIndex;\r\n const accordionParent = e.target.closest(accordionParentSelector);\r\n const accordionId = accordionParent.dataset.accordionId;\r\n\r\n if (clickedAccordionItem.classList.contains(accordionItemActiveClass)) {\r\n const deactiveAccordionItemEvent = new CustomEvent(customEventsNames.accordionDeactivateItemEventName, {\r\n detail: {\r\n accordionId: accordionId,\r\n accordionItemId: itemId,\r\n }\r\n });\r\n accordionParent.dispatchEvent(deactiveAccordionItemEvent);\r\n } else {\r\n const activateAccordionItemEvent = new CustomEvent(customEventsNames.accordionActivateItemEventName, {\r\n detail: {\r\n accordionId: accordionId,\r\n accordionItemId: itemId,\r\n accordionItemIndex: itemIndex,\r\n }\r\n });\r\n accordionParent.dispatchEvent(activateAccordionItemEvent);\r\n\r\n const linkAccordionParent = accordionItem.closest(linkAccordionSelector);\r\n if (linkAccordionParent) {\r\n linkAccordionParent.querySelector(linkAccordionContainerSelector).dispatchEvent(activateAccordionItemEvent)\r\n }\r\n }\r\n });\r\n });\r\n\r\n // Initially set the height of the first active item\r\n const initialActiveItem = accordion.querySelector(`.${accordionItemActiveClass}`);\r\n if (initialActiveItem) {\r\n setTimeout(() => {\r\n setActiveStylesOnAccordionItem(initialActiveItem);\r\n }, 0);\r\n }\r\n\r\n const accordionInitialized = new CustomEvent(customEventsNames.accordionInitialised, {});\r\n accordion.dispatchEvent(accordionInitialized);\r\n\r\n });\r\n }\r\n };\r\n\r\n init();\r\n}\r\n\r\nexport function linkAccordion() {\r\n const linkAccordionContainerSelector = \".link-accordion__images-container\";\r\n const linkAccordionelector = \".link-accordion__image\";\r\n const accordionImageActiveClass = \"link-accordion__image--active\";\r\n const accordionImageFallbackClass = \"link-accordion__image--fallback\";\r\n\r\n const init = () => {\r\n const imageContainers = document.querySelectorAll(linkAccordionContainerSelector);\r\n if (imageContainers) {\r\n imageContainers.forEach(container => {\r\n\r\n const images = container.querySelectorAll(linkAccordionelector);\r\n if (images[1].classList.contains(accordionImageActiveClass)) {\r\n images[0].classList.remove(accordionImageActiveClass);\r\n }\r\n\r\n container.addEventListener(customEventsNames.accordionActivateItemEventName, e => {\r\n let i = 0;\r\n container.querySelectorAll(linkAccordionelector).forEach(image => {\r\n image.classList.remove(accordionImageActiveClass);\r\n if (image.classList.contains(accordionImageFallbackClass)) return;\r\n if (i == e.detail.accordionItemIndex) {\r\n image.classList.add(accordionImageActiveClass);\r\n }\r\n i++;\r\n });\r\n });\r\n });\r\n }\r\n };\r\n\r\n init();\r\n}","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n const children = [...element.children];\n if (element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOf(el, parent) {\n const isChild = parent.contains(el);\n if (!isChild && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n return children.includes(el);\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\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' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","/*************************************************/\r\n/* Slider */\r\n/*************************************************/\r\nimport Swiper from 'swiper';\r\n\r\nSwiper.use();\r\nexport function slider() {\r\n const latestArticlesSliderSelector = \".articles-list__items-slider.swiper\";\r\n\r\n const handleSlideChangeTransitionEnd = function (swiper) {\r\n //Fix the tabindex for accebility\r\n swiper.el\r\n .querySelectorAll(\" .swiper-slide > a\")\r\n .forEach((slide) => {\r\n slide.setAttribute(\"tabindex\", \"-1\");\r\n });\r\n\r\n const activeSlide = swiper.el.querySelector(\" .swiper-slide-active > a\"\r\n );\r\n if (activeSlide != null) {\r\n activeSlide.setAttribute(\"tabindex\", \"0\");\r\n }\r\n };\r\n\r\n const handleSlideChange = function () {\r\n //Makes sure that the lazyloaded image on the duplicate slide has the right class so it doesnt show up as grey\r\n var nextDuplicateSlide = document.querySelector(\".swiper-slide-duplicate.swiper-slide-next\");\r\n if (nextDuplicateSlide != null) {\r\n var unloadedSlideImage = nextDuplicateSlide.querySelector(\"img.lazyloading\");\r\n if (unloadedSlideImage != null) {\r\n unloadedSlideImage.classList.replace(\"lazyloading\", \"lazyloaded\");\r\n }\r\n }\r\n }\r\n\r\n\r\n const init = function () {\r\n // Latest Articles sliders\r\n const latestArticlesSliders = [];\r\n const latestArticlesSlidersElements = document.querySelectorAll(latestArticlesSliderSelector);\r\n if (latestArticlesSlidersElements) {\r\n latestArticlesSlidersElements.forEach(slider => {\r\n const swiperInstance = new Swiper(slider, {\r\n slidesPerView: 1.2,\r\n spaceBetween: 15,\r\n on: {\r\n slideChange: () => {\r\n handleSlideChange();\r\n },\r\n slideChangeTransitionEnd: (swiper) => {\r\n handleSlideChangeTransitionEnd(swiper);\r\n }\r\n },\r\n });\r\n\r\n latestArticlesSliders.push(swiperInstance);\r\n });\r\n }\r\n }\r\n\r\n init();\r\n\r\n}\r\n","/*************************************************/\r\n/* HEADER */\r\n/*************************************************/\r\n\r\nexport function header() {\r\n let prevScrollPos = window.pageYOffset;\r\n let isAtTop = true;\r\n\r\n const header = document.querySelector(\".header\");\r\n const megaMenu = document.querySelectorAll(\".menu-nav__mega\");\r\n const top = window.innerWidth <= 768 ? \"-80px\" : \"-110px\";\r\n const stickyHeaderClass = \"header-sticky\";\r\n const stickyLogo = document.querySelector(\".logo--sticky\");\r\n const fixedLogo = document.querySelector(\".logo--fixed\");\r\n const parentActiveClass = \"menu-nav__link--parent--active\";\r\n const megaMenuActiveClass = \"menu-nav__mega--active\";\r\n \r\n // Throttle scroll events with requestAnimationFrame for smoother scrolling\r\n let ticking = false;\r\n\r\n function onScroll() {\r\n const currentScrollPos = window.scrollY;\r\n \r\n // Ensure previous scroll position is not negative\r\n if (prevScrollPos < 0) {\r\n prevScrollPos = 0;\r\n }\r\n\r\n // Scrolling down - hide the header\r\n if (prevScrollPos < currentScrollPos) {\r\n if (header.style.top !== top) {\r\n header.style.top = top; \r\n \r\n clearActiveMenuItems();\r\n }\r\n isAtTop = false;\r\n }\r\n // Scrolling up - show the header\r\n else {\r\n if (!isAtTop) {\r\n if (!header.classList.contains(stickyHeaderClass)) {\r\n activateStickyHeader(); \r\n }\r\n }\r\n if (currentScrollPos > 0 && header.style.top !== \"0\") {\r\n header.style.top = \"0\"; \r\n }\r\n }\r\n\r\n // Reset at the top of the page\r\n if (currentScrollPos <= 0 && !isAtTop) {\r\n resetHeader();\r\n }\r\n \r\n prevScrollPos = currentScrollPos;\r\n ticking = false;\r\n } \r\n\r\n // Function to clear active menu classes\r\n function clearActiveMenuItems() {\r\n const activeHeader = document.querySelector(`.${parentActiveClass}`);\r\n if (activeHeader) {\r\n document.querySelectorAll(`.${parentActiveClass}`).forEach(item => {\r\n item.classList.remove(parentActiveClass);\r\n });\r\n }\r\n\r\n megaMenu.forEach(menu => {\r\n if (menu.classList.contains(megaMenuActiveClass)) {\r\n menu.classList.remove(megaMenuActiveClass);\r\n }\r\n });\r\n }\r\n\r\n // Function to activate sticky header\r\n function activateStickyHeader() {\r\n header.classList.add(stickyHeaderClass);\r\n stickyLogo.style.display = \"block\";\r\n fixedLogo.style.display = \"none\";\r\n }\r\n\r\n // Function to reset the header when at the top of the page\r\n function resetHeader() {\r\n header.classList.remove(stickyHeaderClass);\r\n stickyLogo.style.display = \"none\";\r\n fixedLogo.style.display = \"block\";\r\n isAtTop = true;\r\n }\r\n\r\n window.addEventListener('scroll', function () {\r\n if (!ticking) {\r\n window.requestAnimationFrame(onScroll);\r\n ticking = true;\r\n }\r\n });\r\n}\r\n","/*************************************************/\r\n/* 3rd Party */\r\n/*************************************************/\r\n\r\n// Passive event listeners\r\ndocument.addEventListener('touchstart', () => { }, { passive: true });\r\ndocument.addEventListener('touchmove', () => { }, { passive: true });\r\n\r\n\r\n/*************************************************/\r\n/* Partials */\r\n/*************************************************/\r\n\r\nimport { intersectionObservation } from \"./partials/intersectionObservation.js\";\r\nimport { language } from \"./partials/language.js\";\r\nimport { menu } from \"./partials/menu.js\";\r\nimport { search } from \"./partials/search.js\";\r\nimport { searchbar } from \"./partials/searchbar.js\";\r\nimport { video } from \"./partials/video.js\";\r\nimport { modal } from \"./partials/modal.js\";\r\nimport { cookies } from \"./partials/cookies.js\";\r\nimport { accordion } from \"./partials/accordion.js\";\r\nimport { linkAccordion } from \"./partials/accordion.js\";\r\nimport { lottieAnimation } from \"./partials/lottieAnimations.js\";\r\nimport { slider } from \"./partials/slider.js\";\r\nimport { header } from \"./partials/header.js\";\r\n\r\n/*************************************************/\r\n/* Init */\r\n/*************************************************/\r\n\r\nconst ready = callback => {\r\n if (document.readyState != 'loading') callback();\r\n else document.addEventListener('DOMContentLoaded', callback);\r\n}\r\n\r\nready(() => {\r\n const body = document.querySelector('body');\r\n const bodyLoadingClass = 'is-loading';\r\n\r\n //Handle scroll to submitted form element\r\n const formSubmittedElement = document.getElementById(\"umbraco-forms-form-submitted--clienti\");\r\n if(formSubmittedElement){\r\n window.scrollTo(0,formSubmittedElement.closest('.form-item').offsetTop);\r\n }\r\n\r\n //Fire dataLayer event for forms submission\r\n const formSubmitMessage = document.querySelector('[class^=\"umbraco-forms-submitmessage\"]');\r\n if(formSubmitMessage){\r\n window.dataLayer.push({\r\n 'event': 'formSubmission',\r\n 'formType':formSubmitMessage.dataset.formName\r\n });\r\n }\r\n\r\n //Add click listener to skip link\r\n document.querySelector('#skipLink').addEventListener('click',e => {\r\n document.querySelector('#mainContent').focus();\r\n });\r\n \r\n intersectionObservation();\r\n language();\r\n menu();\r\n search();\r\n searchbar(body);\r\n modal(body, bodyLoadingClass);\r\n video();\r\n cookies();\r\n accordion();\r\n linkAccordion();\r\n lottieAnimation();\r\n slider();\r\n header();\r\n});\r\n","/*************************************************/\r\n/* INTERSECTION OBSERVATION */\r\n/*************************************************/\r\n\r\nexport function intersectionObservation() {\r\n const activeClass = 'in-view',\r\n targetsClasses = [\".banner\"],\r\n options = {\r\n rootMargin: '200px'\r\n };\r\n const init = function () {\r\n let targets = [];\r\n for (var i = 0; i < targetsClasses.length; i++) {\r\n var targetElements = document.querySelectorAll(targetsClasses[i]);\r\n if (targetElements != null) {\r\n targets.push(...targetElements);\r\n }\r\n }\r\n if ('IntersectionObserver' in window) {\r\n function handleIntersection(entries) {\r\n entries.map((entry) => {\r\n if (entry.isIntersecting) {\r\n entry.target.classList.add(entry.target.classList[0] + \"--\" + activeClass);\r\n observer.unobserve(entry.target);\r\n }\r\n });\r\n }\r\n const observer = new IntersectionObserver(handleIntersection, options);\r\n targets.forEach(target => observer.observe(target));\r\n } else {\r\n targets.forEach(target => {\r\n target.classList.add(target.classList[0] + \"--\" + activeClass);\r\n });\r\n }\r\n };\r\n\r\n init();\r\n}","/*************************************************/\r\n/* LANGUAGE */\r\n/*************************************************/\r\n\r\nexport function language() {\r\n let languageSelector;\r\n const languageSelectorSelector = \".language-selector\";\r\n const visibleClass = \"language-selector--visible\";\r\n\r\n const toggleLanguageSelector = function(languageSelector,forceClose = false) {\r\n if(languageSelector != null) {\r\n if(forceClose) {\r\n languageSelector.classList.remove(visibleClass);\r\n }else if(!languageSelector.classList.contains(visibleClass)) {\r\n languageSelector.classList.add(visibleClass);\r\n }else {\r\n languageSelector.classList.remove(visibleClass);\r\n }\r\n }\r\n }\r\n\r\n const init = function () {\r\n languageSelector = document.querySelector(languageSelectorSelector);\r\n if(languageSelector != null) {\r\n languageSelector.querySelector('.language-selector__current').addEventListener('click', e => {\r\n const languageSelectorElement = e.target.closest(languageSelectorSelector);\r\n toggleLanguageSelector(languageSelectorElement);\r\n });\r\n\r\n document.addEventListener('click',e => {\r\n if(e.target.className.includes('language-selector')) {\r\n return false;\r\n }\r\n const languageSelector = document.querySelector(languageSelectorSelector);\r\n if(languageSelector != null) {\r\n toggleLanguageSelector(languageSelector,true);\r\n }\r\n })\r\n }\r\n };\r\n\r\n init();\r\n}\r\n\r\n","/*************************************************/\r\n/* VIDEO */\r\n/*************************************************/\r\nimport customEventsNames from './../customEventsNames';\r\nexport function video() {\r\n const videoPlayerSelector = '.video-item__player';\r\n const modalVideoPlayerId = '#videoModal';\r\n const videoPlayerPlayingClass = 'video-item__player--playing';\r\n\r\n const init = function () {\r\n const playYoutubeVideo = (playerId, videoId) => {\r\n var iterations = 0;\r\n var loadViewTimer = setInterval(() => {\r\n if (youtubeLoaded) {\r\n clearInterval(loadViewTimer);\r\n let ytplayer = new YT.Player(playerId, {\r\n height: '100%',\r\n width: '100%',\r\n videoId: videoId,\r\n host: 'https://www.youtube-nocookie.com',\r\n events: {\r\n 'onReady': onPlayerReady,\r\n 'onStateChange': onPlayerStateChange\r\n },\r\n playerVars: {\r\n showinfo: 0,\r\n rel: 0\r\n }\r\n });\r\n } else {\r\n iterations++;\r\n }\r\n\r\n //Lets try for 10 seconds\r\n if (iterations === 100) {\r\n clearInterval(loadViewTimer);\r\n }\r\n\r\n }, 50);\r\n }\r\n\r\n const playVideo = (playerId) => {\r\n const player = document.getElementById(playerId);\r\n if (player.tagName == 'VIDEO') {\r\n player.play();\r\n\r\n } else {\r\n player.querySelector('video').play();\r\n }\r\n\r\n const videoPlayerElement = player.closest(videoPlayerSelector);\r\n if (videoPlayerElement) {\r\n videoPlayerElement.classList.add(videoPlayerPlayingClass);\r\n }\r\n const videoStartedPlayingInModalEvent = new Event(customEventsNames.videoPlayingInModal);\r\n document.querySelector(modalVideoPlayerId).dispatchEvent(videoStartedPlayingInModalEvent);\r\n }\r\n\r\n const onPlayerReady = event => {\r\n event.target.playVideo();\r\n const player = document.querySelector(`#player${event.target.playerInfo.videoData.video_id}`);\r\n\r\n const videoStartedPlayingInModalEvent = new Event(customEventsNames.videoPlayingInModal);\r\n document.querySelector(modalVideoPlayerId).dispatchEvent(videoStartedPlayingInModalEvent);\r\n\r\n const videoPlayerElement = player.closest(videoPlayerSelector);\r\n if (videoPlayerElement) {\r\n videoPlayerElement.classList.add(videoPlayerPlayingClass);\r\n }\r\n }\r\n\r\n const onPlayerStateChange = event => {\r\n if (event.data === YT.PlayerState.ENDED) {\r\n const player = document.querySelector(`#player${event.target.playerInfo.videoData.video_id}`);\r\n const videoPlayerElement = player.closest(videoPlayerSelector);\r\n if (videoPlayerElement) {\r\n videoPlayerElement.classList.remove(videoPlayerPlayingClass);\r\n }\r\n }\r\n }\r\n\r\n document.addEventListener(customEventsNames.playVideoInModal, e => {\r\n if (e.target.id === 'modalplayer') {\r\n playVideo(e.detail.playerId);\r\n }\r\n });\r\n document.addEventListener(customEventsNames.playYoutubeVideoInModal, e => {\r\n if (e.target.id === 'modalplayer') {\r\n playYoutubeVideo(e.detail.playerId, e.detail.videoId);\r\n }\r\n }, false);\r\n\r\n document.addEventListener(customEventsNames.closeModal, e => {\r\n if (e.target.id === modalVideoPlayerId) {\r\n document.querySelector(videoPlayerSelector).classList.remove(videoPlayerPlayingClass);\r\n }\r\n }, false);\r\n\r\n const videoPlayerActionHandler = (e) => {\r\n const videoItem = e.target.closest(videoPlayerSelector);\r\n if (videoItem) {\r\n e.preventDefault();\r\n\r\n let videoId = videoItem.dataset.videoId;\r\n const playerId = videoItem.dataset.playerId;\r\n\r\n let videoSources = videoItem.dataset.videosources;\r\n let videoTypes = videoItem.dataset.videotypes;\r\n if (videoSources && videoTypes) {\r\n videoSources = videoSources.split(',');\r\n videoTypes = videoTypes.split(',');\r\n\r\n const modalId = videoItem.dataset.target;\r\n const videoElement = document.createElement('video');\r\n videoElement.controls = true;\r\n\r\n for (let i = 0; i < videoSources.length; i++) {\r\n const sourceElement = document.createElement('source');\r\n sourceElement.setAttribute('src', videoSources[i]);\r\n sourceElement.setAttribute('type', videoTypes[i]);\r\n videoElement.appendChild(sourceElement)\r\n }\r\n\r\n if (typeof modalId !== 'undefined' && modalId !== '') {\r\n var openModalEvent = new CustomEvent(customEventsNames.openModal, {\r\n detail: {\r\n modalId: modalId,\r\n videoElement: videoElement\r\n }\r\n });\r\n\r\n document.querySelector(modalVideoPlayerId).dispatchEvent(openModalEvent);\r\n\r\n } else {\r\n\r\n document.getElementById(playerId).replaceChildren(videoElement);\r\n playVideo(playerId);\r\n }\r\n }\r\n else if (typeof videoId != undefined && videoId != null && videoId != '') {\r\n if (!Cookiebot.consent.marketing) {\r\n CookieConsent.renew();\r\n } else {\r\n console.warn('Remember to setup the cookie consent solution for the Youtube script in video.js');\r\n const tag = document.createElement('script');\r\n tag.src = 'https://www.youtube.com/iframe_api';\r\n const firstScriptTag = document.getElementsByTagName('script')[0];\r\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\r\n\r\n\r\n //If video id is not set, it's probably a link from a RTE\r\n if (typeof videoId === undefined) {\r\n videoId = videoItem.querySelector('a').getAttribute('href');\r\n if (videoId && videoId.indexOf('/') === 0 && videoId.length > 1) {\r\n videoId = videoId.substr(1);\r\n }\r\n }\r\n if (videoId) {\r\n const modalId = videoItem.dataset.target;\r\n if (typeof modalId !== 'undefined' && modalId !== '') {\r\n var openModalEvent = new CustomEvent(customEventsNames.openModal, {\r\n detail: {\r\n modalId: modalId,\r\n videoId: videoId\r\n }\r\n });\r\n\r\n document.querySelector(modalVideoPlayerId).dispatchEvent(openModalEvent);\r\n\r\n } else {\r\n playYoutubeVideo(playerId, videoId);\r\n }\r\n } else {\r\n console.error('Video not found');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n const videoPlayers = document.querySelectorAll(videoPlayerSelector);\r\n if (videoPlayers.length > 0) {\r\n videoPlayers.forEach(player => {\r\n\r\n player.addEventListener('click', e => {\r\n //Only play the video if it's not already playing\r\n const videoPlayer = player.querySelector('video');\r\n if (!videoPlayer) {\r\n videoPlayerActionHandler(e);\r\n }\r\n });\r\n\r\n player.addEventListener('keyup', e => {\r\n e.preventDefault();\r\n if (e.key === 'Enter') {\r\n videoPlayerActionHandler(e);\r\n }\r\n });\r\n })\r\n }\r\n\r\n };\r\n\r\n init();\r\n}\r\n","/*************************************************/\r\n/* HEADER */\r\n/*************************************************/\r\n\r\nexport function menu() {\r\n const parentMenuItemSelector = '.menu-nav__item--parent';\r\n const submenuSelector = '.menu-nav--lvl-2';\r\n const headerSelector = '.header';\r\n const solidHeader = \"header-solid\";\r\n const activeClass = \"menu-nav__mega--active\";\r\n const parentMenuEnterEvents = ['click'];\r\n\r\n const closeMenu = () => {\r\n const openMenus = document.querySelectorAll(\".\" + activeClass);\r\n openMenus.forEach(menu => {\r\n menu.setAttribute('aria-hidden', true);\r\n document.querySelector(headerSelector).classList.remove(solidHeader);\r\n menu.classList.remove(activeClass);\r\n menu.previousElementSibling.classList.remove('menu-nav__link--parent--active');\r\n });\r\n };\r\n\r\n const handleMenuItemClick = (e) => {\r\n e.stopPropagation();\r\n const submenu = e.currentTarget.querySelector(submenuSelector);\r\n const isSubMenuOpen = submenu.classList.contains(activeClass);\r\n closeMenu();\r\n\r\n if (!isSubMenuOpen) {\r\n submenu.setAttribute('aria-hidden', false);\r\n if (document.querySelector(\".header-light\")) {\r\n document.querySelector(headerSelector).classList.add(solidHeader);\r\n }\r\n submenu.classList.add(activeClass);\r\n submenu.previousElementSibling.classList.add('menu-nav__link--parent--active');\r\n }\r\n };\r\n\r\n const init = () => {\r\n const parentMenuItems = document.querySelectorAll(parentMenuItemSelector);\r\n parentMenuItems.forEach(item => {\r\n parentMenuEnterEvents.forEach(event => {\r\n item.addEventListener(event, handleMenuItemClick);\r\n });\r\n });\r\n\r\n // Close menu on body click\r\n document.body.addEventListener('click', e => {\r\n const target = e.target;\r\n const isMenuItem = target.matches(parentMenuItemSelector) || target.closest(parentMenuItemSelector);\r\n const isSubmenu = target.closest(submenuSelector);\r\n if (!isMenuItem && !isSubmenu) {\r\n closeMenu();\r\n }\r\n });\r\n };\r\n\r\n init();\r\n}\r\n","// /*************************************************/\r\n// /* LOTTIE ANIMATIONS */\r\n// /*************************************************/\r\nimport lottie from \"lottie-web\";\r\n\r\nexport function lottieAnimation() {\r\n const init = function () {\r\n var lottieElements = document.querySelectorAll(\".lottie\");\r\n\r\n lottieElements.forEach(function (element) {\r\n var animationPath = element.getAttribute(\"data-lottie-json\");\r\n var loop = true; // Default loop value\r\n var delay = 0; // Default delay value\r\n\r\n // Load animation\r\n var animation = lottie.loadAnimation({\r\n container: element,\r\n renderer: 'svg',\r\n loop: loop,\r\n autoplay: false,\r\n path: animationPath\r\n });\r\n\r\n element.lottieInstance = animation;\r\n\r\n // Create Intersection Observer\r\n const observer = new IntersectionObserver(handleIntersection, { threshold: [0, 0.5, 1] });\r\n\r\n // Observe the element\r\n observer.observe(element);\r\n\r\n function handleIntersection(entries) {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n if (delay > 0) {\r\n setTimeout(() => {\r\n animation.play();\r\n }, delay);\r\n } else {\r\n animation.play();\r\n }\r\n } else {\r\n animation.pause();\r\n }\r\n });\r\n }\r\n });\r\n };\r\n\r\n init();\r\n}\r\n"],"names":["global","isCallable","tryToString","TypeError","module","exports","argument","isConstructor","String","wellKnownSymbol","create","definePropertyModule","UNSCOPABLES","ArrayPrototype","Array","prototype","undefined","f","configurable","value","key","charAt","S","index","unicode","length","isPrototypeOf","it","Prototype","isObject","$forEach","STRICT_METHOD","arrayMethodIsStrict","forEach","callbackfn","this","arguments","bind","call","toObject","callWithSafeIterationClosing","isArrayIteratorMethod","lengthOfArrayLike","createProperty","getIterator","getIteratorMethod","arrayLike","O","IS_CONSTRUCTOR","argumentsLength","mapfn","mapping","result","step","iterator","next","iteratorMethod","done","toIndexedObject","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","el","fromIndex","includes","indexOf","uncurryThis","IndexedObject","arraySpeciesCreate","push","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","that","specificCreate","self","boundFunction","target","map","filter","some","every","find","findIndex","filterReject","fails","V8_VERSION","SPECIES","METHOD_NAME","array","constructor","foo","Boolean","method","slice","isArray","originalArray","C","arraySpeciesConstructor","anObject","iteratorClose","fn","ENTRIES","error","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","from","exec","SKIP_CLOSING","ITERATION_SUPPORT","object","toString","stringSlice","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","Object","CORRECT_ARGUMENTS","tag","tryGet","callee","hasOwn","ownKeys","getOwnPropertyDescriptorModule","source","keys","defineProperty","getOwnPropertyDescriptor","i","MATCH","regexp","error1","error2","F","getPrototypeOf","IteratorPrototype","createPropertyDescriptor","setToStringTag","Iterators","returnThis","IteratorConstructor","NAME","DESCRIPTORS","bitmap","enumerable","writable","toPropertyKey","propertyKey","$","IS_PURE","FunctionName","createIteratorConstructor","setPrototypeOf","createNonEnumerableProperty","redefine","IteratorsCore","PROPER_FUNCTION_NAME","PROPER","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","name","values","proto","forced","path","wrappedWellKnownSymbolModule","Symbol","get","document","EXISTS","createElement","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","classList","documentCreateElement","DOMTokenListPrototype","window","userAgent","test","Pebble","classof","process","getBuiltIn","match","version","Deno","versions","v8","split","setGlobal","copyConstructorProperties","isForced","options","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","sham","regexpExec","RegExpPrototype","RegExp","SHAM","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","re","flags","uncurriedNativeRegExpMethod","nativeMethod","str","arg2","forceStringMethod","uncurriedNativeMethod","$exec","FunctionPrototype","Function","apply","Reflect","aCallable","getDescriptor","callBind","aFunction","namespace","getMethod","usingIterator","V","P","func","floor","Math","replace","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","position","captures","namedCaptures","replacement","tailPos","m","symbols","ch","capture","n","check","globalThis","g","hasOwnProperty","a","b","console","propertyIsEnumerable","store","functionToString","inspectSource","set","has","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","state","wmget","wmhas","wmset","metadata","facade","STATE","enforce","getterFor","type","noop","empty","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","feature","detection","data","normalize","POLYFILL","NATIVE","string","toLowerCase","isRegExp","USE_SYMBOL_AS_UID","$Symbol","Result","stopped","ResultPrototype","iterable","unboundFunction","iterFn","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","stop","condition","callFn","kind","innerResult","innerError","PrototypeOfArrayIteratorPrototype","arrayIterator","toLength","obj","flush","head","last","notify","toggle","node","promise","then","macrotask","IS_IOS","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","IS_NODE","MutationObserver","WebKitMutationObserver","Promise","queueMicrotaskDescriptor","queueMicrotask","parent","domain","exit","enter","resolve","nextTick","createTextNode","observe","characterData","task","getOwnPropertySymbols","symbol","PromiseCapability","reject","$$resolve","$$reject","activeXDocument","defineProperties","enumBugKeys","html","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","style","display","appendChild","src","contentWindow","open","Properties","objectKeys","props","IE8_DOM_DEFINE","$defineProperty","Attributes","propertyIsEnumerableModule","$getOwnPropertyDescriptor","$getOwnPropertyNames","arraySlice","windowNames","getOwnPropertyNames","getWindowNames","internalObjectKeys","concat","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","names","$propertyIsEnumerable","NASHORN_BUG","aPossiblePrototype","setter","CORRECT_SETTER","__proto__","input","pref","val","valueOf","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","newPromiseCapability","x","promiseCapability","InternalStateModule","getInternalState","enforceInternalState","TEMPLATE","unsafe","simple","join","R","re1","re2","regexpFlags","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeReplace","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","group","raw","groups","sticky","charsAdded","strCopy","multiline","ignoreCase","dotAll","$RegExp","CONSTRUCTOR_NAME","Constructor","TAG","uid","SHARED","mode","copyright","aConstructor","defaultConstructor","toIntegerOrInfinity","requireObjectCoercible","charCodeAt","CONVERT_TO_STRING","pos","first","second","size","codeAt","location","defer","channel","port","setImmediate","clear","clearImmediate","Dispatch","MessageChannel","counter","queue","ONREADYSTATECHANGE","run","id","runner","listener","event","post","postMessage","protocol","host","args","now","port2","port1","onmessage","addEventListener","importScripts","removeChild","setTimeout","max","min","integer","ceil","number","isSymbol","ordinaryToPrimitive","TO_PRIMITIVE","exoticToPrim","toPrimitive","postfix","random","NATIVE_SYMBOL","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","description","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","arg","k","len","E","A","checkCorrectnessOfIteration","$includes","addToUnscopables","defineIterator","ARRAY_ITERATOR","setInternalState","iterated","Arguments","$map","un$Slice","HAS_SPECIES_SUPPORT","start","end","fin","FUNCTION_NAME_EXISTS","nameRE","regExpExec","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","NativePromise","redefineAll","setSpecies","anInstance","iterate","speciesConstructor","microtask","promiseResolve","hostReportErrors","newPromiseCapabilityModule","perform","IS_BROWSER","PROMISE","getInternalPromiseState","NativePromisePrototype","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","DISPATCH_EVENT","createEvent","dispatchEvent","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","SUBCLASSING","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","INCORRECT_ITERATION","all","isThenable","isReject","notified","chain","reactions","ok","exited","reaction","handler","fail","rejection","onHandleUnhandled","onUnhandled","reason","initEvent","isUnhandled","emit","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","onRejected","wrap","r","capability","$promiseResolve","remaining","alreadyCalled","race","notARegExp","correctIsRegExpLogic","stringIndexOf","searchString","STRING_ITERATOR","point","fixRegExpWellKnownSymbolLogic","advanceStringIndex","getSubstitution","REPLACE","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","_","maybeCallNative","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","rx","res","functionalReplace","fullUnicode","results","accumulatedResult","nextSourcePosition","j","replacerArgs","callRegExpExec","MAX_UINT32","$push","SPLIT","nativeSplit","internalSplit","separator","limit","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","unicodeMatching","p","q","e","z","originalExec","NativeSymbol","SymbolPrototype","EmptyStringDescriptionStore","SymbolWrapper","symbolToString","symbolValueOf","desc","defineWellKnownSymbol","$toString","nativeObjectCreate","getOwnPropertyNamesExternal","HIDDEN","QObject","$stringify","nativeGetOwnPropertyDescriptor","nativeDefineProperty","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","$defineProperties","properties","$getOwnPropertySymbols","IS_OBJECT_PROTOTYPE","keyFor","sym","useSetter","useSimple","stringify","space","$replacer","hint","DOMIterables","handlePrototype","CollectionPrototype","COLLECTION_NAME","ArrayIteratorMethods","ArrayValues","factory","navigator","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","getLocationHref","createTag","extendPrototype","sources","destination","sourcePrototype","attr","prop","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","pause","resume","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","play","seek","playing","rate","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","abs","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","s","v","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","_workerSelf","setupWorker","Worker","Blob","blob","url","URL","createObjectURL","createWorker","completeLayers","layers","comps","layerData","jLen","kLen","completed","hasMask","maskProps","masksProperties","pt","convertPathsToAbsoluteValues","ty","findCompLayers","refId","completeShapes","shapes","completeText","comp","findComp","__used","JSON","parse","ks","o","checkVersion","minimum","animVersionString","animVersion","minimumVersion","checkText","iterateLayers","textLayer","documentData","animationData","assets","checkChars","chars","charData","ip","op","st","sr","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","c","checkShapes","completeClosingShapes","closed","cl","moduleOb","__complete","completeChars","dataFunctionManager","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","responseType","response","responseText","load","fullPath","callback","errorCallback","XMLHttpRequest","err","onreadystatechange","readyState","status","send","completeData","payload","animation","onComplete","onError","createProcess","loadAnimation","processId","origin","pathname","loadData","completeAnimation","anim","ImagePreloader","proxyImage","canvas","width","height","ctx","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","append","setCacheType","elementHelper","BaseEvent","triggerEvent","eventName","_cbs","callbacks","removeEventListener","splice","markerParser","parsePayloadLines","line","lines","keysCount","trim","Error","_markers","markers","_marker","markerData","time","tm","duration","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","container","animType","RendererClass","rendererSettings","globalData","defs","setProjectInterface","parseInt","autoloadSegments","initialSegment","setupAnimation","lastIndexOf","substr","fileName","trigger","setData","wrapperAttributes","attributes","getNamedItem","prerender","includeLayers","newLayers","fonts","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","animData","fr","searchExtraCompositions","updaFrameModifier","waitForFontsLoaded","triggerConfigError","rendererType","initItems","gotoFrame","resize","_width","_height","updateContainerSize","setSubframe","renderFrame","resetFrame","triggerRenderFrameError","togglePause","setCurrentRawFrameValue","getMarkerData","markerName","marker","goToAndStop","isFrame","numValue","Number","isNaN","frameModifier","goToAndPlay","playSegments","advanceTime","nextValue","_isComplete","checkSegments","adjustSegment","setSpeed","setDirection","setSegment","init","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","setLoop","isLooping","getPath","getAssetData","hide","show","getDuration","updateDocumentData","getElementByPath","animationManager","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","subtractPlayingCount","registerAnimation","elem","addPlayingCount","activate","nowTime","elapsedTime","requestAnimationFrame","searchAnimations","standalone","animElements","getElementsByClassName","lenAnims","setAttribute","body","getElementsByTagName","innerText","div","freeze","unfreeze","getRegisteredAnimations","animations","BezierFactory","beziers","bezEasing","BezierEasing","kSampleStepSize","float32ArraySupported","aA1","aA2","B","calcBezier","aT","getSlope","points","_p","_mSampleValues","_precomputed","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","_create","_release","_length","_maxLength","pool","newElement","release","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","storedData","buildBezierData","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","keyframes","keyframesMetadata","endValue","nextKeyTime","keyTime","to","ti","ind","__fnct","getBezierEasing","y","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quaternionToEuler","slerp","createQuaternion","omega","cosom","sinom","scale0","scale1","out","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","sid","slotManager","DynamicPropertyContainer","dynamicProperties","_isAnimated","iterateDynamicProperties","initDynamicPropertyContainer","pointPool","ShapePath","setPathData","setLength","doubleArrayLength","setXYAt","setTripleAt","vX","vY","oX","oY","iX","iY","reverse","newPath","vertices","outPoints","inPoints","cnt","shapePool","shapePath","clone","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","is","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","_t","rotateX","rotateY","rotateZ","shear","sx","skew","skewFromAxis","scale","sz","setTransform","l","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","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","href","setSubframeRendering","setPrefix","prefix","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","decodeURIComponent","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","pop","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","amount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","px","py","pz","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","depth","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","items","itemsTransform","cont","hasReloaded","copies","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","w","combinedCharacters","BLACK_FLAG_CODE_POINT","surrogateModifiers","setUpNode","font","family","parentNode","fontFamily","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","offsetWidth","familyArray","enabledFamilies","trimFontOptions","createHelper","def","helper","engine","fontProps","tHelper","fFamily","textContent","fClass","tCanvasHelper","OffscreenCanvas","measureText","text","getComputedTextLength","getCodePoint","codePoint","isRegionalCode","Font","typekitLoaded","_warned","Date","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","charCode","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","isVariationSelector","fontPrototype","found","list","cache","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","loaded","monoCase","sansCase","fPath","fOrigin","querySelectorAll","rel","sc","getCharData","_char","warn","getFontByName","fName","_char2","fontName","doubleSize","singleSize","loadedCount","SlotManager","slotFactory","RenderableElement","slots","assign","initRenderable","isInRange","hidden","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","textInterface","setBlendMode","blendModeValue","bm","baseElement","layerElement","layerId","effectsManager","getType","prepareProperties","isVisible","_isParent","getBaseElement","FootageInterface","getFootageData","timeRemapped","totalVolume","volumeValue","checkLayers","buildItem","checkPendingElements","createItem","layer","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","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","level","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","_i","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","update","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","charactersArray","shouldCombine","shouldCombineNext","currentChars","newLineFlag","letters","anchorGrouping","currentSize","currentPos","currentLine","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","an","add","anIndexes","animatorJustifyOffset","extra","animatorData","letterData","based","animators","indexes","fh","fs","fb","rn","totalChars","newInd","currentInd","newData","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorProp","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","sm","getMult","textProperty","easer","tot","smoothness","threshold","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","className","focusable","filterSize","runExpressions","destroyed","ShapeTransformManager","sequences","sequenceList","transform_key_count","singleShape","textContainer","buildTextContents","textArray","textContents","currentTextContent","fromCharCode","buildShapeData","shapeItem","tSpan","usesGlyphs","cachedSpansLength","span","childSpan","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","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","fill","currentRender","sWidth","fValue","CVImageElement","CVSolidElement","CanvasRendererBase","CanvasContext","strokeStyle","lineCap","CVContextData","stack","cArrPos","cTr","nativeContext","transformMat","currentOpacity","currentFillStyle","appliedFillStyle","currentStrokeStyle","appliedStrokeStyle","currentLineWidth","appliedLineWidth","currentLineCap","appliedLineCap","currentLineJoin","appliedLineJoin","appliedMiterLimit","currentMiterLimit","CVCompElement","CanvasRenderer","clearCanvas","context","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","buffer","forceRealStack","restore","transformHelper","dashResetter","preTransforms","co","wi","da","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","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","setContext","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","item","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","Uint8Array","crypto","msCrypto","getRandomValues","browser","plugins","screen","autoseed","arc4","prng","int32","quick","pass","is_math_call","initialize$2","propTypes","SHAPE","_typeof$1","ExpressionManager","fetch","frames","_lottieGlobal","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","sub","mul","mod","$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","property","noOp","_value","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","active","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","substring","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","_name","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","propertyName","createGroupInterface","groupInterface","mn","_propertyGroup","createValueInterface","numProperties","np","enabled","en","expressionProperty","setGroupProperty","effectsData","ShapePathInterface","view","propertyIndex","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","interfaces","transformInterfaceFactory","cix","contentsInterfaceFactory","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","_interfaceFunction","_sourceText","sourceText","stringValue","fillColor","_typeof","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","footage","getInterface","expressionHelpers","searchExpressions","speed","_cachingAtTime","getStaticValueAtTime","addPropertyDecorator","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","current","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","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","SVGGaussianBlurEffect","TransformEffect","SVGTransformEffect","CVTransformEffect","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","sigma","dimensions","sigmaX","sigmaY","edgeMode","forceFrame","isUniformScale","scaleHeight","scaleWidth","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","amdO","getter","__esModule","definition","search","typeTimer","searchFormInput","suggestionsSelector","searchFormSelector","querySelector","searchForm","dataset","showSuggestions","remove","query","clearTimeout","endpointUrl","getAttribute","insertAdjacentHTML","log","getAndDisplaySearchResults","clickTarget","searchResultBox","closest","searchbar","searchContainer","searchInput","showSearchClass","closeSearch","stopPropagation","contains","focus","openModal","closeModal","playVideoInModal","playYoutubeVideoInModal","videoPlayingInModal","accordionInitialised","accordionActivateItemEventName","accordionDeactivateItemEventName","accordionDeactivateAllItemsEventName","modal","bodyLoadingClass","utils","modals","modalContentClassSelector","mainContentSelector","modalPlayerId","modalShowClass","triggerElement","Modal","OpenModal","modalId","activeElement","CloseModal","closeModalEvent","CustomEvent","customEventsNames","bubbles","Video","AddYoutubeVideoToModal","videoId","player","playYoutubeVideoEvent","detail","playerId","AddVideoToModal","videoElement","playVideoEvent","preventDefault","cookies","cookiePlaceholderSelector","placeholderSelectors","SetPlaceholderDisplayState","placeholder","displayState","marketingPlaceholders","Cookiebot","consent","marketing","statisticsPlaceholders","statistics","preferencesPlaceholders","preferences","categories","renew","accordion","accordions","accordionParentSelector","accordionItemSelector","accordionItemContentSelector","accordionItemActiveClass","getTargetedAccordion","accordionId","getTargetedAccordionItem","targetedAccordion","accordionItemId","setActiveStylesOnAccordionItem","accordionItem","accordionItemContent","maxHeight","scrollHeight","setInactiveStylesOnAccordionItem","targetedAccordionItem","deactivateAllItemsEvent","clickedAccordionItem","itemId","itemIndex","accordionItemIndex","accordionParent","deactiveAccordionItemEvent","activateAccordionItemEvent","linkAccordionParent","initialActiveItem","accordionInitialized","extend","ssrDocument","blur","nodeName","importNode","hash","hostname","doc","ssrWindow","history","replaceState","pushState","go","back","getComputedStyle","getPropertyValue","matchMedia","cancelAnimationFrame","win","delay","getTranslate","axis","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","parseFloat","m42","isNode","HTMLElement","nodeType","noExtend","nextSource","keysArray","nextKey","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","wrapperEl","scrollSnapType","cssModeFrameID","isOutOfBound","animate","getTime","progress","easeProgress","currentPosition","scrollTo","elementChildren","selector","HTMLSlotElement","assignedElements","matches","showWarning","classes","classesToTokens","elementStyle","child","previousSibling","elementOuterSize","includeMargins","support","deviceCached","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","calcDevice","getBrowser","needPerspectiveFix","major","minor","isWebView","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","on","events","priority","eventsListeners","once","onceHandler","off","__emitterProxy","_len","_key","onAny","eventsAnyListeners","offAny","eventHandler","_len2","_key2","toggleSlideClasses$1","slideEl","toggleSlideClasses","processLazyPreloader","imageEl","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","unlazy","slides","preload","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","activeIndex","grid","rows","activeColumn","preloadColumns","column","slideIndexLastInView","rewind","realIndex","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","runCallbacksOnInit","updateClickedSlide","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalizedSnapGrid","prevSnap","prevSnapIndex","slideReset","slideToClosest","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","onTouchStart","originalEvent","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","isChild","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","getRootNode","closestElement","allowClick","swipeHandler","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","touchAngle","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bySwiperTouchMove","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","running","paused","resizeTimeout","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","swiperElementNodeName","resizeObserver","eventsPrefix","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","innerHeight","minRatio","sort","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","resultClasses","prepareClasses","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","extendParams","swiperParams","passedParams","trunc","clickTimeout","velocities","imagesToLoad","setProgress","cls","getSlideClasses","updates","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","deleteInstance","cleanStyles","deleteProps","static","newDefaults","installModule","slider","latestArticlesSliders","latestArticlesSlidersElements","swiperInstance","slideChange","nextDuplicateSlide","unloadedSlideImage","handleSlideChange","slideChangeTransitionEnd","handleSlideChangeTransitionEnd","header","prevScrollPos","pageYOffset","isAtTop","megaMenu","stickyHeaderClass","stickyLogo","fixedLogo","parentActiveClass","megaMenuActiveClass","ticking","currentScrollPos","scrollY","menu","clearActiveMenuItems","prototypeGroup","protoMethod","use","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","unobserve","observers","attach","WebkitMutationObserver","mutations","observerUpdate","childList","observeParents","observeSlideChildren","containerParents","parents","parentElement","elementParents","disconnect","formSubmittedElement","activeClass","targetsClasses","languageSelector","languageSelectorSelector","visibleClass","toggleLanguageSelector","videoPlayerSelector","modalVideoPlayerId","videoPlayerPlayingClass","imageContainers","linkAccordionelector","accordionImageActiveClass","formSubmitMessage","dataLayer","formName","rootMargin","targets","targetElements","IntersectionObserver","entry","isIntersecting","languageSelectorElement","parentMenuItemSelector","submenuSelector","headerSelector","solidHeader","parentMenuEnterEvents","closeMenu","handleMenuItemClick","submenu","currentTarget","isSubMenuOpen","isMenuItem","isSubmenu","playYoutubeVideo","loadViewTimer","youtubeLoaded","YT","Player","onPlayerReady","onPlayerStateChange","playerVars","showinfo","playVideo","tagName","videoPlayerElement","videoStartedPlayingInModalEvent","Event","playerInfo","videoData","video_id","PlayerState","ENDED","videoPlayerActionHandler","videoItem","videoSources","videosources","videoTypes","videotypes","controls","sourceElement","openModalEvent","replaceChildren","firstScriptTag","CookieConsent","videoPlayers","image","animationPath","lottieInstance"],"sourceRoot":""}