{"version":3,"sources":["webpack:///./src/assets/images/phone_web.png","webpack:///./src/components/PaymentCancel/PaymentCancel.vue?87b9","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/core-js/internals/to-offset.js","webpack:///./node_modules/core-js/modules/es.typed-array.find-last-index.js","webpack:///./src/assets/images/wtf.svg","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/core-js/modules/es.typed-array.to-sorted.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/buildFullPath.js","webpack:///./src/components/PaymentTimeoutFail/PaymentTimeoutFail.vue?42a5","webpack:///./src/components/PaymentSuccess/PaymentSuccess.vue?0a40","webpack:///./node_modules/lottie-vuejs/node_modules/axios/index.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./node_modules/core-js/modules/es.typed-array.set.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/adapters/xhr.js","webpack:///./src/assets/images/phone_mob.png","webpack:///./src/views/BvrPayCheckout/BvrPayCheckout.vue?bf27","webpack:///./src/common-components/PageContentContainer.vue?1e87","webpack:///./src/common-components/PageContentContainer.vue?3c69","webpack:///./src/common-components/PageContentContainer.vue","webpack:///./src/components/PaymentAttemptsEnded/PaymentAttemptsEnded.vue?a9a7","webpack:///./src/components/PaymentAttemptsEnded/PaymentAttemptsEnded.vue?0f6d","webpack:///./node_modules/quasar/src/components/icon/QIcon.js","webpack:///./node_modules/quasar/src/utils/throttle/throttle.js","webpack:///./node_modules/quasar/src/directives/ripple/Ripple.js","webpack:///./node_modules/quasar/src/composables/private.use-align/use-align.js","webpack:///./node_modules/quasar/src/composables/private.use-router-link/use-router-link.js","webpack:///./node_modules/quasar/src/components/btn/use-btn.js","webpack:///./node_modules/quasar/src/components/btn/QBtn.js","webpack:///./src/components/PaymentAttemptsEnded/PaymentAttemptsEnded.vue","webpack:///./src/components/PaymentCancel/PaymentCancel.vue?2f97","webpack:///./src/common-components/BackToStoreButton.vue?35da","webpack:///./src/common-components/BackToStoreButton.vue?4b07","webpack:///./src/common-components/BackToStoreButton.vue","webpack:///./src/components/PaymentConfirmation/child-components/PaymentAvailableAttemptsView.vue?7120","webpack:///./src/components/PaymentConfirmation/child-components/PaymentAvailableAttemptsView.vue?e8aa","webpack:///./src/components/PaymentConfirmation/child-components/PaymentAvailableAttemptsView.vue","webpack:///./src/components/PaymentCancel/PaymentCancel.vue?0172","webpack:///./src/components/PaymentCancel/PaymentCancel.vue","webpack:///./src/components/PaymentConfirmation/PaymentConfirmation.vue?7fa1","webpack:///./src/enums/AuthType.ts","webpack:///./src/temp-components/AdditionalBonusAdView.vue?185c","webpack:///./src/temp-components/AdditionalBonusAdView.vue?ef49","webpack:///./src/temp-components/AdditionalBonusAdView.vue","webpack:///./src/components/PaymentConfirmation/child-components/PaymentConfirmationControlPanel.vue?8dd7","webpack:///./src/components/PaymentConfirmation/child-components/PaymentConfirmationControlPanel.vue?863e","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerGears.js","webpack:///./src/components/PaymentConfirmation/child-components/PaymentConfirmationControlPanel.vue","webpack:///./src/components/PaymentConfirmation/child-components/PaymentConfirmationDialogHeader.vue?21a6","webpack:///./src/components/PaymentConfirmation/child-components/PaymentConfirmationDialogHeader.vue?e0f9","webpack:///./src/components/PaymentConfirmation/child-components/PaymentConfirmationDialogHeader.vue","webpack:///./src/components/PaymentConfirmation/child-components/PaymentErrorView.vue?d04a","webpack:///./src/components/PaymentConfirmation/child-components/PaymentErrorView.vue?1fa1","webpack:///./src/components/PaymentConfirmation/child-components/PaymentErrorView.vue","webpack:///./src/components/PaymentConfirmation/child-components/PaymentInfoPanel.vue?fc55","webpack:///./src/components/PaymentConfirmation/child-components/LoyaltyPointsPanel.vue?2e77","webpack:///./src/components/PaymentConfirmation/child-components/LoyaltyPointsPanel.vue?f54d","webpack:///./node_modules/quasar/src/composables/private.use-dark/use-dark.js","webpack:///./node_modules/quasar/src/components/separator/QSeparator.js","webpack:///./node_modules/quasar/src/components/spinner/QSpinnerTail.js","webpack:///./src/components/PaymentConfirmation/child-components/LoyaltyPointsPanel.vue","webpack:///./src/components/PaymentConfirmation/child-components/PaymentInfoPanel.vue?5420","webpack:///./src/components/PaymentConfirmation/child-components/PaymentInfoPanel.vue","webpack:///./src/components/PaymentConfirmation/child-components/PaymentVerifyPanel.vue?239a","webpack:///./src/components/PaymentConfirmation/child-components/PaymentVerifyPanel.vue?1862","webpack:///./src/components/PaymentConfirmation/child-components/PaymentVerifyPanel.vue","webpack:///./src/components/PaymentConfirmation/child-components/PhoneNumberPanel.vue?b68d","webpack:///./src/components/PaymentConfirmation/child-components/PhoneNumberPanel.vue?b27e","webpack:///./node_modules/quasar/src/utils/uid/uid.js","webpack:///./node_modules/quasar/src/composables/use-id/use-id.js","webpack:///./node_modules/quasar/src/composables/use-split-attrs/use-split-attrs.js","webpack:///./node_modules/quasar/src/composables/use-form/use-form-child.js","webpack:///./node_modules/quasar/src/utils/patterns/patterns.js","webpack:///./node_modules/quasar/src/composables/private.use-validate/use-validate.js","webpack:///./node_modules/quasar/src/utils/private.focus/focus-manager.js","webpack:///./node_modules/quasar/src/composables/private.use-field/use-field.js","webpack:///./node_modules/quasar/src/components/input/use-mask.js","webpack:///./node_modules/quasar/src/composables/use-form/private.use-form.js","webpack:///./node_modules/quasar/src/composables/private.use-file/use-file-dom-props.js","webpack:///./node_modules/quasar/src/composables/private.use-key-composition/use-key-composition.js","webpack:///./node_modules/quasar/src/components/input/QInput.js","webpack:///./src/components/PaymentConfirmation/child-components/PhoneNumberPanel.vue","webpack:///./src/components/PaymentConfirmation/child-components/PushNotificationSendDelayCounter.vue?e317","webpack:///./src/components/PaymentConfirmation/child-components/PushNotificationSendDelayCounter.vue?bc3c","webpack:///./src/components/PaymentConfirmation/child-components/PushNotificationSendDelayCounter.vue","webpack:///./src/components/PaymentConfirmation/PaymentConfirmation.vue?96a8","webpack:///./src/components/PaymentConfirmation/PaymentConfirmation.vue","webpack:///./src/components/PaymentDialogSmall/PaymentDialogSmall.vue?2572","webpack:///./src/components/PaymentDialogSmall/child-components/PushConfirmReminder.vue?1254","webpack:///./src/components/PaymentDialogSmall/child-components/PushConfirmReminder.vue?3e73","webpack:///./src/components/PaymentDialogSmall/child-components/PushConfirmReminder.vue","webpack:///./node_modules/lottie-vuejs/src/LottieAnimation.vue","webpack:///./node_modules/lottie-vuejs/src/LottieAnimation.vue?3989","webpack:///./src/components/PaymentDialogSmall/PaymentDialogSmall.vue?c833","webpack:///./src/components/PaymentDialogSmall/PaymentDialogSmall.vue","webpack:///./src/components/PaymentError/PaymentError.vue?0f0e","webpack:///./src/components/PaymentError/PaymentError.vue?894f","webpack:///./src/components/PaymentError/PaymentError.vue","webpack:///./src/components/PaymentSuccess/PaymentSuccess.vue?2003","webpack:///./src/components/PaymentSuccess/PaymentSuccess.vue?9cc3","webpack:///./src/components/PaymentSuccess/PaymentSuccess.vue","webpack:///./src/components/PaymentTimeoutFail/PaymentTimeoutFail.vue?dfb1","webpack:///./src/components/PaymentTimeoutFail/PaymentTimeoutFail.vue?db9c","webpack:///./src/components/PaymentTimeoutFail/PaymentTimeoutFail.vue","webpack:///./src/views/BvrPayCheckout/BvrPayCheckout.vue?1f02","webpack:///./src/views/BvrPayCheckout/BvrPayCheckout.vue","webpack:///./src/assets/images/payment_failed.png","webpack:///./node_modules/core-js/modules/es.typed-array.with.js","webpack:///./src/common-components/PageContentContainer.vue?da07","webpack:///./src/components/PaymentAttemptsEnded/PaymentAttemptsEnded.vue?25ed","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/InterceptorManager.js","webpack:///./src/components/PaymentDialogSmall/child-components/PushConfirmReminder.vue?755f","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./src/assets/images/text_web.png","webpack:///./src/assets/images/bonus.svg","webpack:///./src/assets/emoji/emoji_loading_screen.png","webpack:///./src/components/PaymentConfirmation/child-components/LoyaltyPointsPanel.vue?2cb0","webpack:///./src/components/PaymentConfirmation/child-components/PushNotificationSendDelayCounter.vue?1e17","webpack:///./node_modules/core-js/modules/es.typed-array.to-reversed.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./src/assets/images/payment_successful.png","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/cancel/Cancel.js","webpack:///./src/components/PaymentConfirmation/child-components/PaymentConfirmationControlPanel.vue?be87","webpack:///./src/assets/images/payment-timeout.svg","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/defaults.js","webpack:///./src/components/PaymentDialogSmall/PaymentDialogSmall.vue?0240","webpack:///./node_modules/core-js/modules/es.typed-array.at.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/settle.js","webpack:///./node_modules/lottie-web/build/player/lottie.js","webpack:///./src/components/PaymentError/PaymentError.vue?bf5e","webpack:///./src/components/PaymentConfirmation/child-components/PaymentInfoPanel.vue?9531","webpack:///./node_modules/core-js/modules/es.typed-array.find-last.js","webpack:///./src/assets/images/temp-images/additional_bonus_desktop.svg","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/axios.js","webpack:///./node_modules/core-js/internals/array-iteration-from-last.js","webpack:///./node_modules/core-js/internals/array-method-is-strict.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/core-js/modules/es.iterator.some.js","webpack:///./src/assets/images/edit.svg","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/cookies.js","webpack:///./src/components/PaymentConfirmation/child-components/PaymentAvailableAttemptsView.vue?c0b2","webpack:///./node_modules/core-js/internals/is-big-int-array.js","webpack:///./src/assets/emoji/emoji_payment_fail.png","webpack:///./src/components/PaymentConfirmation/child-components/PaymentErrorView.vue?747c","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/combineURLs.js","webpack:///./src/assets/images/temp-images/additional_bonus_mobile.svg","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/utils.js","webpack:///./src/components/PaymentConfirmation/PaymentConfirmation.vue?a2b7","webpack:///./src/assets/emoji/emoji_payment_success.png","webpack:///./node_modules/core-js/internals/array-with.js","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./node_modules/core-js/modules/es.iterator.every.js","webpack:///./src/temp-components/AdditionalBonusAdView.vue?7801","webpack:///./src/components/PaymentConfirmation/child-components/PaymentConfirmationDialogHeader.vue?563d","webpack:///./node_modules/core-js/internals/array-to-reversed.js","webpack:///./node_modules/core-js/internals/array-from-constructor-and-list.js","webpack:///./src/components/PaymentConfirmation/child-components/PhoneNumberPanel.vue?c0e4","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/createError.js","webpack:///./src/views/BvrPayCheckout/BvrPayCheckout.vue?e4ec","webpack:///./node_modules/core-js/internals/array-buffer-view-core.js","webpack:///./node_modules/core-js/internals/to-big-int.js","webpack:///./node_modules/core-js/modules/es.iterator.find.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/core-js/internals/to-positive-integer.js","webpack:///./src/assets/images/error.png","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/lottie-vuejs/node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./src/assets/images/text_mob.png"],"names":["module","exports","utils","transformData","isCancel","defaults","throwIfCancellationRequested","config","cancelToken","throwIfRequested","headers","data","transformRequest","merge","common","method","forEach","adapter","then","response","transformResponse","reason","Promise","reject","Cancel","CancelToken","executor","TypeError","resolvePromise","this","promise","resolve","token","message","prototype","source","cancel","c","encode","val","encodeURIComponent","replace","url","params","paramsSerializer","serializedParams","isURLSearchParams","toString","parts","key","isArray","v","isDate","toISOString","isObject","JSON","stringify","push","join","hashmarkIndex","indexOf","slice","$","$reduce","left","arrayMethodIsStrict","CHROME_VERSION","IS_NODE","CHROME_BUG","FORCED","target","proto","forced","reduce","callbackfn","length","arguments","undefined","ignoreDuplicateOf","i","parsed","split","line","trim","substr","toLowerCase","concat","toPositiveInteger","$RangeError","RangeError","it","BYTES","offset","ArrayBufferViewCore","$findLastIndex","findLastIndex","aTypedArray","exportTypedArrayMethod","predicate","callback","arr","apply","uncurryThis","aCallable","arrayFromConstructorAndList","getTypedArrayConstructor","sort","TypedArrayPrototype","compareFn","O","A","error","code","request","isAxiosError","toJSON","name","description","number","fileName","lineNumber","columnNumber","stack","isAbsoluteURL","combineURLs","baseURL","requestedURL","__webpack_amd_options__","globalThis","call","lengthOfArrayLike","toOffset","toIndexedObject","fails","Int8Array","Int8ArrayPrototype","$set","set","WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS","array","Uint8ClampedArray","0","TO_OBJECT_BUG","NATIVE_ARRAY_BUFFER_VIEWS","arrayLike","src","len","index","settle","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","isFormData","XMLHttpRequest","auth","username","password","Authorization","btoa","fullPath","open","toUpperCase","timeout","onreadystatechange","readyState","status","responseURL","responseHeaders","getAllResponseHeaders","responseData","responseType","responseText","statusText","onabort","onerror","ontimeout","timeoutErrorMessage","isStandardBrowserEnv","cookies","xsrfValue","withCredentials","xsrfCookieName","read","xsrfHeaderName","setRequestHeader","isUndefined","e","onDownloadProgress","addEventListener","onUploadProgress","upload","abort","send","render","_ctx","_cache","$props","$setup","$data","$options","_component_Header","_resolveComponent","_component_payment_confirmation","_component_payment_timeout_fail","_component_payment_success","_component_payment_attempts_ended","_component_payment_error","_component_PaymentCancel","_component_payment_dialog_small","_component_page_content_container","_component_Footer","_component_q_layout","_openBlock","_createBlock","view","class","default","_withCtx","_createVNode","sectionDescription","isLoading","currentScreen","CheckoutScreen","PaymentConfirmation","_createCommentVNode","PaymentFail","PaymentSuccess","PaymentAttemptsEnded","PaymentError","PaymentCancel","_","_hoisted_1","_createElementBlock","_renderSlot","$slots","__exports__","_component_q_btn","_createStaticVNode","_imports_0","ref","id","label","onClick","$event","handleBackToStoreClick","setup","store","useStore","dispatch","Actions","defaultViewBox","sameFn","ionFn","libMap","matMap","o_","r_","s_","symMap","sym_o_","sym_r_","sym_s_","libRE","RegExp","Object","keys","matRE","symRE","mRE","imgRE","svgUseRE","ionRE","faRE","createComponent","props","useSizeProps","tag","type","String","color","Boolean","right","slots","proxy","$q","getCurrentInstance","sizeStyle","useSize","classes","computed","cls","icon","none","iconMapFn","res","content","test","def","viewBox","svg","nodes","map","path","d","style","transform","h","img","substring","svguse","matches","match","platform","is","ios","value","role","hSlot","hMergeSlot","fn","limit","result","wait","setTimeout","showRipple","evt","el","ctx","forceCenter","modifiers","stop","center","node","document","createElement","innerNode","pos","position","top","width","height","getBoundingClientRect","diameter","Math","sqrt","radius","centerX","x","centerY","y","className","css","opacity","setAttribute","appendChild","remove","clearTimeout","timer","classList","add","splice","updateModifiers","arg","cfg","assign","ripple","early","keyCodes","createDirective","beforeMount","binding","instance","appContext","globalProperties","enabled","start","qSkipRipple","qKeyEvent","keystart","throttle","isKeyCode","__qripple","addEvt","updated","oldValue","beforeUnmount","cleanEvt","_qripple","alignMap","between","around","evenly","stretch","alignValues","useAlignProps","align","validator","includes","vertical","getOriginalPath","record","aliasOf","isSameRouteRecord","a","b","includesParams","outer","inner","innerValue","outerValue","Array","some","isEquivalentArray","every","isSameRouteLocationParamsValue","isSameRouteLocationParams","useRouterLinkNonMatchingProps","to","href","disable","fallbackTag","useDisableForRouterLinkProps","vm","emit","hasRouter","vmHasRouter","hasHrefLink","hasRouterLinkProps","resolvedLink","getLink","hasRouterLink","hasLink","linkTag","linkAttrs","linkActiveIndex","matched","routeMatched","currentMatched","$route","findIndex","bind","parentRecordPath","linkIsActive","linkIsExactActive","linkClass","exactActiveClass","activeClass","exact","$router","navigateToRouterLink","returnRouterError","preventDefault","metaKey","altKey","ctrlKey","shiftKey","button","catch","navigateOnClick","go","opts","defaultPrevented","btnPadding","xs","sm","md","lg","xl","defaultSizes","formTypes","mediaTypeRE","btnDesignOptions","getBtnDesign","defaultValue","flat","outline","unelevated","nonRoundBtnProps","Number","iconRight","acc","square","rounded","glossy","size","fab","fabMini","padding","textColor","noCaps","noWrap","dense","tabindex","loading","useBtnProps","round","alignClass","useAlign","useRouterLink","obj","minWidth","minHeight","isRounded","isActionable","tabIndex","design","attributes","disabled","percentage","colors","shape","innerClasses","passiveCapture","listenOpts","touchTarget","keyboardTarget","mouseTarget","darkPercentage","onTouchstart","Function","emits","useBtn","rootRef","blurTargetRef","avoidMouseRipple","localTouchTargetEl","mouseTimer","hasLabel","rippleProps","percentageStyle","max","min","transition","onEvents","onMousedown","onLoadingEvt","onKeydown","onKeyup","has","touch","suffix","stopAndPrevent","nodeProps","activeElement","body","contains","focus","onClickCleanup","removeEventListener","cleanup","onPressEnd","MouseEvent","prevent","cancelBubble","dispatchEvent","destroying","blurTarget","onBeforeUnmount","click","QIcon","child","Transition","QSpinner","withDirectives","Ripple","QBtn","_component_payment_available_attempts_view","_component_back_to_store_button","attemptsAvailable","availableConfirmationAttemptCount","handlePaymentConfirmation","failureRedirectUrl","required","globalDocument","location","_hoisted_2","_createElementVNode","_toDisplayString","attemptsWordRestVariant","attemptsWordVariant","lastDigit","parseInt","variant","components","PaymentAvailableAttemptsView","BackToStoreButton","getters","Getters","defaultFailureRedirectUrl","commit","Mutations","_hoisted_3","_component_payment_confirmation_dialog_header","_component_additional_bonus_ad_view","_component_payment_info_panel","_component_payment_verify_panel","_component_phone_number_panel","_component_push_notification_send_delay_counter","_component_payment_error_view","_component_payment_confirmation_control_panel","_Fragment","partnerSite","merchantInfo","merchantName","partnerOrderId","bvrCheckoutData","hideOrderNumber","_createTextVNode","headerCaption","isLoyaltyPointsLoading","authType","sumAmount","amount","isVerifyPayment","phoneNumber","isError","isPhoneNumberInputError","canChangePhoneNumber","errorMessage","phoneNumberInputErrorMessage","onInput","handlePhoneNumberInput","isApproveButtonDisabled","isApproveError","isPaymentSuspend","timeCounterValue","pushSuspensionTime","errorCode","onConfirm","buttonLabel","isWaiting","AuthType","isTargetMerchant","isAuthTypeVerify","_normalizeClass","_imports_1","defineComponent","_checkoutData$merchan","checkoutOptions","CommonGetters","checkoutData","loyaltyMerchants","loyalityAdMerchants","merchantId","verify","_component_q_spinner_gears","isDisabled","$emit","innerHTML","useSpinnerProps","cSize","useSpinner","preserveAspectRatio","xmlns","QSpinnerGears","_directive_t","_resolveDirective","_withDirectives","_hoisted_4","_hoisted_5","_component_loyalty_points_panel","integerSumPart","decimalSumPart","_component_q_separator","_component_q_img","_component_q_spinner_tail","isBonusAmountVisible","isVerify","inset","spaced","bonusAsString","floor","unitsDescription","set1","set2","bonusAmount","useDarkProps","dark","isActive","insetMap","true","item","margins","isDark","useDark","orientation","orientClass","insetClass","dir","QSeparator","QImg","QSpinnerTail","LoyaltyPointsPanel","sumAmountAsString","sum","toFixed","paymentVerifyText","_component_q_input","modelValue","phone","handleNumberInput","mask","prepend","append","formattedPhoneNumber","buf","bufIdx","hexBytes","randomBytes","lib","crypto","window","msCrypto","getRandomValues","n","bytes","Uint8Array","r","random","BUFFER_SIZE","parseValue","getId","uid","getValue","isRuntimeSsrPreHydration","onMounted","watch","newId","listenerRE","attrs","vnode","listeners","update","onBeforeUpdate","validate","resetValidation","requiresQForm","$form","inject","formKey","unbindComponent","bindComponent","console","hex","hexa","hexOrHexa","rgb","rgba","testPattern","date","time","fulltime","timeOrFulltime","email","hexColor","hexaColor","hexOrHexaColor","rgbColor","rgbaColor","rgbOrRgbaColor","hexOrRgbColor","hexaOrRgbaColor","anyColor","lazyRulesValues","useValidateProps","noErrorIcon","rules","reactiveRules","lazyRules","focused","innerLoading","innerError","innerErrorMessage","isDirtyModel","useFormChild","unwatchRules","validateIndex","hasRules","canDebounceValidate","hasError","onRulesChange","debouncedValidate","setDirty","err","msg","promises","rule","all","find","immediate","deep","debounce","injectProp","queue","waitFlags","addFocusFn","removeFocusFn","filter","entry","fieldValueIsFilled","useNonInputFieldProps","stackLabel","hint","hideHint","prefix","labelColor","bgColor","filled","outlined","borderless","standout","labelSlot","bottomSlots","hideBottomSpace","itemAligned","counter","clearable","clearIcon","readonly","autofocus","for","useFieldProps","maxlength","useFieldEmits","useFieldState","requiredForAttr","tagProp","changeEvent","targetUid","useId","editable","hasPopupOpen","splitAttrs","useSplitAttrs","targetRef","controlRef","state","focusoutTimer","hasValue","emitValue","controlEvents","onFocusin","onControlFocusin","onFocusout","onControlFocusout","clearValue","computedCounter","maxValues","useValidate","floatingLabel","shouldRenderBottom","styleType","fieldClass","getControl","contentClass","labelClass","controlSlotScope","focusHandler","hasAttribute","querySelector","preventScroll","blur","hasFocus","mobile","inputRef","nextTick","isDirty","onClearableKeyup","keyCode","getContent","getControlContainer","getInnerAppendNode","iconSet","field","clear","lang","getInnerAppend","getControlChild","getShadowControl","hasShadow","rawControl","control","getBottom","hasCounter","main","shouldActivate","onDeactivated","onActivated","labelAttrs","before","after","NAMED_MASKS","datetime","card","TOKENS","pattern","negate","S","N","toLocaleUpperCase","toLocaleLowerCase","X","KEYS","regex","tokenRegexMask","escRegex","MARKER","fromCharCode","useMaskProps","reverseFillMask","fillMask","unmaskedValue","maskMarked","maskReplaced","computedMask","computedUnmask","pastedTextStart","selectionAnchor","hasMask","getInitialMaskedValue","getIsTypeText","autogrow","updateMaskInternals","masked","maskValue","unmaskValue","fillWithMask","getPaddedMaskMarked","pad","localMaskMarked","padPos","localComputedMask","fillChar","fillCharEscaped","unmask","extract","firstMatch","unmaskChar","negateChar","char1","esc","char2","unmaskMatcher","extractLast","extractMatcher","re","unmaskMatch","exec","extractMatch","extractMatcherLength","str","m","shift","updateMaskValue","rawVal","updateMaskInternalsFlag","inputType","inp","end","selectionEnd","endReverse","unmasked","preMasked","changed","cursor","setSelectionRange","moveCursor","rightReverse","maxEnd","moveCursorForPaste","noMarkBefore","leftReverse","onMaskedClick","onMaskedKeydown","shouldIgnoreKey","selectionStart","selectionDirection","maskValueReverse","valIndex","output","maskIndex","valChar","maskDef","firstTokenIndex","useFormProps","useFormInputNameAttr","typeGuard","getFormDomProps","model","dt","DataTransfer","ClipboardEvent","clipboardData","from","file","items","files","isJapanese","isChinese","isKorean","isPlainText","qComposing","isComposing","client","firefox","inheritAttrs","FileList","shadowText","inputClass","inputStyle","temp","typedNumber","stopValueWatcher","emitValueFn","emitCachedValue","NaN","emitTimer","nameProp","useMask","formDomProps","useFileFormDomProps","onComposition","useKeyComposition","isTextarea","isTypeText","onPaste","onChange","onBlur","onFinishEditing","onFocus","onCompositionstart","onCompositionupdate","onCompositionend","onAnimationend","inputAttrs","rows","select","adjustHeight","stopWatcher","hasOwnProperty","requestAnimationFrame","parentStyle","parentNode","scrollTop","overflowY","maxHeight","getComputedStyle","changeOverflow","marginBottom","scrollHeight","getCurValue","isNaN","displayValue","renderFn","useField","getNativeElement","QInput","timeCounterWordVariant","_vShow","canShowCounter","PaymentVerifyPanel","PaymentConfirmationDialogHeader","PaymentConfirmationControlPanel","PushNotificationSendDelayCounter","AdditionalBonusAdView","PaymentInfoPanel","PhoneNumberPanel","PaymentErrorView","contentReady","_component_lottie_animation","_component_push_confirm_reminder","showAnimation","isPushConfirmNotificationVisible","isMobile","isPortrait","isNarrowScreen","_imports_2","_imports_3","MINIMAL_DESCTOP_SCREEN_WIDTH","_paltformMock","_windowMock","setupMock","platformMock","windowMock","Platform","desktop","windowObject","matchMedia","documentElement","clientWidth","_normalizeStyle","speed","loop","autoPlay","loopDelayMin","loopDelayMax","rendererSettings","scaleMode","clearCanvas","progressiveLoad","hideOnTransparent","anim","mounted","init","methods","axios","get","overflow","margin","jsonData","loadJsonData","destroy","lottie","loadAnimation","container","$refs","lavContainer","renderer","autoplay","animationData","setSpeed","executeLoop","getRandomInt","ceil","play","newVal","oldVal","PUSH_NOTIFICATION_DURATION","PushConfirmReminder","LottieAnimation","Header","Footer","PageContentContainer","PaymentTimeoutFail","PaymentDialogSmall","checkoutId","router","currentRoute","async","CommonActions","onBackToStoreClick","QLayout","arrayWith","isBigIntArray","toIntegerOrInfinity","toBigInt","PROPER_ORDER","valueOf","relativeIndex","actualValue","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","prop","deepMerge","axiosKeys","otherKeys","InterceptorManager","handlers","use","fulfilled","rejected","eject","arrayToReversed","originURL","msie","navigator","userAgent","urlParsingNode","resolveURL","protocol","host","search","hash","hostname","port","pathname","charAt","requestURL","isString","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","getDefaultAdapter","process","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","parse","maxContentLength","validateStatus","k","global","factory","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","getLocationHref","createTag","extendPrototype","sources","destination","sourcePrototype","attr","getDescriptor","object","getOwnPropertyDescriptor","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","pause","resume","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","createRegularArray","createTypedArrayFactory","Float32Array","Int16Array","createSizedArray","_typeof$6","Symbol","iterator","constructor","subframeEnabled","expressionsPlugin","expressionsInterfaces","idPrefix$1","isSafari","_shouldRoundValues","bmPow","pow","bmSqrt","bmFloor","bmMax","bmMin","BMMath","ProjectInterface$1","propertyNames","abs","tOfVal","absArr","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","bmRnd","styleDiv","element","display","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","s","g","f","p","q","t","RGBtoHSV","addSaturationToRGB","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","colorMap","setSubframeEnabled","getSubframeEnabled","setExpressionsPlugin","getExpressionsPlugin","setExpressionInterfaces","getExpressionInterfaces","setDefaultCurveSegments","getDefaultCurveSegments","setIdPrefix","getIdPrefix","createNS","createElementNS","_typeof$5","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","onmessage","postMessage","_workerSelf","createWorker","Worker","Blob","blob","URL","createObjectURL","setupWorker","dataFunctionManager","completeLayers","layers","comps","layerData","j","jLen","kLen","completed","maskProps","masksProperties","pt","convertPathsToAbsoluteValues","ty","findCompLayers","refId","completeShapes","shapes","completeText","completeChars","chars","assets","findComp","comp","__used","ks","o","checkVersion","minimum","animVersionString","animVersion","checkText","minimumVersion","updateTextLayer","textLayer","documentData","iterateLayers","checkChars","charData","ip","op","st","sr","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","checkShapes","completeClosingShapes","closed","cl","completeData","__complete","moduleOb","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","loadAsset","errorCallback","load","payload","animation","event","onComplete","onError","createProcess","processId","origin","loadData","completeAnimation","ImagePreloader","proxyImage","canvas","getContext","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","u","testImageLoaded","intervalId","setInterval","box","getBBox","_imageLoaded","clearInterval","createImageData","ob","setAttributeNS","_elementHelper","createImgData","crossOrigin","createFootageData","footageData","_footageLoaded","loadAssets","cb","images","_createImageData","setPath","setAssetsPath","getAsset","loadedImages","loadedFootages","setCacheType","elementHelper","ImagePreloaderFactory","BaseEvent","triggerEvent","eventName","args","_cbs","callbacks","markerParser","parsePayloadLines","lines","keysCount","Error","_markers","markers","_marker","markerData","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","animationID","timeCompleted","segmentPos","isSubframeEnabled","segments","_idle","_completedLoop","projectInterface","imagePreloader","audioController","configAnimation","onSetupError","onSegmentComplete","drawnFrameEvent","setParams","wrapper","animType","RendererClass","globalData","defs","setProjectInterface","autoloadSegments","initialSegment","setupAnimation","lastIndexOf","trigger","setData","wrapperAttributes","getNamedItem","prerender","includeLayers","newLayers","fonts","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segment","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","frameModifier","goToAndPlay","playSegments","advanceTime","nextValue","_isComplete","checkSegments","adjustSegment","setDirection","setSegment","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","getRegisteredAnimations","lenAnims","animations","addPlayingCount","activate","nowTime","elapsedTime","first","searchAnimations","standalone","animElements","getElementsByClassName","getElementsByTagName","innerText","div","freeze","unfreeze","BezierFactory","getBezierEasing","beziers","bezEasing","BezierEasing","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","aA1","aA2","B","C","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","points","_p","_mSampleValues","_precomputed","mY1","mY2","_precompute","_getTForX","_calcSampleValues","mSampleValues","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","pooling","_double","poolFactory","initialLength","_create","_release","_length","_maxLength","pool","newElement","release","bezierLengthPool","create","addedLength","percents","lengths","segmentsLengthPool","totalLength","bezFunction","math","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","getBezierLength","pt1","pt2","pt3","pt4","ptCoord","perc","ptDistance","curveSegments","point","lastPoint","lengthData","getSegmentsLength","shapeData","segmentsLength","pathV","pathO","pathI","BezierData","segmentLength","PointData","partial","partialLength","buildBezierData","storedData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","getPointInSegment","percent","t1","u1","ptX","ptY","bezierSegmentPoints","getNewSegment","startPerc","endPerc","t0","u0","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","bez","initFrame","mathAbs","interpolateValue","frameNum","caching","newValue","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","lastIndex","keyframes","keyframesMetadata","endValue","nextKeyTime","keyTime","ti","ind","__fnct","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quatStart","createQuaternion","quatEnd","quaternionToEuler","slerp","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","values","c1","cos","c2","c3","s1","s2","s3","w","z","getValueAtCurrentTime","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","_mdf","processEffectsSequence","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","addDynamicProperty","ValueProperty","vel","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","cloned","ShapeCollection","addShape","releaseShapes","shapeCollectionPool","newShapeCollection","shapeCollection","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","paths","localShapeCollection","shapesEqual","shape1","shape2","ShapeProperty","reset","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","p0","p1","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","sy","ir","convertToPath","convertStarToPath","convertPolygonToPath","or","os","rad","roundness","perimSegment","numPts","angle","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","v1","getShapeProp","dataProp","getConstructorFunction","getKeyframedConstructorFunction","Matrix","_cos","_sin","_tan","tan","_rnd","rotate","mCos","mSin","_t","rotateX","rotateY","rotateZ","shear","sx","skew","skewFromAxis","scale","sz","setTransform","l","translate","tx","tz","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","_a","_b","_c","_d","_e","_f","_typeof$3","setLocation","setSubframeRendering","setPrefix","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","decodeURIComponent","useWebWorker","setIDPrefix","__getFactory","version","scripts","myScript","bodymovin","ShapeModifiers","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","lastShapeInCollection","lastShape","pop","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","applyToMatrix","mat","rz","ry","rx","px","py","pz","forceRender","_isDirty","precalculateMatrix","pre","appliedTransformations","autoOriented","v2","getValueAtTime","autoOrient","_addDynamicProperty","TransformProperty","getTransformProperty","RepeaterModifier","RoundCornersModifier","floatEqual","floatZero","lerp","lerpPoint","quadRoots","singleRoot","delta","polynomialCoefficients","p3","singlePoint","PolynomialBezier","linearize","pointEqual","coeffx","coeffy","extrema","intersectData","t2","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","rotatedVector","getProjectingAngle","cur","prevIndex","nextIndex","prevPoint","nextPoint","pVector","zigZagCorner","frequency","pointType","prevDist","nextDist","zigZagSegment","normalAngle","linearOffset","offsetSegment","p1a","p1b","p2b","p2a","joinLines","seg1","seg2","lineJoin","miterLimit","angleOut","tangentAngle","angleIn","intersection","getIntersection","intersect","pruneSegmentIntersection","outa","outb","pruneIntersections","offsetSegmentSplit","mid","flex","inflectionPoints","OffsetPathModifier","getFontProperties","fontData","styleName","styles","fStyle","fWeight","weight","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","unshift","resetElements","elements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","itemsTransform","cont","hasReloaded","copies","group","ix","reloadShapes","elems","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","rd","currentV","currentI","currentO","closerV","distance","newPosPerc","derivative","denom","tcusp","root","p10","p11","p20","p21","bounds","bottom","other","shapeSegmentInverted","pointsType","count","ml","lj","inputBezier","multiSegments","lastSeg","multiSegment","FontManager","maxWaitingTime","emptyChar","combinedCharacters","BLACK_FLAG_CODE_POINT","CANCEL_TAG_CODE_POINT","A_TAG_CODE_POINT","Z_TAG_CODE_POINT","VARIATION_SELECTOR_16_CODE_POINT","ZERO_WIDTH_JOINER_CODE_POINT","REGIONAL_CHARACTER_A_CODE_POINT","REGIONAL_CHARACTER_Z_CODE_POINT","surrogateModifiers","trimFontOptions","font","familyArray","enabledFamilies","setUpNode","family","fontFamily","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","offsetWidth","parent","checkLoadedFonts","loadedCount","loaded","fOrigin","monoCase","sansCase","removeChild","Date","now","checkLoadedFontsBinded","setIsLoadedBinded","createHelper","helper","engine","fontProps","tHelper","fFamily","textContent","fClass","tCanvasHelper","OffscreenCanvas","measure","text","getComputedTextLength","measureText","list","cache","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","fPath","querySelectorAll","rel","sc","found","ch","getCharData","_char","charCodeAt","warn","_warned","_char2","fontName","getFontByName","doubleSize","singleSize","fName","getCodePoint","string","codePoint","second","isModifier","firstCharCode","secondCharCode","isZeroWidthJoiner","charCode","isVariationSelector","isRegionalCode","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","setIsLoaded","Font","typekitLoaded","fontPrototype","SlotManager","slotFactory","RenderableElement","initRenderable","isInRange","hidden","isTransparent","renderableComponents","addRenderableComponent","component","removeRenderableComponent","prepareRenderableFrame","num","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","renderRenderable","sourceRectAtTime","getLayerSize","textData","getBlendMode","blendModeEnums","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","mode","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","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","pendingElements","getElementById","pathValue","setupGlobalData","fontsContainer","animationItem","compSize","effectTypes","TRANSFORM_EFFECT","TransformElement","MaskElement","maskElement","viewData","solidPath","rect","expansor","feMorph","properties","currentMasks","maskType","maskRef","lastPath","filterID","expan","lastOperator","filterId","lastRadius","createLayerSolidPath","invRect","drawPath","maskedElement","initTransform","_matMdf","_localMatMdf","_opMdf","localMat","localOpacity","ao","renderTransform","finalMat","renderLocalTransform","localTransforms","lmat","localOp","searchEffectTransforms","renderableEffectsManager","transformEffects","getEffects","globalToLocal","transforms","ptNew","mHelper","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","createFilter","filId","skipCoordinates","fil","createAlphaToLuminanceFilter","feColorMatrix","featureSupport","svgLumaHidden","offscreenCanvas","registeredEffects$1","idPrefix","SVGEffects","filterManager","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","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","setMatte","initHierarchy","checkParenting","_prototype","createContent","renderInnerContent","innerElem","pr","imagePreserveAspectRatio","addShapeToModifiers","shapeModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","shouldBreakProcess","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","diff","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","maskId","opFill","lc","of","ms","ost","buildShapeString","_o","_i","shapeString","SVGElementsRenderer","_identityMatrix","_matrixHelper","createRenderFunction","renderFill","renderGradient","renderGradientStroke","renderStroke","renderPath","renderContentTransform","renderNoop","styleData","itemData","pathStringTransformed","redraw","iterations","lLen","styleElem","hasOpacity","attr1","attr2","cValues","oValues","ang","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","GradientConstructor","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","shapeProperty","setElementStyles","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","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","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","getTextSelectorProp","getMult","textProperty","easer","tot","smoothness","threshold","newCharsFlag","divisor","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","animatorSelector","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","buildColor","colorData","emptyProp","validateText","buildNewText","emptyShapeData","SVGTextLottieElement","textSpans","ISolidElement","NullElement","SVGRendererBase","ICompElement","SVGCompElement","supports3d","SVGRenderer","svgElement","ariaLabel","title","titleElement","titleId","descElement","descId","contentVisibility","viewBoxOnly","viewBoxSize","focusable","filterSize","runExpressions","destroyed","ShapeTransformManager","sequences","sequenceList","transform_key_count","singleShape","textContainer","buildTextContents","textArray","textContents","currentTextContent","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","createLumaSvgFilter","_svg","loadLuma","getLuma","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","cArrPos","cTr","nativeContext","transformMat","currentOpacity","currentFillStyle","appliedFillStyle","currentStrokeStyle","appliedStrokeStyle","currentLineWidth","appliedLineWidth","currentLineCap","appliedLineCap","currentLineJoin","appliedLineJoin","appliedMiterLimit","currentMiterLimit","CVCompElement","CanvasRenderer","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","forceRealStack","restore","transformHelper","dashResetter","preTransforms","co","wi","da","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","currentStyle","coOp","grd","setLineDash","lineDashOffset","closePath","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","par","globalAlpha","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","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","shapeBoundingBox","xMax","yMax","tempBoundingBox","b2ac","calculateF","calculateBoundingBox","expandStrokeBoundingBox","widthProperty","kfw","currentBoxContains","shapeStyle","shapeTransform","compW","compH","innerElemStyle","strokeWidth","lineHeight","tParent","tCont","children","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","svgTransform","perspectiveStyle","perspectiveElem","perspective","webkitPerspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","Image","imageElem","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","tmpDOMElement","getThreeDContainerByPos","startPos","endPos","createThreeDContainer","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","cWidth","cHeight","floatingContainer","_createBaseContainerElements","_thisLayerFunction","defineProperty","pixelAspect","frameDuration","displayStartTime","numLayers","_typeof$2","seedRandom","nodecrypto","chunks","digits","rngname","startdenom","significance","seedrandom","seed","options","entropy","shortseed","mixkey","flatten","tostring","autoseed","arc4","ARC4","prng","int32","quick","pass","is_math_call","copy","keylen","me","typ","smear","stringseed","browser","plugins","screen","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","normalize","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","rndm","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","yaw","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","randSeed","posterizeTime","framesPerSecond","hasParent","executeExpression","frameExpressionId","__preventDeadCodeRemoval","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","MaskManagerInterface","MaskInterface","_mask","_data","MaskManager","_masksInterfaces","maskFunction","ExpressionPropertyInterface","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","getSpeedAtTime","propertyGroup","UnidimensionalPropertyInterface","MultidimensionalPropertyInterface","arrValue","defaultGetter","TransformExpressionInterface","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","getMatrix","toWorldMat","propMatrix","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","transformInterface","_registerMaskInterface","_registerEffectsInterface","anchorPointDescriptor","defineProperties","anchor_point","startTime","_name","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","propertyName","_propertyGroup","effectsData","createGroupInterface","groupInterface","mn","createValueInterface","numProperties","np","en","expressionProperty","setGroupProperty","ShapePathInterface","propertyIndex","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","defaultInterfaceFactory","contentsInterfaceFactory","interfaces","transformInterfaceFactory","cix","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","_interfaceFunction","parentGroupWrapper","_sourceText","sourceText","stringValue","fillColor","_typeof","outlineInterfaceFactory","currentPropertyName","currentProperty","propertyNameIndex","dataInterfaceFactory","outlineInterface","dataInterface","footage","getInterface","expressionHelpers","searchExpressions","_cachingAtTime","getStaticValueAtTime","addPropertyDecorator","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","current","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","endFrame","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","rotationZ","rotationY","rotationX","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","getShapeValueAtTime","shapeValue","lastTime","ShapePropertyConstructorFunction","KeyframedShapePropertyConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","unitVector","tangentOnPath","normalOnPath","propertyGetShapeProp","trims","initialize$1","addDecorator","calculateExpression","getExpressionValue","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","symbol","kBlurrinessToSigma","sigma","dimensions","sigmaX","sigmaY","edgeMode","forceFrame","isUniformScale","scaleHeight","scaleWidth","$findLast","findLast","Axios","mergeConfig","createInstance","defaultConfig","extend","instanceConfig","spread","IndexedObject","toObject","createMethod","TYPE","IS_FIND_LAST_INDEX","$this","that","self","boundFunction","METHOD_NAME","argument","iterate","anObject","getIteratorDirect","real","IS_RECORD","INTERRUPTED","stopped","fns","write","expires","domain","secure","cookie","isNumber","toGMTString","classof","klass","relativeURL","FormData","ArrayBuffer","isView","isFunction","pipe","URLSearchParams","product","assignValue","thisArg","actualIndex","$TypeError","REDUCE_EMPTY","IS_RIGHT","argumentsLength","memo","Constructor","$length","enhanceError","NAME","Prototype","NATIVE_ARRAY_BUFFER","DESCRIPTORS","isCallable","hasOwn","tryToString","createNonEnumerableProperty","defineBuiltIn","defineBuiltInAccessor","isPrototypeOf","getPrototypeOf","setPrototypeOf","wellKnownSymbol","InternalStateModule","enforceInternalState","enforce","getInternalState","Uint8ClampedArrayPrototype","TypedArray","ObjectPrototype","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","opera","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Uint16Array","Int32Array","Uint32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","isTypedArray","aTypedArrayConstructor","KEY","ARRAY","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","configurable","toPrimitive","prim","BigInt","dispatchRequest","interceptors","chain","interceptor","getUri","normalizedName"],"mappings":"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","file":"js/checkout-page.dfb06ebd.js","sourcesContent":["module.exports = __webpack_public_path__ + \"img/phone_web.3cbcd9f8.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./PaymentCancel.vue?vue&type=style&index=0&id=2ecc9680&lang=scss&scoped=true\"","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/environment-v8-version');\nvar IS_NODE = require('../internals/environment-is-node');\n\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\nvar FORCED = CHROME_BUG || !arrayMethodIsStrict('reduce');\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: FORCED }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\nvar toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw new $RangeError('Wrong offset');\n return offset;\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLastIndex = require('../internals/array-iteration-from-last').findLastIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLastIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlastindex\nexportTypedArrayMethod('findLastIndex', function findLastIndex(predicate /* , thisArg */) {\n return $findLastIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","module.exports = __webpack_public_path__ + \"img/wtf.2b050e5a.svg\";","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar sort = uncurryThis(ArrayBufferViewCore.TypedArrayPrototype.sort);\n\n// `%TypedArray%.prototype.toSorted` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tosorted\nexportTypedArrayMethod('toSorted', function toSorted(compareFn) {\n if (compareFn !== undefined) aCallable(compareFn);\n var O = aTypedArray(this);\n var A = arrayFromConstructorAndList(getTypedArrayConstructor(O), O);\n return sort(A, compareFn);\n});\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./PaymentTimeoutFail.vue?vue&type=style&index=0&id=003094a6&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./PaymentSuccess.vue?vue&type=style&index=0&id=6c71e808&lang=scss&scoped=true\"","module.exports = require('./lib/axios');","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = globalThis.RangeError;\nvar Int8Array = globalThis.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS = !fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n var array = new Uint8ClampedArray(2);\n call($set, array, { length: 1, 0: 3 }, 1);\n return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n var array = new Int8Array(2);\n array.set(1);\n array.set('2', 1);\n return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var src = toIndexedObject(arrayLike);\n if (WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n var length = this.length;\n var len = lengthOfArrayLike(src);\n var index = 0;\n if (len + offset > length) throw new RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","module.exports = __webpack_public_path__ + \"img/phone_mob.74b5d550.png\";","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Header = _resolveComponent(\"Header\")!\n const _component_payment_confirmation = _resolveComponent(\"payment-confirmation\")!\n const _component_payment_timeout_fail = _resolveComponent(\"payment-timeout-fail\")!\n const _component_payment_success = _resolveComponent(\"payment-success\")!\n const _component_payment_attempts_ended = _resolveComponent(\"payment-attempts-ended\")!\n const _component_payment_error = _resolveComponent(\"payment-error\")!\n const _component_PaymentCancel = _resolveComponent(\"PaymentCancel\")!\n const _component_payment_dialog_small = _resolveComponent(\"payment-dialog-small\")!\n const _component_page_content_container = _resolveComponent(\"page-content-container\")!\n const _component_Footer = _resolveComponent(\"Footer\")!\n const _component_q_layout = _resolveComponent(\"q-layout\")!\n\n return (_openBlock(), _createBlock(_component_q_layout, {\n view: \"lHh Lpr lFf\",\n class: \"layout\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_Header, { sectionDescription: \"Сплата\" }),\n _createVNode(_component_page_content_container, { class: \"row items-center justify-center\" }, {\n default: _withCtx(() => [\n _createVNode(_component_payment_dialog_small, { isLoading: $setup.isLoading }, {\n default: _withCtx(() => [\n ($setup.currentScreen === $setup.CheckoutScreen.PaymentConfirmation)\n ? (_openBlock(), _createBlock(_component_payment_confirmation, { key: 0 }))\n : _createCommentVNode(\"\", true),\n ($setup.currentScreen === $setup.CheckoutScreen.PaymentFail)\n ? (_openBlock(), _createBlock(_component_payment_timeout_fail, { key: 1 }))\n : _createCommentVNode(\"\", true),\n ($setup.currentScreen === $setup.CheckoutScreen.PaymentSuccess)\n ? (_openBlock(), _createBlock(_component_payment_success, { key: 2 }))\n : _createCommentVNode(\"\", true),\n ($setup.currentScreen === $setup.CheckoutScreen.PaymentAttemptsEnded)\n ? (_openBlock(), _createBlock(_component_payment_attempts_ended, { key: 3 }))\n : _createCommentVNode(\"\", true),\n ($setup.currentScreen === $setup.CheckoutScreen.PaymentError)\n ? (_openBlock(), _createBlock(_component_payment_error, { key: 4 }))\n : _createCommentVNode(\"\", true),\n ($setup.currentScreen === $setup.CheckoutScreen.PaymentCancel)\n ? (_openBlock(), _createBlock(_component_PaymentCancel, { key: 5 }))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"isLoading\"])\n ]),\n _: 1\n }),\n _createVNode(_component_Footer)\n ]),\n _: 1\n }))\n}","import { renderSlot as _renderSlot, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"page-content-container\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _renderSlot(_ctx.$slots, \"default\", {}, undefined, true)\n ]))\n}","\nexport default {\n name: \"PageContentContainer\",\n};\n","import { render } from \"./PageContentContainer.vue?vue&type=template&id=e23039c0&scoped=true&ts=true\"\nimport script from \"./PageContentContainer.vue?vue&type=script&lang=ts\"\nexport * from \"./PageContentContainer.vue?vue&type=script&lang=ts\"\n\nimport \"./PageContentContainer.vue?vue&type=style&index=0&id=e23039c0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-e23039c0\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\nimport _imports_0 from '@/assets/images/payment_failed.png'\n\n\nconst _hoisted_1 = { class: \"column items-center payment-authorization-dialog\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _cache[1] || (_cache[1] = _createStaticVNode(\"
Хочеш продовжити покупку?
Повернися до магазину та обери інший спосіб оплати
\", 1)),\n _createVNode(_component_q_btn, {\n ref: \"backToStoreButton\",\n \"no-caps\": \"\",\n id: \"store-redirect-button\",\n class: \"dialog-button user-button\",\n label: \"До магазину\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => ($setup.handleBackToStoreClick()))\n }, null, 512)\n ]))\n}","\nimport * as Actions from \"@/store/constants/BvrPayCheckout/Actions\";\nimport { useStore } from \"vuex\";\n\nexport default {\n name: \"PaymentAttemptsEnded\",\n setup() {\n const store = useStore();\n\n const handleBackToStoreClick = () => {\n store.dispatch(Actions.BVR__REDIRECT_TO_STORE);\n };\n\n return {\n handleBackToStoreClick,\n };\n },\n};\n","import { h, computed, getCurrentInstance } from 'vue'\n\nimport useSize, { useSizeProps } from '../../composables/private.use-size/use-size.js'\n\nimport { createComponent } from '../../utils/private.create/create.js'\nimport { hSlot, hMergeSlot } from '../../utils/private.render/render.js'\n\nconst defaultViewBox = '0 0 24 24'\n\nconst sameFn = i => i\nconst ionFn = i => `ionicons ${ i }`\n\nconst libMap = {\n 'mdi-': i => `mdi ${ i }`,\n 'icon-': sameFn, // fontawesome equiv\n 'bt-': i => `bt ${ i }`,\n 'eva-': i => `eva ${ i }`,\n 'ion-md': ionFn,\n 'ion-ios': ionFn,\n 'ion-logo': ionFn,\n 'iconfont ': sameFn,\n 'ti-': i => `themify-icon ${ i }`,\n 'bi-': i => `bootstrap-icons ${ i }`\n}\n\nconst matMap = {\n o_: '-outlined',\n r_: '-round',\n s_: '-sharp'\n}\n\nconst symMap = {\n sym_o_: '-outlined',\n sym_r_: '-rounded',\n sym_s_: '-sharp'\n}\n\nconst libRE = new RegExp('^(' + Object.keys(libMap).join('|') + ')')\nconst matRE = new RegExp('^(' + Object.keys(matMap).join('|') + ')')\nconst symRE = new RegExp('^(' + Object.keys(symMap).join('|') + ')')\nconst mRE = /^[Mm]\\s?[-+]?\\.?\\d/\nconst imgRE = /^img:/\nconst svgUseRE = /^svguse:/\nconst ionRE = /^ion-/\nconst faRE = /^(fa-(classic|sharp|solid|regular|light|brands|duotone|thin)|[lf]a[srlbdk]?) /\n\nexport default createComponent({\n name: 'QIcon',\n\n props: {\n ...useSizeProps,\n\n tag: {\n type: String,\n default: 'i'\n },\n\n name: String,\n color: String,\n left: Boolean,\n right: Boolean\n },\n\n setup (props, { slots }) {\n const { proxy: { $q } } = getCurrentInstance()\n const sizeStyle = useSize(props)\n\n const classes = computed(() =>\n 'q-icon'\n + (props.left === true ? ' on-left' : '') // TODO Qv3: drop this\n + (props.right === true ? ' on-right' : '')\n + (props.color !== void 0 ? ` text-${ props.color }` : '')\n )\n\n const type = computed(() => {\n let cls\n let icon = props.name\n\n if (icon === 'none' || !icon) {\n return { none: true }\n }\n\n if ($q.iconMapFn !== null) {\n const res = $q.iconMapFn(icon)\n if (res !== void 0) {\n if (res.icon !== void 0) {\n icon = res.icon\n if (icon === 'none' || !icon) {\n return { none: true }\n }\n }\n else {\n return {\n cls: res.cls,\n content: res.content !== void 0\n ? res.content\n : ' '\n }\n }\n }\n }\n\n if (mRE.test(icon) === true) {\n const [ def, viewBox = defaultViewBox ] = icon.split('|')\n\n return {\n svg: true,\n viewBox,\n nodes: def.split('&&').map(path => {\n const [ d, style, transform ] = path.split('@@')\n return h('path', { style, d, transform })\n })\n }\n }\n\n if (imgRE.test(icon) === true) {\n return {\n img: true,\n src: icon.substring(4)\n }\n }\n\n if (svgUseRE.test(icon) === true) {\n const [ def, viewBox = defaultViewBox ] = icon.split('|')\n\n return {\n svguse: true,\n src: def.substring(7),\n viewBox\n }\n }\n\n let content = ' '\n const matches = icon.match(libRE)\n\n if (matches !== null) {\n cls = libMap[ matches[ 1 ] ](icon)\n }\n else if (faRE.test(icon) === true) {\n cls = icon\n }\n else if (ionRE.test(icon) === true) {\n cls = `ionicons ion-${ $q.platform.is.ios === true ? 'ios' : 'md' }${ icon.substring(3) }`\n }\n else if (symRE.test(icon) === true) {\n // \"notranslate\" class is for Google Translate\n // to avoid tampering with Material Symbols ligature font\n //\n // Caution: To be able to add suffix to the class name,\n // keep the 'material-symbols' at the end of the string.\n cls = 'notranslate material-symbols'\n\n const matches = icon.match(symRE)\n if (matches !== null) {\n icon = icon.substring(6)\n cls += symMap[ matches[ 1 ] ]\n }\n\n content = icon\n }\n else {\n // \"notranslate\" class is for Google Translate\n // to avoid tampering with Material Icons ligature font\n //\n // Caution: To be able to add suffix to the class name,\n // keep the 'material-icons' at the end of the string.\n cls = 'notranslate material-icons'\n\n const matches = icon.match(matRE)\n if (matches !== null) {\n icon = icon.substring(2)\n cls += matMap[ matches[ 1 ] ]\n }\n\n content = icon\n }\n\n return {\n cls,\n content\n }\n })\n\n return () => {\n const data = {\n class: classes.value,\n style: sizeStyle.value,\n 'aria-hidden': 'true',\n role: 'presentation'\n }\n\n if (type.value.none === true) {\n return h(props.tag, data, hSlot(slots.default))\n }\n\n if (type.value.img === true) {\n return h(props.tag, data, hMergeSlot(slots.default, [\n h('img', { src: type.value.src })\n ]))\n }\n\n if (type.value.svg === true) {\n return h(props.tag, data, hMergeSlot(slots.default, [\n h('svg', {\n viewBox: type.value.viewBox || '0 0 24 24'\n }, type.value.nodes)\n ]))\n }\n\n if (type.value.svguse === true) {\n return h(props.tag, data, hMergeSlot(slots.default, [\n h('svg', {\n viewBox: type.value.viewBox\n }, [\n h('use', { 'xlink:href': type.value.src })\n ])\n ]))\n }\n\n if (type.value.cls !== void 0) {\n data.class += ' ' + type.value.cls\n }\n\n return h(props.tag, data, hMergeSlot(slots.default, [\n type.value.content\n ]))\n }\n }\n})\n","export default function (fn, limit = 250) {\n let wait = false, result\n\n return function (/* ...args */) {\n if (wait === false) {\n wait = true\n setTimeout(() => { wait = false }, limit)\n result = fn.apply(this, arguments)\n }\n\n return result\n }\n}\n","import { createDirective } from '../../utils/private.create/create.js'\nimport { css } from '../../utils/dom/dom.js'\nimport { position, stop, addEvt, cleanEvt } from '../../utils/event/event.js'\nimport { isKeyCode } from '../../utils/private.keyboard/key-composition.js'\nimport throttle from '../../utils/throttle/throttle.js'\nimport getSSRProps from '../../utils/private.noop-ssr-directive-transform/noop-ssr-directive-transform.js'\n\nfunction showRipple (evt, el, ctx, forceCenter) {\n ctx.modifiers.stop === true && stop(evt)\n\n const color = ctx.modifiers.color\n let center = ctx.modifiers.center\n center = center === true || forceCenter === true\n\n const\n node = document.createElement('span'),\n innerNode = document.createElement('span'),\n pos = position(evt),\n { left, top, width, height } = el.getBoundingClientRect(),\n diameter = Math.sqrt(width * width + height * height),\n radius = diameter / 2,\n centerX = `${ (width - diameter) / 2 }px`,\n x = center ? centerX : `${ pos.left - left - radius }px`,\n centerY = `${ (height - diameter) / 2 }px`,\n y = center ? centerY : `${ pos.top - top - radius }px`\n\n innerNode.className = 'q-ripple__inner'\n css(innerNode, {\n height: `${ diameter }px`,\n width: `${ diameter }px`,\n transform: `translate3d(${ x },${ y },0) scale3d(.2,.2,1)`,\n opacity: 0\n })\n\n node.className = `q-ripple${ color ? ' text-' + color : '' }`\n node.setAttribute('dir', 'ltr')\n node.appendChild(innerNode)\n el.appendChild(node)\n\n const abort = () => {\n node.remove()\n clearTimeout(timer)\n }\n ctx.abort.push(abort)\n\n let timer = setTimeout(() => {\n innerNode.classList.add('q-ripple__inner--enter')\n innerNode.style.transform = `translate3d(${ centerX },${ centerY },0) scale3d(1,1,1)`\n innerNode.style.opacity = 0.2\n\n timer = setTimeout(() => {\n innerNode.classList.remove('q-ripple__inner--enter')\n innerNode.classList.add('q-ripple__inner--leave')\n innerNode.style.opacity = 0\n\n timer = setTimeout(() => {\n node.remove()\n ctx.abort.splice(ctx.abort.indexOf(abort), 1)\n }, 275)\n }, 250)\n }, 50)\n}\n\nfunction updateModifiers (ctx, { modifiers, value, arg }) {\n const cfg = Object.assign({}, ctx.cfg.ripple, modifiers, value)\n ctx.modifiers = {\n early: cfg.early === true,\n stop: cfg.stop === true,\n center: cfg.center === true,\n color: cfg.color || arg,\n keyCodes: [].concat(cfg.keyCodes || 13)\n }\n}\n\nexport default createDirective(__QUASAR_SSR_SERVER__\n ? { name: 'ripple', getSSRProps }\n : {\n name: 'ripple',\n\n beforeMount (el, binding) {\n const cfg = binding.instance.$.appContext.config.globalProperties.$q.config || {}\n\n if (cfg.ripple === false) return\n\n const ctx = {\n cfg,\n enabled: binding.value !== false,\n modifiers: {},\n abort: [],\n\n start (evt) {\n if (\n ctx.enabled === true\n && evt.qSkipRipple !== true\n && evt.type === (ctx.modifiers.early === true ? 'pointerdown' : 'click')\n ) {\n showRipple(evt, el, ctx, evt.qKeyEvent === true)\n }\n },\n\n keystart: throttle(evt => {\n if (\n ctx.enabled === true\n && evt.qSkipRipple !== true\n && isKeyCode(evt, ctx.modifiers.keyCodes) === true\n && evt.type === `key${ ctx.modifiers.early === true ? 'down' : 'up' }`\n ) {\n showRipple(evt, el, ctx, true)\n }\n }, 300)\n }\n\n updateModifiers(ctx, binding)\n\n el.__qripple = ctx\n\n addEvt(ctx, 'main', [\n [ el, 'pointerdown', 'start', 'passive' ],\n [ el, 'click', 'start', 'passive' ],\n [ el, 'keydown', 'keystart', 'passive' ],\n [ el, 'keyup', 'keystart', 'passive' ]\n ])\n },\n\n updated (el, binding) {\n if (binding.oldValue !== binding.value) {\n const ctx = el.__qripple\n if (ctx !== void 0) {\n ctx.enabled = binding.value !== false\n\n if (ctx.enabled === true && Object(binding.value) === binding.value) {\n updateModifiers(ctx, binding)\n }\n }\n }\n },\n\n beforeUnmount (el) {\n const ctx = el.__qripple\n if (ctx !== void 0) {\n ctx.abort.forEach(fn => { fn() })\n cleanEvt(ctx, 'main')\n delete el._qripple\n }\n }\n }\n)\n","import { computed } from 'vue'\n\nexport const alignMap = {\n left: 'start',\n center: 'center',\n right: 'end',\n between: 'between',\n around: 'around',\n evenly: 'evenly',\n stretch: 'stretch'\n}\n\nexport const alignValues = Object.keys(alignMap)\n\nexport const useAlignProps = {\n align: {\n type: String,\n validator: v => alignValues.includes(v)\n }\n}\n\nexport default function (props) {\n // return alignClass\n return computed(() => {\n const align = props.align === void 0\n ? props.vertical === true ? 'stretch' : 'left'\n : props.align\n\n return `${ props.vertical === true ? 'items' : 'justify' }-${ alignMap[ align ] }`\n })\n}\n","/*\n * Inspired by RouterLink from Vue Router\n * --> API should match!\n */\n\nimport { computed, getCurrentInstance } from 'vue'\n\nimport { vmHasRouter } from '../../utils/private.vm/vm.js'\n\n// Get the original path value of a record by following its aliasOf\nfunction getOriginalPath (record) {\n return record\n ? (\n record.aliasOf\n ? record.aliasOf.path\n : record.path\n ) : ''\n}\n\nfunction isSameRouteRecord (a, b) {\n // since the original record has an undefined value for aliasOf\n // but all aliases point to the original record, this will always compare\n // the original record\n return (a.aliasOf || a) === (b.aliasOf || b)\n}\n\nfunction includesParams (outer, inner) {\n for (const key in inner) {\n const\n innerValue = inner[ key ],\n outerValue = outer[ key ]\n\n if (typeof innerValue === 'string') {\n if (innerValue !== outerValue) {\n return false\n }\n }\n else if (\n Array.isArray(outerValue) === false\n || outerValue.length !== innerValue.length\n || innerValue.some((value, i) => value !== outerValue[ i ])\n ) {\n return false\n }\n }\n\n return true\n}\n\nfunction isEquivalentArray (a, b) {\n return Array.isArray(b) === true\n ? a.length === b.length && a.every((value, i) => value === b[ i ])\n : a.length === 1 && a[ 0 ] === b\n}\n\nfunction isSameRouteLocationParamsValue (a, b) {\n return Array.isArray(a) === true\n ? isEquivalentArray(a, b)\n : (\n Array.isArray(b) === true\n ? isEquivalentArray(b, a)\n : a === b\n )\n}\n\nfunction isSameRouteLocationParams (a, b) {\n if (Object.keys(a).length !== Object.keys(b).length) {\n return false\n }\n\n for (const key in a) {\n if (isSameRouteLocationParamsValue(a[ key ], b[ key ]) === false) {\n return false\n }\n }\n\n return true\n}\n\nexport const useRouterLinkNonMatchingProps = {\n // router-link\n to: [ String, Object ],\n replace: Boolean,\n\n // regular link\n href: String,\n target: String,\n\n // state\n disable: Boolean\n}\n\nexport const useRouterLinkProps = {\n ...useRouterLinkNonMatchingProps,\n\n // router-link\n exact: Boolean,\n activeClass: {\n type: String,\n default: 'q-router-link--active'\n },\n exactActiveClass: {\n type: String,\n default: 'q-router-link--exact-active'\n }\n}\n\n// external props: type, tag\n\nexport default function ({ fallbackTag, useDisableForRouterLinkProps = true } = {}) {\n const vm = getCurrentInstance()\n const { props, proxy, emit } = vm\n\n const hasRouter = vmHasRouter(vm)\n const hasHrefLink = computed(() => props.disable !== true && props.href !== void 0)\n\n // for perf reasons, we use minimum amount of runtime work\n const hasRouterLinkProps = useDisableForRouterLinkProps === true\n ? computed(() =>\n hasRouter === true\n && props.disable !== true\n && hasHrefLink.value !== true\n && props.to !== void 0 && props.to !== null && props.to !== ''\n )\n : computed(() =>\n hasRouter === true\n && hasHrefLink.value !== true\n && props.to !== void 0 && props.to !== null && props.to !== ''\n )\n\n const resolvedLink = computed(() => (\n hasRouterLinkProps.value === true\n ? getLink(props.to)\n : null\n ))\n\n const hasRouterLink = computed(() => resolvedLink.value !== null)\n const hasLink = computed(() => hasHrefLink.value === true || hasRouterLink.value === true)\n\n const linkTag = computed(() => (\n props.type === 'a' || hasLink.value === true\n ? 'a'\n : (props.tag || fallbackTag || 'div')\n ))\n\n const linkAttrs = computed(() => (\n hasHrefLink.value === true\n ? {\n href: props.href,\n target: props.target\n }\n : (\n hasRouterLink.value === true\n ? {\n href: resolvedLink.value.href,\n target: props.target\n }\n : {}\n )\n ))\n\n const linkActiveIndex = computed(() => {\n if (hasRouterLink.value === false) {\n return -1\n }\n\n const\n { matched } = resolvedLink.value,\n { length } = matched,\n routeMatched = matched[ length - 1 ]\n\n if (routeMatched === void 0) {\n return -1\n }\n\n const currentMatched = proxy.$route.matched\n\n if (currentMatched.length === 0) {\n return -1\n }\n\n const index = currentMatched.findIndex(\n isSameRouteRecord.bind(null, routeMatched)\n )\n\n if (index !== -1) {\n return index\n }\n\n // possible parent record\n const parentRecordPath = getOriginalPath(matched[ length - 2 ])\n\n return (\n // we are dealing with nested routes\n length > 1\n // if the parent and matched route have the same path, this link is\n // referring to the empty child. Or we currently are on a different\n // child of the same parent\n && getOriginalPath(routeMatched) === parentRecordPath\n // avoid comparing the child with its parent\n && currentMatched[ currentMatched.length - 1 ].path !== parentRecordPath\n ? currentMatched.findIndex(\n isSameRouteRecord.bind(null, matched[ length - 2 ])\n )\n : index\n )\n })\n\n const linkIsActive = computed(() =>\n hasRouterLink.value === true\n && linkActiveIndex.value !== -1\n && includesParams(proxy.$route.params, resolvedLink.value.params)\n )\n\n const linkIsExactActive = computed(() =>\n linkIsActive.value === true\n && linkActiveIndex.value === proxy.$route.matched.length - 1\n && isSameRouteLocationParams(proxy.$route.params, resolvedLink.value.params)\n )\n\n const linkClass = computed(() => (\n hasRouterLink.value === true\n ? (\n linkIsExactActive.value === true\n ? ` ${ props.exactActiveClass } ${ props.activeClass }`\n : (\n props.exact === true\n ? ''\n : (linkIsActive.value === true ? ` ${ props.activeClass }` : '')\n )\n )\n : ''\n ))\n\n function getLink (to) {\n try { return proxy.$router.resolve(to) }\n catch (_) {}\n\n return null\n }\n\n /**\n * @returns Promise\n */\n function navigateToRouterLink (\n e,\n { returnRouterError, to = props.to, replace = props.replace } = {}\n ) {\n if (props.disable === true) {\n // ensure native navigation is prevented in all cases,\n // like when useDisableForRouterLinkProps === false (QRouteTab)\n e.preventDefault()\n return Promise.resolve(false)\n }\n\n if (\n // don't redirect with control keys;\n // should match RouterLink from Vue Router\n e.metaKey || e.altKey || e.ctrlKey || e.shiftKey\n\n // don't redirect on right click\n || (e.button !== void 0 && e.button !== 0)\n\n // don't redirect if it should open in a new window\n || props.target === '_blank'\n ) {\n return Promise.resolve(false)\n }\n\n // hinder the native navigation\n e.preventDefault()\n\n // then() can also return a \"soft\" router error (Vue Router behavior)\n const promise = proxy.$router[ replace === true ? 'replace' : 'push' ](to)\n\n return returnRouterError === true\n ? promise\n // else catching hard errors and also \"soft\" ones - then(err => ...)\n : promise.then(() => {}).catch(() => {})\n }\n\n // warning! ensure that the component using it has 'click' included in its 'emits' definition prop\n function navigateOnClick (e) {\n if (hasRouterLink.value === true) {\n const go = opts => navigateToRouterLink(e, opts)\n\n emit('click', e, go)\n e.defaultPrevented !== true && go()\n }\n else {\n emit('click', e)\n }\n }\n\n return {\n hasRouterLink,\n hasHrefLink,\n hasLink,\n\n linkTag,\n resolvedLink,\n linkIsActive,\n linkIsExactActive,\n linkClass,\n linkAttrs,\n\n getLink,\n navigateToRouterLink,\n navigateOnClick\n }\n}\n","import { computed } from 'vue'\n\nimport useAlign, { useAlignProps } from '../../composables/private.use-align/use-align.js'\nimport useSize, { useSizeProps } from '../../composables/private.use-size/use-size.js'\nimport useRouterLink, { useRouterLinkNonMatchingProps } from '../../composables/private.use-router-link/use-router-link.js'\n\nexport const btnPadding = {\n none: 0,\n xs: 4,\n sm: 8,\n md: 16,\n lg: 24,\n xl: 32\n}\n\nexport const defaultSizes = {\n xs: 8,\n sm: 10,\n md: 14,\n lg: 20,\n xl: 24\n}\n\nconst formTypes = [ 'button', 'submit', 'reset' ]\nconst mediaTypeRE = /[^\\s]\\/[^\\s]/\n\nexport const btnDesignOptions = [ 'flat', 'outline', 'push', 'unelevated' ]\n\nexport function getBtnDesign (props, defaultValue) {\n if (props.flat === true) return 'flat'\n if (props.outline === true) return 'outline'\n if (props.push === true) return 'push'\n if (props.unelevated === true) return 'unelevated'\n return defaultValue\n}\n\nexport function getBtnDesignAttr (props) {\n const design = getBtnDesign(props)\n return design !== void 0\n ? { [ design ]: true }\n : {}\n}\n\nexport const nonRoundBtnProps = {\n ...useSizeProps,\n ...useRouterLinkNonMatchingProps,\n\n type: {\n type: String,\n default: 'button'\n },\n\n label: [ Number, String ],\n icon: String,\n iconRight: String,\n\n ...btnDesignOptions.reduce(\n (acc, val) => (acc[ val ] = Boolean) && acc,\n {}\n ),\n\n square: Boolean,\n rounded: Boolean,\n glossy: Boolean,\n\n size: String,\n fab: Boolean,\n fabMini: Boolean,\n padding: String,\n\n color: String,\n textColor: String,\n noCaps: Boolean,\n noWrap: Boolean,\n dense: Boolean,\n\n tabindex: [ Number, String ],\n\n ripple: {\n type: [ Boolean, Object ],\n default: true\n },\n\n align: {\n ...useAlignProps.align,\n default: 'center'\n },\n stack: Boolean,\n stretch: Boolean,\n loading: {\n type: Boolean,\n default: null\n },\n disable: Boolean\n}\n\nexport const useBtnProps = {\n ...nonRoundBtnProps,\n round: Boolean\n}\n\nexport default function (props) {\n const sizeStyle = useSize(props, defaultSizes)\n const alignClass = useAlign(props)\n const { hasRouterLink, hasLink, linkTag, linkAttrs, navigateOnClick } = useRouterLink({\n fallbackTag: 'button'\n })\n\n const style = computed(() => {\n const obj = props.fab === false && props.fabMini === false\n ? sizeStyle.value\n : {}\n\n return props.padding !== void 0\n ? Object.assign({}, obj, {\n padding: props.padding\n .split(/\\s+/)\n .map(v => (v in btnPadding ? btnPadding[ v ] + 'px' : v))\n .join(' '),\n minWidth: '0',\n minHeight: '0'\n })\n : obj\n })\n\n const isRounded = computed(() =>\n props.rounded === true || props.fab === true || props.fabMini === true\n )\n\n const isActionable = computed(() =>\n props.disable !== true && props.loading !== true\n )\n\n const tabIndex = computed(() => (\n isActionable.value === true ? props.tabindex || 0 : -1\n ))\n\n const design = computed(() => getBtnDesign(props, 'standard'))\n\n const attributes = computed(() => {\n const acc = { tabindex: tabIndex.value }\n\n if (hasLink.value === true) {\n Object.assign(acc, linkAttrs.value)\n }\n else if (formTypes.includes(props.type) === true) {\n acc.type = props.type\n }\n\n if (linkTag.value === 'a') {\n if (props.disable === true) {\n acc[ 'aria-disabled' ] = 'true'\n }\n else if (acc.href === void 0) {\n acc.role = 'button'\n }\n\n if (hasRouterLink.value !== true && mediaTypeRE.test(props.type) === true) {\n acc.type = props.type\n }\n }\n else if (props.disable === true) {\n acc.disabled = ''\n acc[ 'aria-disabled' ] = 'true'\n }\n\n if (props.loading === true && props.percentage !== void 0) {\n Object.assign(acc, {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': props.percentage\n })\n }\n\n return acc\n })\n\n const classes = computed(() => {\n let colors\n\n if (props.color !== void 0) {\n if (props.flat === true || props.outline === true) {\n colors = `text-${ props.textColor || props.color }`\n }\n else {\n colors = `bg-${ props.color } text-${ props.textColor || 'white' }`\n }\n }\n else if (props.textColor) {\n colors = `text-${ props.textColor }`\n }\n\n const shape = props.round === true\n ? 'round'\n : `rectangle${ isRounded.value === true ? ' q-btn--rounded' : (props.square === true ? ' q-btn--square' : '') }`\n\n return `q-btn--${ design.value } q-btn--${ shape }`\n + (colors !== void 0 ? ' ' + colors : '')\n + (isActionable.value === true ? ' q-btn--actionable q-focusable q-hoverable' : (props.disable === true ? ' disabled' : ''))\n + (props.fab === true ? ' q-btn--fab' : (props.fabMini === true ? ' q-btn--fab-mini' : ''))\n + (props.noCaps === true ? ' q-btn--no-uppercase' : '')\n + (props.dense === true ? ' q-btn--dense' : '')\n + (props.stretch === true ? ' no-border-radius self-stretch' : '')\n + (props.glossy === true ? ' glossy' : '')\n + (props.square ? ' q-btn--square' : '')\n })\n\n const innerClasses = computed(() =>\n alignClass.value + (props.stack === true ? ' column' : ' row')\n + (props.noWrap === true ? ' no-wrap text-no-wrap' : '')\n + (props.loading === true ? ' q-btn__content--hidden' : '')\n )\n\n return {\n classes,\n style,\n innerClasses,\n attributes,\n hasLink,\n linkTag,\n navigateOnClick,\n isActionable\n }\n}\n","import { h, ref, computed, Transition, onBeforeUnmount, withDirectives, getCurrentInstance } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\nimport QSpinner from '../spinner/QSpinner.js'\n\nimport Ripple from '../../directives/ripple/Ripple.js'\n\nimport useBtn, { useBtnProps } from './use-btn.js'\n\nimport { createComponent } from '../../utils/private.create/create.js'\nimport { hMergeSlot } from '../../utils/private.render/render.js'\nimport { stop, prevent, stopAndPrevent, listenOpts } from '../../utils/event/event.js'\nimport { isKeyCode } from '../../utils/private.keyboard/key-composition.js'\n\nconst { passiveCapture } = listenOpts\n\nlet\n touchTarget = null,\n keyboardTarget = null,\n mouseTarget = null\n\nexport default createComponent({\n name: 'QBtn',\n\n props: {\n ...useBtnProps,\n\n percentage: Number,\n darkPercentage: Boolean,\n\n onTouchstart: [ Function, Array ]\n },\n\n emits: [ 'click', 'keydown', 'mousedown', 'keyup' ],\n\n setup (props, { slots, emit }) {\n const { proxy } = getCurrentInstance()\n\n const {\n classes, style, innerClasses,\n attributes,\n hasLink, linkTag, navigateOnClick,\n isActionable\n } = useBtn(props)\n\n const rootRef = ref(null)\n const blurTargetRef = ref(null)\n\n let localTouchTargetEl = null, avoidMouseRipple, mouseTimer = null\n\n const hasLabel = computed(() =>\n props.label !== void 0 && props.label !== null && props.label !== ''\n )\n\n const ripple = computed(() => (\n props.disable === true || props.ripple === false\n ? false\n : {\n keyCodes: hasLink.value === true ? [ 13, 32 ] : [ 13 ],\n ...(props.ripple === true ? {} : props.ripple)\n }\n ))\n\n const rippleProps = computed(() => ({ center: props.round }))\n\n const percentageStyle = computed(() => {\n const val = Math.max(0, Math.min(100, props.percentage))\n return val > 0\n ? { transition: 'transform 0.6s', transform: `translateX(${ val - 100 }%)` }\n : {}\n })\n\n const onEvents = computed(() => {\n if (props.loading === true) {\n return {\n onMousedown: onLoadingEvt,\n onTouchstart: onLoadingEvt,\n onClick: onLoadingEvt,\n onKeydown: onLoadingEvt,\n onKeyup: onLoadingEvt\n }\n }\n\n if (isActionable.value === true) {\n const acc = {\n onClick,\n onKeydown,\n onMousedown\n }\n\n if (proxy.$q.platform.has.touch === true) {\n const suffix = props.onTouchstart !== void 0\n ? ''\n : 'Passive'\n\n acc[ `onTouchstart${ suffix }` ] = onTouchstart\n }\n\n return acc\n }\n\n return {\n // needed; especially for disabled tags\n onClick: stopAndPrevent\n }\n })\n\n const nodeProps = computed(() => ({\n ref: rootRef,\n class: 'q-btn q-btn-item non-selectable no-outline ' + classes.value,\n style: style.value,\n ...attributes.value,\n ...onEvents.value\n }))\n\n function onClick (e) {\n // is it already destroyed?\n if (rootRef.value === null) return\n\n if (e !== void 0) {\n if (e.defaultPrevented === true) return\n\n const el = document.activeElement\n // focus button if it came from ENTER on form\n // prevent the new submit (already done)\n if (\n props.type === 'submit'\n && el !== document.body\n && rootRef.value.contains(el) === false\n // required for iOS and desktop Safari\n && el.contains(rootRef.value) === false\n ) {\n rootRef.value.focus()\n\n const onClickCleanup = () => {\n document.removeEventListener('keydown', stopAndPrevent, true)\n document.removeEventListener('keyup', onClickCleanup, passiveCapture)\n rootRef.value !== null && rootRef.value.removeEventListener('blur', onClickCleanup, passiveCapture)\n }\n\n document.addEventListener('keydown', stopAndPrevent, true)\n document.addEventListener('keyup', onClickCleanup, passiveCapture)\n rootRef.value.addEventListener('blur', onClickCleanup, passiveCapture)\n }\n }\n\n navigateOnClick(e)\n }\n\n function onKeydown (e) {\n // is it already destroyed?\n if (rootRef.value === null) return\n\n emit('keydown', e)\n\n if (isKeyCode(e, [ 13, 32 ]) === true && keyboardTarget !== rootRef.value) {\n keyboardTarget !== null && cleanup()\n\n if (e.defaultPrevented !== true) {\n // focus external button if the focus helper was focused before\n rootRef.value.focus()\n\n keyboardTarget = rootRef.value\n rootRef.value.classList.add('q-btn--active')\n document.addEventListener('keyup', onPressEnd, true)\n rootRef.value.addEventListener('blur', onPressEnd, passiveCapture)\n }\n\n stopAndPrevent(e)\n }\n }\n\n function onTouchstart (e) {\n // is it already destroyed?\n if (rootRef.value === null) return\n\n emit('touchstart', e)\n\n if (e.defaultPrevented === true) return\n\n if (touchTarget !== rootRef.value) {\n touchTarget !== null && cleanup()\n touchTarget = rootRef.value\n\n localTouchTargetEl = e.target\n localTouchTargetEl.addEventListener('touchcancel', onPressEnd, passiveCapture)\n localTouchTargetEl.addEventListener('touchend', onPressEnd, passiveCapture)\n }\n\n // avoid duplicated mousedown event\n // triggering another early ripple\n avoidMouseRipple = true\n mouseTimer !== null && clearTimeout(mouseTimer)\n mouseTimer = setTimeout(() => {\n mouseTimer = null\n avoidMouseRipple = false\n }, 200)\n }\n\n function onMousedown (e) {\n // is it already destroyed?\n if (rootRef.value === null) return\n\n e.qSkipRipple = avoidMouseRipple === true\n emit('mousedown', e)\n\n if (e.defaultPrevented !== true && mouseTarget !== rootRef.value) {\n mouseTarget !== null && cleanup()\n mouseTarget = rootRef.value\n rootRef.value.classList.add('q-btn--active')\n document.addEventListener('mouseup', onPressEnd, passiveCapture)\n }\n }\n\n function onPressEnd (e) {\n // is it already destroyed?\n if (rootRef.value === null) return\n\n // needed for IE (because it emits blur when focusing button from focus helper)\n if (\n e !== void 0\n && e.type === 'blur'\n && document.activeElement === rootRef.value\n ) return\n\n if (e !== void 0 && e.type === 'keyup') {\n if (keyboardTarget === rootRef.value && isKeyCode(e, [ 13, 32 ]) === true) {\n // for click trigger\n const evt = new MouseEvent('click', e)\n evt.qKeyEvent = true\n e.defaultPrevented === true && prevent(evt)\n e.cancelBubble === true && stop(evt)\n rootRef.value.dispatchEvent(evt)\n\n stopAndPrevent(e)\n\n // for ripple\n e.qKeyEvent = true\n }\n\n emit('keyup', e)\n }\n\n cleanup()\n }\n\n function cleanup (destroying) {\n const blurTarget = blurTargetRef.value\n\n if (\n destroying !== true\n && (touchTarget === rootRef.value || mouseTarget === rootRef.value)\n && blurTarget !== null\n && blurTarget !== document.activeElement\n ) {\n blurTarget.setAttribute('tabindex', -1)\n blurTarget.focus()\n }\n\n if (touchTarget === rootRef.value) {\n if (localTouchTargetEl !== null) {\n localTouchTargetEl.removeEventListener('touchcancel', onPressEnd, passiveCapture)\n localTouchTargetEl.removeEventListener('touchend', onPressEnd, passiveCapture)\n }\n touchTarget = localTouchTargetEl = null\n }\n\n if (mouseTarget === rootRef.value) {\n document.removeEventListener('mouseup', onPressEnd, passiveCapture)\n mouseTarget = null\n }\n\n if (keyboardTarget === rootRef.value) {\n document.removeEventListener('keyup', onPressEnd, true)\n rootRef.value !== null && rootRef.value.removeEventListener('blur', onPressEnd, passiveCapture)\n keyboardTarget = null\n }\n\n rootRef.value !== null && rootRef.value.classList.remove('q-btn--active')\n }\n\n function onLoadingEvt (evt) {\n stopAndPrevent(evt)\n evt.qSkipRipple = true\n }\n\n onBeforeUnmount(() => {\n cleanup(true)\n })\n\n // expose public methods\n Object.assign(proxy, {\n click: e => {\n if (isActionable.value === true) {\n onClick(e)\n }\n }\n })\n\n return () => {\n let inner = []\n\n props.icon !== void 0 && inner.push(\n h(QIcon, {\n name: props.icon,\n left: props.stack !== true && hasLabel.value === true,\n role: 'img'\n })\n )\n\n hasLabel.value === true && inner.push(\n h('span', { class: 'block' }, [ props.label ])\n )\n\n inner = hMergeSlot(slots.default, inner)\n\n if (props.iconRight !== void 0 && props.round === false) {\n inner.push(\n h(QIcon, {\n name: props.iconRight,\n right: props.stack !== true && hasLabel.value === true,\n role: 'img'\n })\n )\n }\n\n const child = [\n h('span', {\n class: 'q-focus-helper',\n ref: blurTargetRef\n })\n ]\n\n if (props.loading === true && props.percentage !== void 0) {\n child.push(\n h('span', {\n class: 'q-btn__progress absolute-full overflow-hidden' + (props.darkPercentage === true ? ' q-btn__progress--dark' : '')\n }, [\n h('span', {\n class: 'q-btn__progress-indicator fit block',\n style: percentageStyle.value\n })\n ])\n )\n }\n\n child.push(\n h('span', {\n class: 'q-btn__content text-center col items-center q-anchor--skip ' + innerClasses.value\n }, inner)\n )\n\n props.loading !== null && child.push(\n h(Transition, {\n name: 'q-transition--fade'\n }, () => (\n props.loading === true\n ? [\n h('span', {\n key: 'loading',\n class: 'absolute-full flex flex-center'\n }, slots.loading !== void 0 ? slots.loading() : [ h(QSpinner) ])\n ]\n : null\n ))\n )\n\n return withDirectives(\n h(\n linkTag.value,\n nodeProps.value,\n child\n ),\n [ [\n Ripple,\n ripple.value,\n void 0,\n rippleProps.value\n ] ]\n )\n }\n }\n})\n","import { render } from \"./PaymentAttemptsEnded.vue?vue&type=template&id=b8fda582&scoped=true&ts=true\"\nimport script from \"./PaymentAttemptsEnded.vue?vue&type=script&lang=ts\"\nexport * from \"./PaymentAttemptsEnded.vue?vue&type=script&lang=ts\"\n\nimport \"./PaymentAttemptsEnded.vue?vue&type=style&index=0&id=b8fda582&lang=scss&scoped=true\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b8fda582\"]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn});\n","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createStaticVNode as _createStaticVNode, createElementBlock as _createElementBlock } from \"vue\"\nimport _imports_0 from '@/assets/images/wtf.svg'\n\n\nconst _hoisted_1 = { class: \"column items-center payment-authorization-dialog\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_payment_available_attempts_view = _resolveComponent(\"payment-available-attempts-view\")!\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n const _component_back_to_store_button = _resolveComponent(\"back-to-store-button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _cache[1] || (_cache[1] = _createStaticVNode(\"
Ти сказав "ні" платежу
Тa скасував оплату в мобільному додатку
\", 1)),\n _createVNode(_component_payment_available_attempts_view, {\n ref: \"payment-available-attempts-view\",\n attemptsAvailable: $setup.availableConfirmationAttemptCount\n }, null, 8, [\"attemptsAvailable\"]),\n ($setup.availableConfirmationAttemptCount)\n ? (_openBlock(), _createBlock(_component_q_btn, {\n key: 0,\n ref: \"send-again-button\",\n \"no-caps\": \"\",\n class: \"dialog-button\",\n label: \"Надіслати повторно\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => ($setup.handlePaymentConfirmation()))\n }, null, 512))\n : _createCommentVNode(\"\", true),\n (!$setup.availableConfirmationAttemptCount)\n ? (_openBlock(), _createBlock(_component_back_to_store_button, {\n key: 1,\n url: $setup.failureRedirectUrl\n }, null, 8, [\"url\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n\n return (_openBlock(), _createBlock(_component_q_btn, {\n ref: \"backToStoreButton\",\n \"no-caps\": \"\",\n class: \"dialog-button\",\n label: \"До магазину\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => ($setup.handleBackToStoreClick()))\n }, null, 512))\n}","\n\nexport default {\n name: \"BackToStoreButton\",\n props: {\n url: {\n type: String,\n required: true,\n },\n },\n setup(props) {\n let globalDocument = document;\n\n const handleBackToStoreClick = () => {\n globalDocument.location.href = props.url;\n };\n\n return {\n handleBackToStoreClick,\n };\n },\n};\n","import { render } from \"./BackToStoreButton.vue?vue&type=template&id=1a636938&ts=true\"\nimport script from \"./BackToStoreButton.vue?vue&type=script&lang=ts\"\nexport * from \"./BackToStoreButton.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn});\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"counter\" }\nconst _hoisted_2 = { id: \"client-text\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString($setup.attemptsWordRestVariant) + \" \" + _toDisplayString($props.attemptsAvailable) + \" \" + _toDisplayString($setup.attemptsWordVariant), 1)\n ]))\n}","\nimport { computed, ComputedRef } from \"vue\";\n\nexport default {\n name: \"PaymentAvailableAttemptsView\",\n props: {\n attemptsAvailable: Number,\n },\n setup(props: any) {\n const attemptsWordRestVariant: ComputedRef = computed(() => {\n if(!props.attemptsAvailable) {\n return \"Залишилось\";\n }\n const lastDigit: number = parseInt(\n props.attemptsAvailable.toString().slice(-1)\n );\n if (lastDigit == 1) {\n return \"Залишилась\";\n }\n return \"Залишилося\";\n });\n\n const attemptsWordVariant: ComputedRef = computed(() => {\n let variant = \"спроб\";\n\n if(!props.attemptsAvailable) {\n return variant;\n }\n\n const lastDigit: number = parseInt(\n props.attemptsAvailable.toString().slice(-1)\n );\n\n if (props.attemptsAvailable >= 5 && props.attemptsAvailable <= 20) {\n return \"спроб\";\n }\n if (lastDigit == 1) {\n return \"спроба\";\n }\n if (lastDigit > 1 && lastDigit < 5) {\n return \"спроби\";\n }\n\n return variant;\n });\n\n return {\n attemptsWordVariant,\n attemptsWordRestVariant,\n };\n },\n};\n","import { render } from \"./PaymentAvailableAttemptsView.vue?vue&type=template&id=38b3e267&scoped=true&ts=true\"\nimport script from \"./PaymentAvailableAttemptsView.vue?vue&type=script&lang=ts\"\nexport * from \"./PaymentAvailableAttemptsView.vue?vue&type=script&lang=ts\"\n\nimport \"./PaymentAvailableAttemptsView.vue?vue&type=style&index=0&id=38b3e267&lang=scss&scoped=true\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-38b3e267\"]])\n\nexport default __exports__","\nimport BackToStoreButton from \"@/common-components/BackToStoreButton.vue\";\nimport PaymentAvailableAttemptsView from \"@/components/PaymentConfirmation/child-components/PaymentAvailableAttemptsView.vue\";\nimport { CheckoutScreen } from \"@/enums/CheckoutScreen\";\nimport * as Actions from \"@/store/constants/BvrPayCheckout/Actions\";\nimport * as Getters from \"@/store/constants/BvrPayCheckout/Getters\";\nimport * as Mutations from \"@/store/constants/BvrPayCheckout/Mutations\";\nimport { computed, ComputedRef } from \"vue\";\nimport { useStore } from \"vuex\";\n\nexport default {\n name: \"PaymentCancel\",\n components: { PaymentAvailableAttemptsView, BackToStoreButton },\n setup() {\n const store = useStore();\n\n const availableConfirmationAttemptCount: ComputedRef = computed(\n () =>\n store.getters[Getters.BVR__GET_AVAILABLE_PAYMENT_AUTHORIZATION_ATTEMPTS_LEFT]\n );\n\n const failureRedirectUrl: ComputedRef = computed(() => {\n return (\n store.getters[Getters.BVR__GET_CHECKOUT_DATA].failureRedirectUrl ||\n store.getters[Getters.BVR__GET_MERCHANT_INFO].defaultFailureRedirectUrl\n );\n });\n\n const handlePaymentConfirmation = () => {\n store.commit(\n Mutations.BVR__SET_CURRENT_CHECKOUT_SCREEN,\n CheckoutScreen.PaymentConfirmation\n );\n store.dispatch(Actions.BVR__CONFIRM_PAYMENT);\n };\n\n return {\n handlePaymentConfirmation,\n availableConfirmationAttemptCount,\n failureRedirectUrl,\n };\n },\n};\n","import { render } from \"./PaymentCancel.vue?vue&type=template&id=2ecc9680&scoped=true&ts=true\"\nimport script from \"./PaymentCancel.vue?vue&type=script&lang=ts\"\nexport * from \"./PaymentCancel.vue?vue&type=script&lang=ts\"\n\nimport \"./PaymentCancel.vue?vue&type=style&index=0&id=2ecc9680&lang=scss&scoped=true\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2ecc9680\"]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn});\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"payment-dialog-small-body\" }\nconst _hoisted_2 = {\n id: \"client-instructions\",\n class: \"main-user-message q-mt-md\"\n}\nconst _hoisted_3 = { style: {\"margin-top\":\"20px\",\"text-align\":\"center\"} }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_payment_confirmation_dialog_header = _resolveComponent(\"payment-confirmation-dialog-header\")!\n const _component_additional_bonus_ad_view = _resolveComponent(\"additional-bonus-ad-view\")!\n const _component_payment_info_panel = _resolveComponent(\"payment-info-panel\")!\n const _component_payment_verify_panel = _resolveComponent(\"payment-verify-panel\")!\n const _component_phone_number_panel = _resolveComponent(\"phone-number-panel\")!\n const _component_push_notification_send_delay_counter = _resolveComponent(\"push-notification-send-delay-counter\")!\n const _component_payment_available_attempts_view = _resolveComponent(\"payment-available-attempts-view\")!\n const _component_payment_error_view = _resolveComponent(\"payment-error-view\")!\n const _component_payment_confirmation_control_panel = _resolveComponent(\"payment-confirmation-control-panel\")!\n const _component_back_to_store_button = _resolveComponent(\"back-to-store-button\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_payment_confirmation_dialog_header, {\n ref: \"paymentConfirmationDialogHeader\",\n partnerSite: $setup.merchantInfo.merchantName,\n partnerOrderId: $setup.bvrCheckoutData.partnerOrderId,\n hideOrderNumber: $setup.hideOrderNumber\n }, null, 8, [\"partnerSite\", \"partnerOrderId\", \"hideOrderNumber\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createTextVNode(_toDisplayString($setup.headerCaption) + \" \", 1),\n (!$setup.isLoyaltyPointsLoading)\n ? (_openBlock(), _createBlock(_component_additional_bonus_ad_view, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(_component_payment_info_panel, {\n ref: \"paymentInfoPanel\",\n authType: $setup.bvrCheckoutData.authType,\n sumAmount: $setup.bvrCheckoutData.amount,\n isLoyaltyPointsLoading: $setup.isLoyaltyPointsLoading\n }, null, 8, [\"authType\", \"sumAmount\", \"isLoyaltyPointsLoading\"]),\n ($setup.isVerifyPayment)\n ? (_openBlock(), _createBlock(_component_payment_verify_panel, {\n key: 0,\n ref: \"paymentVerifyPanel\",\n id: \"payment-verify-panel\",\n sumAmount: $setup.bvrCheckoutData.amount\n }, null, 8, [\"sumAmount\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_phone_number_panel, {\n ref: \"phoneNumberPanel\",\n phoneNumber: $setup.bvrCheckoutData.phoneNumber,\n isError: $setup.isPhoneNumberInputError,\n disable: !$setup.canChangePhoneNumber,\n errorMessage: $setup.phoneNumberInputErrorMessage,\n onInput: _cache[0] || (_cache[0] = (value) => $setup.handlePhoneNumberInput(value))\n }, null, 8, [\"phoneNumber\", \"isError\", \"disable\", \"errorMessage\"])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n ($setup.isApproveButtonDisabled && !$setup.isApproveError && !$setup.isPaymentSuspend && $setup.availableConfirmationAttemptCount)\n ? (_openBlock(), _createBlock(_component_push_notification_send_delay_counter, {\n key: 0,\n ref: \"pushNotificationSendDelayCounter\",\n timeCounterValue: $setup.pushSuspensionTime\n }, null, 8, [\"timeCounterValue\"]))\n : _createCommentVNode(\"\", true),\n (!$setup.isApproveButtonDisabled && !$setup.isApproveError && !$setup.isPaymentSuspend)\n ? (_openBlock(), _createBlock(_component_payment_available_attempts_view, {\n key: 1,\n ref: \"paymentAvailableAttemptsView\",\n attemptsAvailable: $setup.availableConfirmationAttemptCount\n }, null, 8, [\"attemptsAvailable\"]))\n : _createCommentVNode(\"\", true),\n ($setup.isApproveError)\n ? (_openBlock(), _createBlock(_component_payment_error_view, {\n key: 2,\n ref: \"paymentErrorView\",\n errorCode: $setup.errorCode\n }, null, 8, [\"errorCode\"]))\n : _createCommentVNode(\"\", true)\n ]),\n ($setup.availableConfirmationAttemptCount)\n ? (_openBlock(), _createBlock(_component_payment_confirmation_control_panel, {\n key: 0,\n id: \"payment-confirmation-control-panel\",\n ref: \"paymentConfirmationControlPanel\",\n onConfirm: _cache[1] || (_cache[1] = ($event: any) => ($setup.handlePaymentConfirmation())),\n buttonLabel: \"Надіслати повторно\",\n isWaiting: $setup.isPaymentSuspend,\n disabled: $setup.isApproveButtonDisabled\n }, null, 8, [\"isWaiting\", \"disabled\"]))\n : _createCommentVNode(\"\", true),\n (!$setup.availableConfirmationAttemptCount)\n ? (_openBlock(), _createBlock(_component_back_to_store_button, {\n key: 1,\n url: $setup.failureRedirectUrl\n }, null, 8, [\"url\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}","export enum AuthType {\n auth = 1,\n preAuth,\n postAuth,\n verify\n}","import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\nimport _imports_0 from '@/assets/images/temp-images/additional_bonus_desktop.svg'\nimport _imports_1 from '@/assets/images/temp-images/additional_bonus_mobile.svg'\n\n\nconst _hoisted_1 = {\n key: 0,\n id: \"additional-bonus-container\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_ctx.isTargetMerchant && !_ctx.isAuthTypeVerify)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"img\", {\n src: _imports_0,\n id: \"additional-bonus-desktop\",\n class: _normalizeClass({'bunner-verify-mode': _ctx.isAuthTypeVerify})\n }, null, 2),\n _createElementVNode(\"img\", {\n src: _imports_1,\n id: \"additional-bonus-mobile\",\n class: _normalizeClass({'bunner-verify-mode-mobile': _ctx.isAuthTypeVerify})\n }, null, 2)\n ]))\n : _createCommentVNode(\"\", true)\n}","\nimport { AuthType } from '@/enums/AuthType';\nimport { BvrCheckoutData } from '@/models/BvrCheckoutData';\nimport * as Getters from \"@/store/constants/BvrPayCheckout/Getters\";\nimport * as CommonGetters from \"@/store/constants/Common/Getters\";\nimport { computed, ComputedRef, defineComponent } from 'vue';\nimport { useStore } from 'vuex';\n\nexport default defineComponent({\n name: \"AdditionalBonusAdView\",\n setup() {\n const store = useStore();\n\n const isTargetMerchant: ComputedRef = computed(\n () => {\n const checkoutOptions = store.getters[CommonGetters.COMMON__GET_CHECKOUT_OPTIONS];\n const checkoutData: BvrCheckoutData = store.getters[Getters.BVR__GET_CHECKOUT_DATA];\n\n if(!checkoutOptions) {\n return false;\n }\n\n const loyaltyMerchants = checkoutOptions.loyalityAdMerchants.split(\";\") || [];\n\n return loyaltyMerchants.includes(checkoutData.merchantId?.toString());\n }\n );\n\n const isAuthTypeVerify: ComputedRef = computed(() => {\n const checkoutData: BvrCheckoutData = store.getters[Getters.BVR__GET_CHECKOUT_DATA];\n\n return checkoutData.authType === AuthType.verify;\n });\n\n return {\n isTargetMerchant,\n isAuthTypeVerify\n }\n }\n})\n","import { render } from \"./AdditionalBonusAdView.vue?vue&type=template&id=bd2e5dc8&scoped=true&ts=true\"\nimport script from \"./AdditionalBonusAdView.vue?vue&type=script&lang=ts\"\nexport * from \"./AdditionalBonusAdView.vue?vue&type=script&lang=ts\"\n\nimport \"./AdditionalBonusAdView.vue?vue&type=style&index=0&id=bd2e5dc8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-bd2e5dc8\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_spinner_gears = _resolveComponent(\"q-spinner-gears\")!\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createVNode(_component_q_btn, {\n ref: \"confirmPaymentButton\",\n \"no-caps\": \"\",\n label: $props.buttonLabel,\n loading: $props.isWaiting,\n id: \"payment-confirm-button\",\n class: _normalizeClass([\"layout dialog-button\", { disabled: $setup.isDisabled }]),\n \"text-color\": $setup.isDisabled ? 'grey-8' : 'white',\n flat: $setup.isDisabled,\n disable: $setup.isDisabled,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$emit('confirm')))\n }, {\n loading: _withCtx(() => [\n _createVNode(_component_q_spinner_gears, { class: \"on-left\" }),\n _cache[1] || (_cache[1] = _createTextVNode(\" Обробка... \"))\n ]),\n _: 1\n }, 8, [\"label\", \"loading\", \"class\", \"text-color\", \"flat\", \"disable\"])\n ]))\n}","\nimport { computed, ComputedRef } from \"vue\";\n\nexport default {\n name: \"PaymentConfirmationControlPanel\",\n emits: [\"confirm\"],\n props: {\n disabled: Boolean,\n buttonLabel: String,\n isWaiting: Boolean,\n },\n setup(props: any) {\n const isDisabled: ComputedRef = computed(() => props.disabled || props.isWaiting);\n return {\n isDisabled\n }\n }\n};\n","import { h } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner.js'\nimport { createComponent } from '../../utils/private.create/create.js'\n\nconst innerHTML = ''\n\nexport default createComponent({\n name: 'QSpinnerGears',\n\n props: useSpinnerProps,\n\n setup (props) {\n const { cSize, classes } = useSpinner(props)\n return () => h('svg', {\n class: classes.value,\n width: cSize.value,\n height: cSize.value,\n viewBox: '0 0 100 100',\n preserveAspectRatio: 'xMidYMid',\n xmlns: 'http://www.w3.org/2000/svg',\n innerHTML\n })\n }\n})\n","import { render } from \"./PaymentConfirmationControlPanel.vue?vue&type=template&id=7e6bc044&scoped=true&ts=true\"\nimport script from \"./PaymentConfirmationControlPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./PaymentConfirmationControlPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./PaymentConfirmationControlPanel.vue?vue&type=style&index=0&id=7e6bc044&lang=scss&scoped=true\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7e6bc044\"]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport QSpinnerGears from 'quasar/src/components/spinner/QSpinnerGears.js';\nimport qInstall from \"../../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn,QSpinnerGears});\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"user-data-small\" }\nconst _hoisted_2 = { id: \"partner-site\" }\nconst _hoisted_3 = {\n key: 0,\n id: \"partner-order-id\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, \"Сайт: \" + _toDisplayString($props.partnerSite), 1),\n (!$props.hideOrderNumber)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, \"Замовлення: \" + _toDisplayString($props.partnerOrderId), 1))\n : _createCommentVNode(\"\", true)\n ]))\n}","\nexport default {\n name: \"PaymentConfirmationDialogHeader\",\n props: {\n partnerSite: String,\n partnerOrderId: String,\n hideOrderNumber: Boolean\n },\n};\n","import { render } from \"./PaymentConfirmationDialogHeader.vue?vue&type=template&id=8fa7015e&scoped=true&ts=true\"\nimport script from \"./PaymentConfirmationDialogHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./PaymentConfirmationDialogHeader.vue?vue&type=script&lang=ts\"\n\nimport \"./PaymentConfirmationDialogHeader.vue?vue&type=style&index=0&id=8fa7015e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-8fa7015e\"]])\n\nexport default __exports__","import { resolveDirective as _resolveDirective, createElementVNode as _createElementVNode, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"user-data-small-bold attention\" }\nconst _hoisted_2 = { id: \"error-message\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _directive_t = _resolveDirective(\"t\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"span\", _hoisted_2, null, 512), [\n [_directive_t, { path: `error.${$props.errorCode}` }]\n ])\n ]))\n}","\nexport default {\n name: \"PaymentErrorView\",\n props: {\n errorCode: Number,\n },\n};\n","import { render } from \"./PaymentErrorView.vue?vue&type=template&id=490d0aa2&scoped=true&ts=true\"\nimport script from \"./PaymentErrorView.vue?vue&type=script&lang=ts\"\nexport * from \"./PaymentErrorView.vue?vue&type=script&lang=ts\"\n\nimport \"./PaymentErrorView.vue?vue&type=style&index=0&id=490d0aa2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-490d0aa2\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"payment-info\",\n class: \"q-mt-md\"\n}\nconst _hoisted_2 = { class: \"q-mr-md\" }\nconst _hoisted_3 = { id: \"sum-amount\" }\nconst _hoisted_4 = { id: \"integer-sum-part\" }\nconst _hoisted_5 = {\n id: \"decimal-sum-part\",\n class: \"decimal-sum\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_loyalty_points_panel = _resolveComponent(\"loyalty-points-panel\")!\n\n return (_openBlock(), _createElementBlock(\"section\", _hoisted_1, [\n _createElementVNode(\"article\", _hoisted_2, [\n _cache[1] || (_cache[1] = _createElementVNode(\"div\", {\n class: \"user-data-small\",\n id: \"sum-caption\"\n }, \"До сплати\", -1)),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString($setup.integerSumPart), 1),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"span\", _hoisted_5, \".\" + _toDisplayString($setup.decimalSumPart), 1)\n ]),\n _cache[0] || (_cache[0] = _createElementVNode(\"div\", {\n id: \"currency-symbol\",\n class: \"decimal-sum\"\n }, \" ₴\", -1))\n ])\n ]),\n _createVNode(_component_loyalty_points_panel, {\n class: \"q-pt-xs\",\n \"is-loading\": $props.isLoyaltyPointsLoading,\n \"auth-type\": $props.authType\n }, null, 8, [\"is-loading\", \"auth-type\"])\n ]))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock } from \"vue\"\nimport _imports_0 from '@/assets/images/bonus.svg'\n\n\nconst _hoisted_1 = {\n key: 0,\n id: \"loyalty-points-panel\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"row items-center\",\n id: \"bonus-amount-container\"\n}\nconst _hoisted_3 = { class: \"q-ml-xs\" }\nconst _hoisted_4 = {\n id: \"bonus-amount\",\n class: \"user-data-small-bold col\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_separator = _resolveComponent(\"q-separator\")!\n const _component_q_img = _resolveComponent(\"q-img\")!\n const _component_q_spinner_tail = _resolveComponent(\"q-spinner-tail\")!\n\n return (!_ctx.isLoading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.isBonusAmountVisible || _ctx.isVerify)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(_component_q_separator, {\n vertical: \"\",\n inset: \"\",\n spaced: \"\",\n ref: \"separator\"\n }, null, 512),\n _createElementVNode(\"div\", null, [\n _createVNode(_component_q_img, {\n class: \"col\",\n src: _imports_0,\n id: \"bonus-icon\"\n })\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(_ctx.bonusAsString), 1),\n _cache[0] || (_cache[0] = _createElementVNode(\"div\", {\n id: \"bonus-amount-description\",\n class: \"user-data-small\"\n }, \" Від Банку \", -1))\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : (_openBlock(), _createBlock(_component_q_spinner_tail, {\n key: 1,\n color: \"grey-5\",\n size: \"3em\",\n class: \"q-ml-md q-mt-xs\",\n ref: \"spinner\"\n }, null, 512))\n}","\nimport { AuthType } from '@/enums/AuthType';\nimport * as Getters from \"@/store/constants/BvrPayCheckout/Getters\";\nimport { computed, ComputedRef, defineComponent, ref } from 'vue';\nimport { useStore } from 'vuex';\n\nexport default defineComponent({\n name: \"LoyaltyPointsPanel\",\n props: {\n authType: {\n type: Number,\n required: true\n },\n isLoading: {\n type: Boolean,\n required: true\n }\n },\n setup (props: any) {\n const store = useStore();\n const isVerify = ref(props.authType == AuthType.verify);\n\n const bonusAsString: ComputedRef = computed(() => {\n let amount = Math.floor(store.getters[Getters.BVR__GET_LOYALTY_POINTS_AMOUNT] || 0);\n let unitsDescription = '';\n\n const set1 = parseInt(amount.toString().slice(-1));\n const set2 = parseInt(amount.toString().slice(-2));\n\n if (set2 >= 5 && set2 <= 20 || set1 === 0) {\n unitsDescription = \"балобонусів\";\n } else if (set1 == 1) {\n unitsDescription = \"балобонус\";\n } else if (set1 > 1 && set1 < 5) {\n unitsDescription = \"балобонуса\";\n } else {\n unitsDescription = \"балобонусів\";\n }\n\n if (props.authType === (AuthType.verify as number)) {\n return \"+багато балобонусів\";\n }\n return `+ ${amount} ${unitsDescription}`;\n });\n\n const isBonusAmountVisible: ComputedRef = computed(() => {\n const bonusAmount = store.getters[Getters.BVR__GET_LOYALTY_POINTS_AMOUNT];\n\n return !!bonusAmount && bonusAmount !== 0 && props.authType !== (AuthType.verify as number);\n })\n\n return {\n isVerify,\n isBonusAmountVisible,\n bonusAsString\n }\n }\n})\n","import { computed } from 'vue'\n\nexport const useDarkProps = {\n dark: {\n type: Boolean,\n default: null\n }\n}\n\nexport default function (props, $q) {\n // return isDark\n return computed(() => (\n props.dark === null\n ? $q.dark.isActive\n : props.dark\n ))\n}\n","import { h, computed, getCurrentInstance } from 'vue'\n\nimport useDark, { useDarkProps } from '../../composables/private.use-dark/use-dark.js'\n\nimport { createComponent } from '../../utils/private.create/create.js'\n\nconst insetMap = {\n true: 'inset',\n item: 'item-inset',\n 'item-thumbnail': 'item-thumbnail-inset'\n}\n\nexport const margins = {\n xs: 2,\n sm: 4,\n md: 8,\n lg: 16,\n xl: 24\n}\n\nexport default createComponent({\n name: 'QSeparator',\n\n props: {\n ...useDarkProps,\n\n spaced: [ Boolean, String ],\n inset: [ Boolean, String ],\n vertical: Boolean,\n color: String,\n size: String\n },\n\n setup (props) {\n const vm = getCurrentInstance()\n const isDark = useDark(props, vm.proxy.$q)\n\n const orientation = computed(() => (\n props.vertical === true\n ? 'vertical'\n : 'horizontal'\n ))\n\n const orientClass = computed(() => ` q-separator--${ orientation.value }`)\n\n const insetClass = computed(() => (\n props.inset !== false\n ? `${ orientClass.value }-${ insetMap[ props.inset ] }`\n : ''\n ))\n\n const classes = computed(() =>\n `q-separator${ orientClass.value }${ insetClass.value }`\n + (props.color !== void 0 ? ` bg-${ props.color }` : '')\n + (isDark.value === true ? ' q-separator--dark' : '')\n )\n\n const style = computed(() => {\n const acc = {}\n\n if (props.size !== void 0) {\n acc[ props.vertical === true ? 'width' : 'height' ] = props.size\n }\n\n if (props.spaced !== false) {\n const size = props.spaced === true\n ? `${ margins.md }px`\n : props.spaced in margins ? `${ margins[ props.spaced ] }px` : props.spaced\n\n const dir = props.vertical === true\n ? [ 'Left', 'Right' ]\n : [ 'Top', 'Bottom' ]\n\n acc[ `margin${ dir[ 0 ] }` ] = acc[ `margin${ dir[ 1 ] }` ] = size\n }\n\n return acc\n })\n\n return () => h('hr', {\n class: classes.value,\n style: style.value,\n 'aria-orientation': orientation.value\n })\n }\n})\n","import { h } from 'vue'\n\nimport useSpinner, { useSpinnerProps } from './use-spinner.js'\nimport { createComponent } from '../../utils/private.create/create.js'\n\nconst innerHTML = ''\n\nexport default createComponent({\n name: 'QSpinnerTail',\n\n props: useSpinnerProps,\n\n setup (props) {\n const { cSize, classes } = useSpinner(props)\n return () => h('svg', {\n class: classes.value,\n width: cSize.value,\n height: cSize.value,\n viewBox: '0 0 38 38',\n xmlns: 'http://www.w3.org/2000/svg',\n innerHTML\n })\n }\n})\n","import { render } from \"./LoyaltyPointsPanel.vue?vue&type=template&id=32f1cfd7&scoped=true&ts=true\"\nimport script from \"./LoyaltyPointsPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./LoyaltyPointsPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./LoyaltyPointsPanel.vue?vue&type=style&index=0&id=32f1cfd7&lang=scss&scoped=true\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-32f1cfd7\"]])\n\nexport default __exports__\nimport QSeparator from 'quasar/src/components/separator/QSeparator.js';\nimport QImg from 'quasar/src/components/img/QImg.js';\nimport QSpinnerTail from 'quasar/src/components/spinner/QSpinnerTail.js';\nimport qInstall from \"../../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QSeparator,QImg,QSpinnerTail});\n","\nimport { AuthType } from \"@/enums/AuthType\";\nimport { computed, ComputedRef } from \"vue\";\nimport LoyaltyPointsPanel from \"./LoyaltyPointsPanel.vue\";\n\nexport default {\n name: \"PaymentInfoPanel\",\n components: {\n LoyaltyPointsPanel\n },\n props: {\n sumAmount: Number,\n authType: Number,\n isLoyaltyPointsLoading: Boolean\n },\n setup(props: any) {\n const sumAmountAsString = (): String => {\n let sum = props.sumAmount;\n\n if (props.authType === AuthType.verify) {\n sum = 0;\n }\n\n return sum.toFixed(2).replace(/\\B(?=(\\d{3})+(?!\\d))/g, \" \");\n };\n\n const integerSumPart: ComputedRef = computed(\n () => sumAmountAsString().split(\".\")[0]\n );\n\n const decimalSumPart: ComputedRef = computed(\n () => sumAmountAsString().split(\".\")[1]\n );\n\n return {\n integerSumPart,\n decimalSumPart\n };\n },\n};\n","import { render } from \"./PaymentInfoPanel.vue?vue&type=template&id=f51c7c68&scoped=true&ts=true\"\nimport script from \"./PaymentInfoPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./PaymentInfoPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./PaymentInfoPanel.vue?vue&type=style&index=0&id=f51c7c68&lang=scss&scoped=true\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f51c7c68\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n class: \"col user-data-small\",\n id: \"payment-verify-text\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, _toDisplayString($setup.paymentVerifyText), 1))\n}","\nimport { computed } from \"vue\";\nimport { ComputedRef } from \"vue\";\n\nexport default {\n name: \"PaymentVerifyPanel\",\n props: {\n sumAmount: Number,\n },\n setup(props: any) {\n const paymentVerifyText: ComputedRef = computed(() => {\n return `Орієнтовна сума замовлення ${props.sumAmount} грн. Оплата пройде, щойно його зберуть.`;\n });\n\n return {\n paymentVerifyText,\n };\n },\n};\n","import { render } from \"./PaymentVerifyPanel.vue?vue&type=template&id=6a750122&ts=true\"\nimport script from \"./PaymentVerifyPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./PaymentVerifyPanel.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx } from \"vue\"\nimport _imports_0 from '@/assets/images/edit.svg'\n\n\nconst _hoisted_1 = {\n key: 0,\n src: _imports_0,\n style: {\"height\":\"23px\"}\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_separator = _resolveComponent(\"q-separator\")!\n const _component_q_input = _resolveComponent(\"q-input\")!\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"user-data-medium q-mt-md\", { error: $props.isError }]),\n id: \"label\"\n }, \" Номер телефону \", 2),\n _createVNode(_component_q_input, {\n ref: \"phoneNumberInput\",\n style: {\"margin-top\":\"-10px\"},\n color: \"blue-5\",\n modelValue: $setup.phone,\n \"onUpdate:modelValue\": [\n _cache[0] || (_cache[0] = ($event: any) => (($setup.phone) = $event)),\n _cache[1] || (_cache[1] = (value) => $setup.handleNumberInput(value))\n ],\n mask: \"(###) ###-##-##\",\n errorMessage: $props.errorMessage,\n disable: $props.disable,\n error: $props.isError,\n \"stack-label\": \"\",\n class: \"user-data-medium\"\n }, {\n prepend: _withCtx(() => [\n _cache[2] || (_cache[2] = _createElementVNode(\"span\", {\n class: \"user-data-medium\",\n id: \"phone-code\"\n }, \"+38\", -1)),\n _createVNode(_component_q_separator, {\n vertical: \"\",\n class: \"vertical-separator\"\n })\n ]),\n append: _withCtx(() => [\n (!$props.disable)\n ? (_openBlock(), _createElementBlock(\"img\", _hoisted_1))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"modelValue\", \"errorMessage\", \"disable\", \"error\"])\n ]))\n}","\nimport { ref, Ref } from \"vue\";\n\nexport default {\n name: \"PhoneNumberPanel\",\n emits: [\"input\"],\n props: {\n errorMessage: String,\n disable: Boolean,\n isError: Boolean,\n phoneNumber: Number,\n },\n setup(props: any, { emit }: { emit: any }) {\n const phone: Ref = ref(\"\");\n\n if (props.phoneNumber) {\n phone.value = props.phoneNumber.toString().substring(2);\n }\n\n const handleNumberInput = (value: string): void => {\n if (!value || value === \"\") {\n return;\n }\n const formattedPhoneNumber = parseInt(`38${value.replace(/\\D/g, \"\")}`);\n emit(\"input\", formattedPhoneNumber);\n };\n\n return {\n phone,\n handleNumberInput,\n };\n },\n};\n","/**\n * Based on the work of https://github.com/jchook/uuid-random\n */\n\nlet\n buf,\n bufIdx = 0\nconst hexBytes = new Array(256)\n\n// Pre-calculate toString(16) for speed\nfor (let i = 0; i < 256; i++) {\n hexBytes[ i ] = (i + 0x100).toString(16).substring(1)\n}\n\n// Use best available PRNG\nconst randomBytes = (() => {\n // Node & Browser support\n const lib = typeof crypto !== 'undefined'\n ? crypto\n : (\n typeof window !== 'undefined'\n ? window.crypto || window.msCrypto\n : void 0\n )\n\n if (lib !== void 0) {\n if (lib.randomBytes !== void 0) {\n return lib.randomBytes\n }\n if (lib.getRandomValues !== void 0) {\n return n => {\n const bytes = new Uint8Array(n)\n lib.getRandomValues(bytes)\n return bytes\n }\n }\n }\n\n return n => {\n const r = []\n for (let i = n; i > 0; i--) {\n r.push(Math.floor(Math.random() * 256))\n }\n return r\n }\n})()\n\n// Buffer random numbers for speed\n// Reduce memory usage by decreasing this number (min 16)\n// or improve speed by increasing this number (try 16384)\nconst BUFFER_SIZE = 4096\n\nexport default function () {\n // Buffer some random bytes for speed\n if (buf === void 0 || (bufIdx + 16 > BUFFER_SIZE)) {\n bufIdx = 0\n buf = randomBytes(BUFFER_SIZE)\n }\n\n const b = Array.prototype.slice.call(buf, bufIdx, (bufIdx += 16))\n b[ 6 ] = (b[ 6 ] & 0x0f) | 0x40\n b[ 8 ] = (b[ 8 ] & 0x3f) | 0x80\n\n return hexBytes[ b[ 0 ] ] + hexBytes[ b[ 1 ] ]\n + hexBytes[ b[ 2 ] ] + hexBytes[ b[ 3 ] ] + '-'\n + hexBytes[ b[ 4 ] ] + hexBytes[ b[ 5 ] ] + '-'\n + hexBytes[ b[ 6 ] ] + hexBytes[ b[ 7 ] ] + '-'\n + hexBytes[ b[ 8 ] ] + hexBytes[ b[ 9 ] ] + '-'\n + hexBytes[ b[ 10 ] ] + hexBytes[ b[ 11 ] ]\n + hexBytes[ b[ 12 ] ] + hexBytes[ b[ 13 ] ]\n + hexBytes[ b[ 14 ] ] + hexBytes[ b[ 15 ] ]\n}\n","import { ref, computed, watch, onMounted } from 'vue'\n\nimport uid from '../../utils/uid/uid.js'\n\nimport { isRuntimeSsrPreHydration } from '../../plugins/platform/Platform.js'\n\nfunction parseValue (val) {\n return val === void 0 || val === null\n ? null\n : val\n}\n\nfunction getId (val, required) {\n return val === void 0 || val === null\n ? (required === true ? `f_${ uid() }` : null)\n : val\n}\n\n/**\n * Returns an \"id\" which is a ref() that can be used as\n * a unique identifier to apply to a DOM node attribute.\n *\n * On SSR, it takes care of generating the id on the client side (only) to\n * avoid hydration errors.\n */\nexport default function ({ getValue, required = true } = {}) {\n if (isRuntimeSsrPreHydration.value === true) {\n const id = getValue !== void 0\n ? ref(parseValue(getValue()))\n : ref(null)\n\n if (required === true && id.value === null) {\n onMounted(() => {\n id.value = `f_${ uid() }` // getId(null, true)\n })\n }\n\n if (getValue !== void 0) {\n watch(getValue, newId => {\n id.value = getId(newId, required)\n })\n }\n\n return id\n }\n\n return getValue !== void 0\n ? computed(() => getId(getValue(), required))\n : ref(`f_${ uid() }`) // getId(null, true)\n}\n","import { ref, onBeforeUpdate, getCurrentInstance } from 'vue'\n\nconst listenerRE = /^on[A-Z]/\n\nexport default function () {\n const { attrs, vnode } = getCurrentInstance()\n\n const acc = {\n listeners: ref({}),\n attributes: ref({})\n }\n\n function update () {\n const attributes = {}\n const listeners = {}\n\n for (const key in attrs) {\n if (key !== 'class' && key !== 'style' && listenerRE.test(key) === false) {\n attributes[ key ] = attrs[ key ]\n }\n }\n\n for (const key in vnode.props) {\n if (listenerRE.test(key) === true) {\n listeners[ key ] = vnode.props[ key ]\n }\n }\n\n acc.attributes.value = attributes\n acc.listeners.value = listeners\n }\n\n onBeforeUpdate(update)\n\n update()\n\n return acc\n}\n","import { inject, watch, getCurrentInstance, onMounted, onBeforeUnmount } from 'vue'\n\nimport { formKey } from '../../utils/private.symbols/symbols.js'\n\nexport default function ({ validate, resetValidation, requiresQForm }) {\n const $form = inject(formKey, false)\n\n if ($form !== false) {\n const { props, proxy } = getCurrentInstance()\n\n // export public method (so it can be used in QForm)\n Object.assign(proxy, { validate, resetValidation })\n\n watch(() => props.disable, val => {\n if (val === true) {\n typeof resetValidation === 'function' && resetValidation()\n $form.unbindComponent(proxy)\n }\n else {\n $form.bindComponent(proxy)\n }\n })\n\n onMounted(() => {\n // register to parent QForm\n props.disable !== true && $form.bindComponent(proxy)\n })\n\n onBeforeUnmount(() => {\n // un-register from parent QForm\n props.disable !== true && $form.unbindComponent(proxy)\n })\n }\n else if (requiresQForm === true) {\n console.error('Parent QForm not found on useFormChild()!')\n }\n}\n","// file referenced from docs\n\nconst\n hex = /^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/,\n hexa = /^#[0-9a-fA-F]{4}([0-9a-fA-F]{4})?$/,\n hexOrHexa = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,\n rgb = /^rgb\\(((0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5]),){2}(0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5])\\)$/,\n rgba = /^rgba\\(((0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5]),){2}(0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5]),(0|0\\.[0-9]+[1-9]|0\\.[1-9]+|1)\\)$/\n\n// Keep in sync with ui/types/api/validation.d.ts\nexport const testPattern = {\n date: v => /^-?[\\d]+\\/[0-1]\\d\\/[0-3]\\d$/.test(v),\n time: v => /^([0-1]?\\d|2[0-3]):[0-5]\\d$/.test(v),\n fulltime: v => /^([0-1]?\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/.test(v),\n timeOrFulltime: v => /^([0-1]?\\d|2[0-3]):[0-5]\\d(:[0-5]\\d)?$/.test(v),\n\n // -- RFC 5322 --\n // -- Added in v2.6.6 --\n // This is a basic helper validation.\n // For something more complex (like RFC 822) you should write and use your own rule.\n // We won't be accepting PRs to enhance the one below because of the reason above.\n // eslint-disable-next-line\n email: v => /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/.test(v),\n\n hexColor: v => hex.test(v),\n hexaColor: v => hexa.test(v),\n hexOrHexaColor: v => hexOrHexa.test(v),\n\n rgbColor: v => rgb.test(v),\n rgbaColor: v => rgba.test(v),\n rgbOrRgbaColor: v => rgb.test(v) || rgba.test(v),\n\n hexOrRgbColor: v => hex.test(v) || rgb.test(v),\n hexaOrRgbaColor: v => hexa.test(v) || rgba.test(v),\n anyColor: v => hexOrHexa.test(v) || rgb.test(v) || rgba.test(v)\n}\n\nexport default {\n testPattern\n}\n","import { ref, computed, watch, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport useFormChild from '../use-form/use-form-child.js'\nimport { testPattern } from '../../utils/patterns/patterns.js'\nimport debounce from '../../utils/debounce/debounce.js'\nimport { injectProp } from '../../utils/private.inject-obj-prop/inject-obj-prop.js'\n\nconst lazyRulesValues = [ true, false, 'ondemand' ]\n\nexport const useValidateProps = {\n modelValue: {},\n\n error: {\n type: Boolean,\n default: null\n },\n errorMessage: String,\n noErrorIcon: Boolean,\n\n rules: Array,\n reactiveRules: Boolean,\n lazyRules: {\n type: [ Boolean, String ],\n default: false, // statement unneeded but avoids future vue implementation changes\n validator: v => lazyRulesValues.includes(v)\n }\n}\n\nexport default function (focused, innerLoading) {\n const { props, proxy } = getCurrentInstance()\n\n const innerError = ref(false)\n const innerErrorMessage = ref(null)\n const isDirtyModel = ref(false)\n\n useFormChild({ validate, resetValidation })\n\n let validateIndex = 0, unwatchRules\n\n const hasRules = computed(() =>\n props.rules !== void 0\n && props.rules !== null\n && props.rules.length !== 0\n )\n\n const canDebounceValidate = computed(() => (\n props.disable !== true\n && hasRules.value === true\n // Should not have a validation in progress already;\n // It might mean that focus switched to submit btn and\n // QForm's submit() has been called already (ENTER key)\n && innerLoading.value === false\n ))\n\n const hasError = computed(() =>\n props.error === true || innerError.value === true\n )\n\n const errorMessage = computed(() => (\n typeof props.errorMessage === 'string' && props.errorMessage.length !== 0\n ? props.errorMessage\n : innerErrorMessage.value\n ))\n\n watch(() => props.modelValue, () => {\n isDirtyModel.value = true\n\n if (\n canDebounceValidate.value === true\n // trigger validation if not using any kind of lazy-rules\n && props.lazyRules === false\n ) {\n debouncedValidate()\n }\n })\n\n function onRulesChange () {\n if (\n props.lazyRules !== 'ondemand'\n && canDebounceValidate.value === true\n && isDirtyModel.value === true\n ) {\n debouncedValidate()\n }\n }\n\n watch(() => props.reactiveRules, val => {\n if (val === true) {\n if (unwatchRules === void 0) {\n unwatchRules = watch(() => props.rules, onRulesChange, { immediate: true, deep: true })\n }\n }\n else if (unwatchRules !== void 0) {\n unwatchRules()\n unwatchRules = void 0\n }\n }, { immediate: true })\n\n watch(() => props.lazyRules, onRulesChange)\n\n watch(focused, val => {\n if (val === true) {\n isDirtyModel.value = true\n }\n else if (\n canDebounceValidate.value === true\n && props.lazyRules !== 'ondemand'\n ) {\n debouncedValidate()\n }\n })\n\n function resetValidation () {\n validateIndex++\n innerLoading.value = false\n isDirtyModel.value = false\n innerError.value = false\n innerErrorMessage.value = null\n debouncedValidate.cancel()\n }\n\n /*\n * Return value\n * - true (validation succeeded)\n * - false (validation failed)\n * - Promise (pending async validation)\n */\n function validate (val = props.modelValue) {\n if (\n props.disable === true\n || hasRules.value === false\n ) {\n return true\n }\n\n const index = ++validateIndex\n\n const setDirty = innerLoading.value !== true\n ? () => { isDirtyModel.value = true }\n : () => {}\n\n const update = (err, msg) => {\n err === true && setDirty()\n\n innerError.value = err\n innerErrorMessage.value = msg || null\n innerLoading.value = false\n }\n\n const promises = []\n\n for (let i = 0; i < props.rules.length; i++) {\n const rule = props.rules[ i ]\n let res\n\n if (typeof rule === 'function') {\n res = rule(val, testPattern)\n }\n else if (typeof rule === 'string' && testPattern[ rule ] !== void 0) {\n res = testPattern[ rule ](val)\n }\n\n if (res === false || typeof res === 'string') {\n update(true, res)\n return false\n }\n else if (res !== true && res !== void 0) {\n promises.push(res)\n }\n }\n\n if (promises.length === 0) {\n update(false)\n return true\n }\n\n innerLoading.value = true\n\n return Promise.all(promises).then(\n res => {\n if (res === void 0 || Array.isArray(res) === false || res.length === 0) {\n index === validateIndex && update(false)\n return true\n }\n\n const msg = res.find(r => r === false || typeof r === 'string')\n index === validateIndex && update(msg !== void 0, msg)\n return msg === void 0\n },\n e => {\n if (index === validateIndex) {\n console.error(e)\n update(true)\n }\n\n return false\n }\n )\n }\n\n const debouncedValidate = debounce(validate, 0)\n\n onBeforeUnmount(() => {\n unwatchRules !== void 0 && unwatchRules()\n debouncedValidate.cancel()\n })\n\n // expose public methods & props\n Object.assign(proxy, { resetValidation, validate })\n injectProp(proxy, 'hasError', () => hasError.value)\n\n return {\n isDirtyModel,\n hasRules,\n hasError,\n errorMessage,\n\n validate,\n resetValidation\n }\n}\n","let queue = []\nlet waitFlags = []\n\nfunction clearFlag (flag) {\n waitFlags = waitFlags.filter(entry => entry !== flag)\n}\n\nexport function addFocusWaitFlag (flag) {\n clearFlag(flag)\n waitFlags.push(flag)\n}\n\nexport function removeFocusWaitFlag (flag) {\n clearFlag(flag)\n\n if (waitFlags.length === 0 && queue.length !== 0) {\n // only call last focus handler (can't focus multiple things at once)\n queue[ queue.length - 1 ]()\n queue = []\n }\n}\n\nexport function addFocusFn (fn) {\n if (waitFlags.length === 0) {\n fn()\n }\n else {\n queue.push(fn)\n }\n}\n\nexport function removeFocusFn (fn) {\n queue = queue.filter(entry => entry !== fn)\n}\n","import { h, ref, computed, Transition, nextTick, onActivated, onDeactivated, onBeforeUnmount, onMounted, getCurrentInstance } from 'vue'\n\nimport QIcon from '../../components/icon/QIcon.js'\nimport QSpinner from '../../components/spinner/QSpinner.js'\n\nimport useId from '../use-id/use-id.js'\nimport useSplitAttrs from '../use-split-attrs/use-split-attrs.js'\nimport useDark, { useDarkProps } from '../../composables/private.use-dark/use-dark.js'\nimport useValidate, { useValidateProps } from '../private.use-validate/use-validate.js'\n\nimport { hSlot } from '../../utils/private.render/render.js'\nimport { prevent, stopAndPrevent } from '../../utils/event/event.js'\nimport { addFocusFn, removeFocusFn } from '../../utils/private.focus/focus-manager.js'\n\nexport function fieldValueIsFilled (val) {\n return val !== void 0\n && val !== null\n && ('' + val).length !== 0\n}\n\nexport const useNonInputFieldProps = {\n ...useDarkProps,\n ...useValidateProps,\n\n label: String,\n stackLabel: Boolean,\n hint: String,\n hideHint: Boolean,\n prefix: String,\n suffix: String,\n\n labelColor: String,\n color: String,\n bgColor: String,\n\n filled: Boolean,\n outlined: Boolean,\n borderless: Boolean,\n standout: [ Boolean, String ],\n\n square: Boolean,\n\n loading: Boolean,\n\n labelSlot: Boolean,\n\n bottomSlots: Boolean,\n hideBottomSpace: Boolean,\n\n rounded: Boolean,\n dense: Boolean,\n itemAligned: Boolean,\n\n counter: Boolean,\n\n clearable: Boolean,\n clearIcon: String,\n\n disable: Boolean,\n readonly: Boolean,\n\n autofocus: Boolean,\n\n for: String\n}\n\nexport const useFieldProps = {\n ...useNonInputFieldProps,\n maxlength: [ Number, String ]\n}\n\nexport const useFieldEmits = [ 'update:modelValue', 'clear', 'focus', 'blur' ]\n\nexport function useFieldState ({ requiredForAttr = true, tagProp, changeEvent = false } = {}) {\n const { props, proxy } = getCurrentInstance()\n\n const isDark = useDark(props, proxy.$q)\n const targetUid = useId({\n required: requiredForAttr,\n getValue: () => props.for\n })\n\n return {\n requiredForAttr,\n changeEvent,\n tag: tagProp === true\n ? computed(() => props.tag)\n : { value: 'label' },\n\n isDark,\n\n editable: computed(() =>\n props.disable !== true && props.readonly !== true\n ),\n\n innerLoading: ref(false),\n focused: ref(false),\n hasPopupOpen: false,\n\n splitAttrs: useSplitAttrs(),\n targetUid,\n\n rootRef: ref(null),\n targetRef: ref(null),\n controlRef: ref(null)\n\n /**\n * user supplied additionals:\n\n * innerValue - computed\n * floatingLabel - computed\n * inputRef - computed\n\n * fieldClass - computed\n * hasShadow - computed\n\n * controlEvents - Object with fn(e)\n\n * getControl - fn\n * getInnerAppend - fn\n * getControlChild - fn\n * getShadowControl - fn\n * showPopup - fn\n */\n }\n}\n\nexport default function (state) {\n const { props, emit, slots, attrs, proxy } = getCurrentInstance()\n const { $q } = proxy\n\n let focusoutTimer = null\n\n if (state.hasValue === void 0) {\n state.hasValue = computed(() => fieldValueIsFilled(props.modelValue))\n }\n\n if (state.emitValue === void 0) {\n state.emitValue = value => {\n emit('update:modelValue', value)\n }\n }\n\n if (state.controlEvents === void 0) {\n state.controlEvents = {\n onFocusin: onControlFocusin,\n onFocusout: onControlFocusout\n }\n }\n\n Object.assign(state, {\n clearValue,\n onControlFocusin,\n onControlFocusout,\n focus\n })\n\n if (state.computedCounter === void 0) {\n state.computedCounter = computed(() => {\n if (props.counter !== false) {\n const len = typeof props.modelValue === 'string' || typeof props.modelValue === 'number'\n ? ('' + props.modelValue).length\n : (Array.isArray(props.modelValue) === true ? props.modelValue.length : 0)\n\n const max = props.maxlength !== void 0\n ? props.maxlength\n : props.maxValues\n\n return len + (max !== void 0 ? ' / ' + max : '')\n }\n })\n }\n\n const {\n isDirtyModel,\n hasRules,\n hasError,\n errorMessage,\n resetValidation\n } = useValidate(state.focused, state.innerLoading)\n\n const floatingLabel = state.floatingLabel !== void 0\n ? computed(() => props.stackLabel === true || state.focused.value === true || state.floatingLabel.value === true)\n : computed(() => props.stackLabel === true || state.focused.value === true || state.hasValue.value === true)\n\n const shouldRenderBottom = computed(() =>\n props.bottomSlots === true\n || props.hint !== void 0\n || hasRules.value === true\n || props.counter === true\n || props.error !== null\n )\n\n const styleType = computed(() => {\n if (props.filled === true) { return 'filled' }\n if (props.outlined === true) { return 'outlined' }\n if (props.borderless === true) { return 'borderless' }\n if (props.standout) { return 'standout' }\n return 'standard'\n })\n\n const classes = computed(() =>\n `q-field row no-wrap items-start q-field--${ styleType.value }`\n + (state.fieldClass !== void 0 ? ` ${ state.fieldClass.value }` : '')\n + (props.rounded === true ? ' q-field--rounded' : '')\n + (props.square === true ? ' q-field--square' : '')\n + (floatingLabel.value === true ? ' q-field--float' : '')\n + (hasLabel.value === true ? ' q-field--labeled' : '')\n + (props.dense === true ? ' q-field--dense' : '')\n + (props.itemAligned === true ? ' q-field--item-aligned q-item-type' : '')\n + (state.isDark.value === true ? ' q-field--dark' : '')\n + (state.getControl === void 0 ? ' q-field--auto-height' : '')\n + (state.focused.value === true ? ' q-field--focused' : '')\n + (hasError.value === true ? ' q-field--error' : '')\n + (hasError.value === true || state.focused.value === true ? ' q-field--highlighted' : '')\n + (props.hideBottomSpace !== true && shouldRenderBottom.value === true ? ' q-field--with-bottom' : '')\n + (props.disable === true ? ' q-field--disabled' : (props.readonly === true ? ' q-field--readonly' : ''))\n )\n\n const contentClass = computed(() =>\n 'q-field__control relative-position row no-wrap'\n + (props.bgColor !== void 0 ? ` bg-${ props.bgColor }` : '')\n + (\n hasError.value === true\n ? ' text-negative'\n : (\n typeof props.standout === 'string' && props.standout.length !== 0 && state.focused.value === true\n ? ` ${ props.standout }`\n : (props.color !== void 0 ? ` text-${ props.color }` : '')\n )\n )\n )\n\n const hasLabel = computed(() =>\n props.labelSlot === true || props.label !== void 0\n )\n\n const labelClass = computed(() =>\n 'q-field__label no-pointer-events absolute ellipsis'\n + (props.labelColor !== void 0 && hasError.value !== true ? ` text-${ props.labelColor }` : '')\n )\n\n const controlSlotScope = computed(() => ({\n id: state.targetUid.value,\n editable: state.editable.value,\n focused: state.focused.value,\n floatingLabel: floatingLabel.value,\n modelValue: props.modelValue,\n emitValue: state.emitValue\n }))\n\n const attributes = computed(() => {\n const acc = {}\n\n if (state.targetUid.value) {\n acc.for = state.targetUid.value\n }\n\n if (props.disable === true) {\n acc[ 'aria-disabled' ] = 'true'\n }\n\n return acc\n })\n\n function focusHandler () {\n const el = document.activeElement\n let target = state.targetRef !== void 0 && state.targetRef.value\n\n if (target && (el === null || el.id !== state.targetUid.value)) {\n target.hasAttribute('tabindex') === true || (target = target.querySelector('[tabindex]'))\n if (target && target !== el) {\n target.focus({ preventScroll: true })\n }\n }\n }\n\n function focus () {\n addFocusFn(focusHandler)\n }\n\n function blur () {\n removeFocusFn(focusHandler)\n const el = document.activeElement\n if (el !== null && state.rootRef.value.contains(el)) {\n el.blur()\n }\n }\n\n function onControlFocusin (e) {\n if (focusoutTimer !== null) {\n clearTimeout(focusoutTimer)\n focusoutTimer = null\n }\n\n if (state.editable.value === true && state.focused.value === false) {\n state.focused.value = true\n emit('focus', e)\n }\n }\n\n function onControlFocusout (e, then) {\n focusoutTimer !== null && clearTimeout(focusoutTimer)\n focusoutTimer = setTimeout(() => {\n focusoutTimer = null\n\n if (\n document.hasFocus() === true && (\n state.hasPopupOpen === true\n || state.controlRef === void 0\n || state.controlRef.value === null\n || state.controlRef.value.contains(document.activeElement) !== false\n )\n ) return\n\n if (state.focused.value === true) {\n state.focused.value = false\n emit('blur', e)\n }\n\n then !== void 0 && then()\n })\n }\n\n function clearValue (e) {\n // prevent activating the field but keep focus on desktop\n stopAndPrevent(e)\n\n if ($q.platform.is.mobile !== true) {\n const el = (state.targetRef !== void 0 && state.targetRef.value) || state.rootRef.value\n el.focus()\n }\n else if (state.rootRef.value.contains(document.activeElement) === true) {\n document.activeElement.blur()\n }\n\n if (props.type === 'file') {\n // do not let focus be triggered\n // as it will make the native file dialog\n // appear for another selection\n state.inputRef.value.value = null\n }\n\n emit('update:modelValue', null)\n state.changeEvent === true && emit('change', null)\n emit('clear', props.modelValue)\n\n nextTick(() => {\n const isDirty = isDirtyModel.value\n resetValidation()\n isDirtyModel.value = isDirty\n })\n }\n\n function onClearableKeyup (evt) {\n [ 13, 32 ].includes(evt.keyCode) && clearValue(evt)\n }\n\n function getContent () {\n const node = []\n\n slots.prepend !== void 0 && node.push(\n h('div', {\n class: 'q-field__prepend q-field__marginal row no-wrap items-center',\n key: 'prepend',\n onClick: prevent\n }, slots.prepend())\n )\n\n node.push(\n h('div', {\n class: 'q-field__control-container col relative-position row no-wrap q-anchor--skip'\n }, getControlContainer())\n )\n\n hasError.value === true && props.noErrorIcon === false && node.push(\n getInnerAppendNode('error', [\n h(QIcon, { name: $q.iconSet.field.error, color: 'negative' })\n ])\n )\n\n if (props.loading === true || state.innerLoading.value === true) {\n node.push(\n getInnerAppendNode(\n 'inner-loading-append',\n slots.loading !== void 0\n ? slots.loading()\n : [ h(QSpinner, { color: props.color }) ]\n )\n )\n }\n else if (props.clearable === true && state.hasValue.value === true && state.editable.value === true) {\n node.push(\n getInnerAppendNode('inner-clearable-append', [\n h(QIcon, {\n class: 'q-field__focusable-action',\n name: props.clearIcon || $q.iconSet.field.clear,\n tabindex: 0,\n role: 'button',\n 'aria-hidden': 'false',\n 'aria-label': $q.lang.label.clear,\n onKeyup: onClearableKeyup,\n onClick: clearValue\n })\n ])\n )\n }\n\n slots.append !== void 0 && node.push(\n h('div', {\n class: 'q-field__append q-field__marginal row no-wrap items-center',\n key: 'append',\n onClick: prevent\n }, slots.append())\n )\n\n state.getInnerAppend !== void 0 && node.push(\n getInnerAppendNode('inner-append', state.getInnerAppend())\n )\n\n state.getControlChild !== void 0 && node.push(\n state.getControlChild()\n )\n\n return node\n }\n\n function getControlContainer () {\n const node = []\n\n props.prefix !== void 0 && props.prefix !== null && node.push(\n h('div', {\n class: 'q-field__prefix no-pointer-events row items-center'\n }, props.prefix)\n )\n\n if (state.getShadowControl !== void 0 && state.hasShadow.value === true) {\n node.push(\n state.getShadowControl()\n )\n }\n\n if (state.getControl !== void 0) {\n node.push(state.getControl())\n }\n // internal usage only:\n else if (slots.rawControl !== void 0) {\n node.push(slots.rawControl())\n }\n else if (slots.control !== void 0) {\n node.push(\n h('div', {\n ref: state.targetRef,\n class: 'q-field__native row',\n tabindex: -1,\n ...state.splitAttrs.attributes.value,\n 'data-autofocus': props.autofocus === true || void 0\n }, slots.control(controlSlotScope.value))\n )\n }\n\n hasLabel.value === true && node.push(\n h('div', {\n class: labelClass.value\n }, hSlot(slots.label, props.label))\n )\n\n props.suffix !== void 0 && props.suffix !== null && node.push(\n h('div', {\n class: 'q-field__suffix no-pointer-events row items-center'\n }, props.suffix)\n )\n\n return node.concat(hSlot(slots.default))\n }\n\n function getBottom () {\n let msg, key\n\n if (hasError.value === true) {\n if (errorMessage.value !== null) {\n msg = [ h('div', { role: 'alert' }, errorMessage.value) ]\n key = `q--slot-error-${ errorMessage.value }`\n }\n else {\n msg = hSlot(slots.error)\n key = 'q--slot-error'\n }\n }\n else if (props.hideHint !== true || state.focused.value === true) {\n if (props.hint !== void 0) {\n msg = [ h('div', props.hint) ]\n key = `q--slot-hint-${ props.hint }`\n }\n else {\n msg = hSlot(slots.hint)\n key = 'q--slot-hint'\n }\n }\n\n const hasCounter = props.counter === true || slots.counter !== void 0\n\n if (\n props.hideBottomSpace === true\n && hasCounter === false\n && msg === void 0\n ) return\n\n const main = h('div', {\n key,\n class: 'q-field__messages col'\n }, msg)\n\n return h('div', {\n class: 'q-field__bottom row items-start q-field__bottom--'\n + (props.hideBottomSpace !== true ? 'animated' : 'stale'),\n onClick: prevent\n }, [\n props.hideBottomSpace === true\n ? main\n : h(Transition, { name: 'q-transition--field-message' }, () => main),\n\n hasCounter === true\n ? h('div', {\n class: 'q-field__counter'\n }, slots.counter !== void 0 ? slots.counter() : state.computedCounter.value)\n : null\n ])\n }\n\n function getInnerAppendNode (key, content) {\n return content === null\n ? null\n : h('div', {\n key,\n class: 'q-field__append q-field__marginal row no-wrap items-center q-anchor--skip'\n }, content)\n }\n\n let shouldActivate = false\n\n onDeactivated(() => {\n shouldActivate = true\n })\n\n onActivated(() => {\n shouldActivate === true && props.autofocus === true && proxy.focus()\n })\n\n props.autofocus === true && onMounted(() => {\n proxy.focus()\n })\n\n onBeforeUnmount(() => {\n focusoutTimer !== null && clearTimeout(focusoutTimer)\n })\n\n // expose public methods\n Object.assign(proxy, { focus, blur })\n\n return function renderField () {\n const labelAttrs = state.getControl === void 0 && slots.control === void 0\n ? {\n ...state.splitAttrs.attributes.value,\n 'data-autofocus': props.autofocus === true || void 0,\n ...attributes.value\n }\n : attributes.value\n\n return h(state.tag.value, {\n ref: state.rootRef,\n class: [\n classes.value,\n attrs.class\n ],\n style: attrs.style,\n ...labelAttrs\n }, [\n slots.before !== void 0\n ? h('div', {\n class: 'q-field__before q-field__marginal row no-wrap items-center',\n onClick: prevent\n }, slots.before())\n : null,\n\n h('div', {\n class: 'q-field__inner relative-position col self-stretch'\n }, [\n h('div', {\n ref: state.controlRef,\n class: contentClass.value,\n tabindex: -1,\n ...state.controlEvents\n }, getContent()),\n\n shouldRenderBottom.value === true\n ? getBottom()\n : null\n ]),\n\n slots.after !== void 0\n ? h('div', {\n class: 'q-field__after q-field__marginal row no-wrap items-center',\n onClick: prevent\n }, slots.after())\n : null\n ])\n }\n}\n","import { ref, watch, nextTick } from 'vue'\n\nimport { shouldIgnoreKey } from '../../utils/private.keyboard/key-composition.js'\n\n// leave NAMED_MASKS at top of file (code referenced from docs)\nconst NAMED_MASKS = {\n date: '####/##/##',\n datetime: '####/##/## ##:##',\n time: '##:##',\n fulltime: '##:##:##',\n phone: '(###) ### - ####',\n card: '#### #### #### ####'\n}\n\nconst TOKENS = {\n '#': { pattern: '[\\\\d]', negate: '[^\\\\d]' },\n\n S: { pattern: '[a-zA-Z]', negate: '[^a-zA-Z]' },\n N: { pattern: '[0-9a-zA-Z]', negate: '[^0-9a-zA-Z]' },\n\n A: { pattern: '[a-zA-Z]', negate: '[^a-zA-Z]', transform: v => v.toLocaleUpperCase() },\n a: { pattern: '[a-zA-Z]', negate: '[^a-zA-Z]', transform: v => v.toLocaleLowerCase() },\n\n X: { pattern: '[0-9a-zA-Z]', negate: '[^0-9a-zA-Z]', transform: v => v.toLocaleUpperCase() },\n x: { pattern: '[0-9a-zA-Z]', negate: '[^0-9a-zA-Z]', transform: v => v.toLocaleLowerCase() }\n}\n\nconst KEYS = Object.keys(TOKENS)\nKEYS.forEach(key => {\n TOKENS[ key ].regex = new RegExp(TOKENS[ key ].pattern)\n})\n\nconst\n tokenRegexMask = new RegExp('\\\\\\\\([^.*+?^${}()|([\\\\]])|([.*+?^${}()|[\\\\]])|([' + KEYS.join('') + '])|(.)', 'g'),\n escRegex = /[.*+?^${}()|[\\]\\\\]/g\n\nconst MARKER = String.fromCharCode(1)\n\nexport const useMaskProps = {\n mask: String,\n reverseFillMask: Boolean,\n fillMask: [ Boolean, String ],\n unmaskedValue: Boolean\n}\n\nexport default function (props, emit, emitValue, inputRef) {\n let maskMarked, maskReplaced, computedMask, computedUnmask, pastedTextStart, selectionAnchor\n\n const hasMask = ref(null)\n const innerValue = ref(getInitialMaskedValue())\n\n function getIsTypeText () {\n return props.autogrow === true\n || [ 'textarea', 'text', 'search', 'url', 'tel', 'password' ].includes(props.type)\n }\n\n watch(() => props.type + props.autogrow, updateMaskInternals)\n\n watch(() => props.mask, v => {\n if (v !== void 0) {\n updateMaskValue(innerValue.value, true)\n }\n else {\n const val = unmaskValue(innerValue.value)\n updateMaskInternals()\n props.modelValue !== val && emit('update:modelValue', val)\n }\n })\n\n watch(() => props.fillMask + props.reverseFillMask, () => {\n hasMask.value === true && updateMaskValue(innerValue.value, true)\n })\n\n watch(() => props.unmaskedValue, () => {\n hasMask.value === true && updateMaskValue(innerValue.value)\n })\n\n function getInitialMaskedValue () {\n updateMaskInternals()\n\n if (hasMask.value === true) {\n const masked = maskValue(unmaskValue(props.modelValue))\n\n return props.fillMask !== false\n ? fillWithMask(masked)\n : masked\n }\n\n return props.modelValue\n }\n\n function getPaddedMaskMarked (size) {\n if (size < maskMarked.length) {\n return maskMarked.slice(-size)\n }\n\n let pad = '', localMaskMarked = maskMarked\n const padPos = localMaskMarked.indexOf(MARKER)\n\n if (padPos !== -1) {\n for (let i = size - localMaskMarked.length; i > 0; i--) {\n pad += MARKER\n }\n\n localMaskMarked = localMaskMarked.slice(0, padPos) + pad + localMaskMarked.slice(padPos)\n }\n\n return localMaskMarked\n }\n\n function updateMaskInternals () {\n hasMask.value = props.mask !== void 0\n && props.mask.length !== 0\n && getIsTypeText()\n\n if (hasMask.value === false) {\n computedUnmask = void 0\n maskMarked = ''\n maskReplaced = ''\n return\n }\n\n const\n localComputedMask = NAMED_MASKS[ props.mask ] === void 0\n ? props.mask\n : NAMED_MASKS[ props.mask ],\n fillChar = typeof props.fillMask === 'string' && props.fillMask.length !== 0\n ? props.fillMask.slice(0, 1)\n : '_',\n fillCharEscaped = fillChar.replace(escRegex, '\\\\$&'),\n unmask = [],\n extract = [],\n mask = []\n\n let\n firstMatch = props.reverseFillMask === true,\n unmaskChar = '',\n negateChar = ''\n\n localComputedMask.replace(tokenRegexMask, (_, char1, esc, token, char2) => {\n if (token !== void 0) {\n const c = TOKENS[ token ]\n mask.push(c)\n negateChar = c.negate\n if (firstMatch === true) {\n extract.push('(?:' + negateChar + '+)?(' + c.pattern + '+)?(?:' + negateChar + '+)?(' + c.pattern + '+)?')\n firstMatch = false\n }\n extract.push('(?:' + negateChar + '+)?(' + c.pattern + ')?')\n }\n else if (esc !== void 0) {\n unmaskChar = '\\\\' + (esc === '\\\\' ? '' : esc)\n mask.push(esc)\n unmask.push('([^' + unmaskChar + ']+)?' + unmaskChar + '?')\n }\n else {\n const c = char1 !== void 0 ? char1 : char2\n unmaskChar = c === '\\\\' ? '\\\\\\\\\\\\\\\\' : c.replace(escRegex, '\\\\\\\\$&')\n mask.push(c)\n unmask.push('([^' + unmaskChar + ']+)?' + unmaskChar + '?')\n }\n })\n\n const\n unmaskMatcher = new RegExp(\n '^'\n + unmask.join('')\n + '(' + (unmaskChar === '' ? '.' : '[^' + unmaskChar + ']') + '+)?'\n + (unmaskChar === '' ? '' : '[' + unmaskChar + ']*') + '$'\n ),\n extractLast = extract.length - 1,\n extractMatcher = extract.map((re, index) => {\n if (index === 0 && props.reverseFillMask === true) {\n return new RegExp('^' + fillCharEscaped + '*' + re)\n }\n else if (index === extractLast) {\n return new RegExp(\n '^' + re\n + '(' + (negateChar === '' ? '.' : negateChar) + '+)?'\n + (props.reverseFillMask === true ? '$' : fillCharEscaped + '*')\n )\n }\n\n return new RegExp('^' + re)\n })\n\n computedMask = mask\n computedUnmask = val => {\n const unmaskMatch = unmaskMatcher.exec(props.reverseFillMask === true ? val : val.slice(0, mask.length + 1))\n if (unmaskMatch !== null) {\n val = unmaskMatch.slice(1).join('')\n }\n\n const\n extractMatch = [],\n extractMatcherLength = extractMatcher.length\n\n for (let i = 0, str = val; i < extractMatcherLength; i++) {\n const m = extractMatcher[ i ].exec(str)\n\n if (m === null) {\n break\n }\n\n str = str.slice(m.shift().length)\n extractMatch.push(...m)\n }\n if (extractMatch.length !== 0) {\n return extractMatch.join('')\n }\n\n return val\n }\n maskMarked = mask.map(v => (typeof v === 'string' ? v : MARKER)).join('')\n maskReplaced = maskMarked.split(MARKER).join(fillChar)\n }\n\n function updateMaskValue (rawVal, updateMaskInternalsFlag, inputType) {\n const\n inp = inputRef.value,\n end = inp.selectionEnd,\n endReverse = inp.value.length - end,\n unmasked = unmaskValue(rawVal)\n\n // Update here so unmask uses the original fillChar\n updateMaskInternalsFlag === true && updateMaskInternals()\n\n const\n preMasked = maskValue(unmasked),\n masked = props.fillMask !== false\n ? fillWithMask(preMasked)\n : preMasked,\n changed = innerValue.value !== masked\n\n // We want to avoid \"flickering\" so we set value immediately\n inp.value !== masked && (inp.value = masked)\n\n changed === true && (innerValue.value = masked)\n\n document.activeElement === inp && nextTick(() => {\n if (masked === maskReplaced) {\n const cursor = props.reverseFillMask === true ? maskReplaced.length : 0\n inp.setSelectionRange(cursor, cursor, 'forward')\n return\n }\n\n if (inputType === 'insertFromPaste' && props.reverseFillMask !== true) {\n const maxEnd = inp.selectionEnd\n let cursor = end - 1\n // each non-marker char means we move once to right\n for (let i = pastedTextStart; i <= cursor && i < maxEnd; i++) {\n if (maskMarked[ i ] !== MARKER) {\n cursor++\n }\n }\n\n moveCursor.right(inp, cursor)\n return\n }\n\n if ([ 'deleteContentBackward', 'deleteContentForward' ].indexOf(inputType) !== -1) {\n const cursor = props.reverseFillMask === true\n ? (\n end === 0\n ? (masked.length > preMasked.length ? 1 : 0)\n : Math.max(0, masked.length - (masked === maskReplaced ? 0 : Math.min(preMasked.length, endReverse) + 1)) + 1\n )\n : end\n\n inp.setSelectionRange(cursor, cursor, 'forward')\n return\n }\n\n if (props.reverseFillMask === true) {\n if (changed === true) {\n const cursor = Math.max(0, masked.length - (masked === maskReplaced ? 0 : Math.min(preMasked.length, endReverse + 1)))\n\n if (cursor === 1 && end === 1) {\n inp.setSelectionRange(cursor, cursor, 'forward')\n }\n else {\n moveCursor.rightReverse(inp, cursor)\n }\n }\n else {\n const cursor = masked.length - endReverse\n inp.setSelectionRange(cursor, cursor, 'backward')\n }\n }\n else {\n if (changed === true) {\n const cursor = Math.max(0, maskMarked.indexOf(MARKER), Math.min(preMasked.length, end) - 1)\n moveCursor.right(inp, cursor)\n }\n else {\n const cursor = end - 1\n moveCursor.right(inp, cursor)\n }\n }\n })\n\n const val = props.unmaskedValue === true\n ? unmaskValue(masked)\n : masked\n\n if (\n String(props.modelValue) !== val\n && (props.modelValue !== null || val !== '')\n ) {\n emitValue(val, true)\n }\n }\n\n function moveCursorForPaste (inp, start, end) {\n const preMasked = maskValue(unmaskValue(inp.value))\n\n start = Math.max(0, maskMarked.indexOf(MARKER), Math.min(preMasked.length, start))\n pastedTextStart = start\n\n inp.setSelectionRange(start, end, 'forward')\n }\n\n const moveCursor = {\n left (inp, cursor) {\n const noMarkBefore = maskMarked.slice(cursor - 1).indexOf(MARKER) === -1\n let i = Math.max(0, cursor - 1)\n\n for (; i >= 0; i--) {\n if (maskMarked[ i ] === MARKER) {\n cursor = i\n noMarkBefore === true && cursor++\n break\n }\n }\n\n if (\n i < 0\n && maskMarked[ cursor ] !== void 0\n && maskMarked[ cursor ] !== MARKER\n ) {\n return moveCursor.right(inp, 0)\n }\n\n cursor >= 0 && inp.setSelectionRange(cursor, cursor, 'backward')\n },\n\n right (inp, cursor) {\n const limit = inp.value.length\n let i = Math.min(limit, cursor + 1)\n\n for (; i <= limit; i++) {\n if (maskMarked[ i ] === MARKER) {\n cursor = i\n break\n }\n else if (maskMarked[ i - 1 ] === MARKER) {\n cursor = i\n }\n }\n\n if (\n i > limit\n && maskMarked[ cursor - 1 ] !== void 0\n && maskMarked[ cursor - 1 ] !== MARKER\n ) {\n return moveCursor.left(inp, limit)\n }\n\n inp.setSelectionRange(cursor, cursor, 'forward')\n },\n\n leftReverse (inp, cursor) {\n const\n localMaskMarked = getPaddedMaskMarked(inp.value.length)\n let i = Math.max(0, cursor - 1)\n\n for (; i >= 0; i--) {\n if (localMaskMarked[ i - 1 ] === MARKER) {\n cursor = i\n break\n }\n else if (localMaskMarked[ i ] === MARKER) {\n cursor = i\n if (i === 0) {\n break\n }\n }\n }\n\n if (\n i < 0\n && localMaskMarked[ cursor ] !== void 0\n && localMaskMarked[ cursor ] !== MARKER\n ) {\n return moveCursor.rightReverse(inp, 0)\n }\n\n cursor >= 0 && inp.setSelectionRange(cursor, cursor, 'backward')\n },\n\n rightReverse (inp, cursor) {\n const\n limit = inp.value.length,\n localMaskMarked = getPaddedMaskMarked(limit),\n noMarkBefore = localMaskMarked.slice(0, cursor + 1).indexOf(MARKER) === -1\n let i = Math.min(limit, cursor + 1)\n\n for (; i <= limit; i++) {\n if (localMaskMarked[ i - 1 ] === MARKER) {\n cursor = i\n cursor > 0 && noMarkBefore === true && cursor--\n break\n }\n }\n\n if (\n i > limit\n && localMaskMarked[ cursor - 1 ] !== void 0\n && localMaskMarked[ cursor - 1 ] !== MARKER\n ) {\n return moveCursor.leftReverse(inp, limit)\n }\n\n inp.setSelectionRange(cursor, cursor, 'forward')\n }\n }\n\n function onMaskedClick (e) {\n emit('click', e)\n\n selectionAnchor = void 0\n }\n\n function onMaskedKeydown (e) {\n emit('keydown', e)\n\n if (\n shouldIgnoreKey(e) === true\n || e.altKey === true // let browser handle these\n ) return\n\n const\n inp = inputRef.value,\n start = inp.selectionStart,\n end = inp.selectionEnd\n\n if (!e.shiftKey) {\n selectionAnchor = void 0\n }\n\n if (e.keyCode === 37 || e.keyCode === 39) { // Left / Right\n if (e.shiftKey && selectionAnchor === void 0) {\n selectionAnchor = inp.selectionDirection === 'forward' ? start : end\n }\n\n const fn = moveCursor[ (e.keyCode === 39 ? 'right' : 'left') + (props.reverseFillMask === true ? 'Reverse' : '') ]\n\n e.preventDefault()\n fn(inp, selectionAnchor === start ? end : start)\n\n if (e.shiftKey) {\n const cursor = inp.selectionStart\n inp.setSelectionRange(Math.min(selectionAnchor, cursor), Math.max(selectionAnchor, cursor), 'forward')\n }\n }\n else if (\n e.keyCode === 8 // Backspace\n && props.reverseFillMask !== true\n && start === end\n ) {\n moveCursor.left(inp, start)\n inp.setSelectionRange(inp.selectionStart, end, 'backward')\n }\n else if (\n e.keyCode === 46 // Delete\n && props.reverseFillMask === true\n && start === end\n ) {\n moveCursor.rightReverse(inp, end)\n inp.setSelectionRange(start, inp.selectionEnd, 'forward')\n }\n }\n\n function maskValue (val) {\n if (val === void 0 || val === null || val === '') { return '' }\n\n if (props.reverseFillMask === true) {\n return maskValueReverse(val)\n }\n\n const mask = computedMask\n\n let valIndex = 0, output = ''\n\n for (let maskIndex = 0; maskIndex < mask.length; maskIndex++) {\n const\n valChar = val[ valIndex ],\n maskDef = mask[ maskIndex ]\n\n if (typeof maskDef === 'string') {\n output += maskDef\n valChar === maskDef && valIndex++\n }\n else if (valChar !== void 0 && maskDef.regex.test(valChar)) {\n output += maskDef.transform !== void 0\n ? maskDef.transform(valChar)\n : valChar\n valIndex++\n }\n else {\n return output\n }\n }\n\n return output\n }\n\n function maskValueReverse (val) {\n const\n mask = computedMask,\n firstTokenIndex = maskMarked.indexOf(MARKER)\n\n let valIndex = val.length - 1, output = ''\n\n for (let maskIndex = mask.length - 1; maskIndex >= 0 && valIndex !== -1; maskIndex--) {\n const maskDef = mask[ maskIndex ]\n\n let valChar = val[ valIndex ]\n\n if (typeof maskDef === 'string') {\n output = maskDef + output\n valChar === maskDef && valIndex--\n }\n else if (valChar !== void 0 && maskDef.regex.test(valChar)) {\n do {\n output = (maskDef.transform !== void 0 ? maskDef.transform(valChar) : valChar) + output\n valIndex--\n valChar = val[ valIndex ]\n // eslint-disable-next-line no-unmodified-loop-condition\n } while (firstTokenIndex === maskIndex && valChar !== void 0 && maskDef.regex.test(valChar))\n }\n else {\n return output\n }\n }\n\n return output\n }\n\n function unmaskValue (val) {\n return typeof val !== 'string' || computedUnmask === void 0\n ? (typeof val === 'number' ? computedUnmask('' + val) : val)\n : computedUnmask(val)\n }\n\n function fillWithMask (val) {\n if (maskReplaced.length - val.length <= 0) {\n return val\n }\n\n return props.reverseFillMask === true && val.length !== 0\n ? maskReplaced.slice(0, -val.length) + val\n : val + maskReplaced.slice(val.length)\n }\n\n return {\n innerValue,\n hasMask,\n moveCursorForPaste,\n updateMaskValue,\n onMaskedKeydown,\n onMaskedClick\n }\n}\n","import { h, computed } from 'vue'\n\nexport const useFormProps = {\n name: String\n}\n\nexport function useFormAttrs (props) {\n return computed(() => ({\n type: 'hidden',\n name: props.name,\n value: props.modelValue\n }))\n}\n\nexport function useFormInject (formAttrs = {}) {\n return (child, action, className) => {\n child[ action ](\n h('input', {\n class: 'hidden' + (className || ''),\n ...formAttrs.value\n })\n )\n }\n}\n\nexport function useFormInputNameAttr (props) {\n return computed(() => props.name || props.for)\n}\n","import { computed } from 'vue'\n\nexport default function (props, typeGuard) {\n function getFormDomProps () {\n const model = props.modelValue\n\n try {\n const dt = 'DataTransfer' in window\n ? new DataTransfer()\n : ('ClipboardEvent' in window\n ? new ClipboardEvent('').clipboardData\n : void 0\n )\n\n if (Object(model) === model) {\n ('length' in model\n ? Array.from(model)\n : [ model ]\n ).forEach(file => {\n dt.items.add(file)\n })\n }\n\n return {\n files: dt.files\n }\n }\n catch (e) {\n return {\n files: void 0\n }\n }\n }\n\n return typeGuard === true\n ? computed(() => {\n if (props.type !== 'file') return\n return getFormDomProps()\n })\n : computed(getFormDomProps)\n}\n","import { client } from '../../plugins/platform/Platform.js'\n\nconst isJapanese = /[\\u3000-\\u303f\\u3040-\\u309f\\u30a0-\\u30ff\\uff00-\\uff9f\\u4e00-\\u9faf\\u3400-\\u4dbf]/\nconst isChinese = /[\\u4e00-\\u9fff\\u3400-\\u4dbf\\u{20000}-\\u{2a6df}\\u{2a700}-\\u{2b73f}\\u{2b740}-\\u{2b81f}\\u{2b820}-\\u{2ceaf}\\uf900-\\ufaff\\u3300-\\u33ff\\ufe30-\\ufe4f\\uf900-\\ufaff\\u{2f800}-\\u{2fa1f}]/u\nconst isKorean = /[\\u3131-\\u314e\\u314f-\\u3163\\uac00-\\ud7a3]/\nconst isPlainText = /[a-z0-9_ -]$/i\n\nexport default function (onInput) {\n return function onComposition (e) {\n if (e.type === 'compositionend' || e.type === 'change') {\n if (e.target.qComposing !== true) return\n e.target.qComposing = false\n onInput(e)\n }\n else if (\n e.type === 'compositionupdate'\n && e.target.qComposing !== true\n && typeof e.data === 'string'\n ) {\n const isComposing = client.is.firefox === true\n ? isPlainText.test(e.data) === false\n : isJapanese.test(e.data) === true || isChinese.test(e.data) === true || isKorean.test(e.data) === true\n\n if (isComposing === true) {\n e.target.qComposing = true\n }\n }\n }\n}\n","import { h, ref, computed, watch, onBeforeUnmount, onMounted, nextTick, getCurrentInstance } from 'vue'\n\nimport useField, { useFieldState, useFieldProps, useFieldEmits, fieldValueIsFilled } from '../../composables/private.use-field/use-field.js'\nimport useMask, { useMaskProps } from './use-mask.js'\nimport { useFormProps, useFormInputNameAttr } from '../../composables/use-form/private.use-form.js'\nimport useFileFormDomProps from '../../composables/private.use-file/use-file-dom-props.js'\nimport useKeyComposition from '../../composables/private.use-key-composition/use-key-composition.js'\n\nimport { createComponent } from '../../utils/private.create/create.js'\nimport { stop } from '../../utils/event/event.js'\nimport { addFocusFn } from '../../utils/private.focus/focus-manager.js'\nimport { injectProp } from '../../utils/private.inject-obj-prop/inject-obj-prop.js'\n\nexport default createComponent({\n name: 'QInput',\n\n inheritAttrs: false,\n\n props: {\n ...useFieldProps,\n ...useMaskProps,\n ...useFormProps,\n\n // override of useFieldProps > modelValue\n modelValue: __QUASAR_SSR_SERVER__\n ? {} // SSR does not know about FileList\n : [ String, Number, FileList ],\n\n shadowText: String,\n\n type: {\n type: String,\n default: 'text'\n },\n\n debounce: [ String, Number ],\n\n autogrow: Boolean, // makes a textarea\n\n inputClass: [ Array, String, Object ],\n inputStyle: [ Array, String, Object ]\n },\n\n emits: [\n ...useFieldEmits,\n 'paste', 'change',\n 'keydown', 'click', 'animationend'\n ],\n\n setup (props, { emit, attrs }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const temp = {}\n let emitCachedValue = NaN, typedNumber, stopValueWatcher, emitTimer = null, emitValueFn\n\n const inputRef = ref(null)\n const nameProp = useFormInputNameAttr(props)\n\n const {\n innerValue,\n hasMask,\n moveCursorForPaste,\n updateMaskValue,\n onMaskedKeydown,\n onMaskedClick\n } = useMask(props, emit, emitValue, inputRef)\n\n const formDomProps = useFileFormDomProps(props, /* type guard */ true)\n const hasValue = computed(() => fieldValueIsFilled(innerValue.value))\n\n const onComposition = useKeyComposition(onInput)\n\n const state = useFieldState({ changeEvent: true })\n\n const isTextarea = computed(() =>\n props.type === 'textarea' || props.autogrow === true\n )\n\n const isTypeText = computed(() =>\n isTextarea.value === true\n || [ 'text', 'search', 'url', 'tel', 'password' ].includes(props.type)\n )\n\n const onEvents = computed(() => {\n const evt = {\n ...state.splitAttrs.listeners.value,\n onInput,\n onPaste,\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n onChange,\n onBlur: onFinishEditing,\n onFocus: stop\n }\n\n evt.onCompositionstart = evt.onCompositionupdate = evt.onCompositionend = onComposition\n\n if (hasMask.value === true) {\n evt.onKeydown = onMaskedKeydown\n // reset selection anchor on pointer selection\n evt.onClick = onMaskedClick\n }\n\n if (props.autogrow === true) {\n evt.onAnimationend = onAnimationend\n }\n\n return evt\n })\n\n const inputAttrs = computed(() => {\n const attrs = {\n tabindex: 0,\n 'data-autofocus': props.autofocus === true || void 0,\n rows: props.type === 'textarea' ? 6 : void 0,\n 'aria-label': props.label,\n name: nameProp.value,\n ...state.splitAttrs.attributes.value,\n id: state.targetUid.value,\n maxlength: props.maxlength,\n disabled: props.disable === true,\n readonly: props.readonly === true\n }\n\n if (isTextarea.value === false) {\n attrs.type = props.type\n }\n\n if (props.autogrow === true) {\n attrs.rows = 1\n }\n\n return attrs\n })\n\n // some browsers lose the native input value\n // so we need to reattach it dynamically\n // (like type=\"password\" <-> type=\"text\"; see #12078)\n watch(() => props.type, () => {\n if (inputRef.value) {\n inputRef.value.value = props.modelValue\n }\n })\n\n watch(() => props.modelValue, v => {\n if (hasMask.value === true) {\n if (stopValueWatcher === true) {\n stopValueWatcher = false\n if (String(v) === emitCachedValue) return\n }\n\n updateMaskValue(v)\n }\n else if (innerValue.value !== v) {\n innerValue.value = v\n\n if (\n props.type === 'number'\n && temp.hasOwnProperty('value') === true\n ) {\n if (typedNumber === true) {\n typedNumber = false\n }\n else {\n delete temp.value\n }\n }\n }\n\n // textarea only\n props.autogrow === true && nextTick(adjustHeight)\n })\n\n watch(() => props.autogrow, val => {\n // textarea only\n if (val === true) {\n nextTick(adjustHeight)\n }\n // if it has a number of rows set respect it\n else if (inputRef.value !== null && attrs.rows > 0) {\n inputRef.value.style.height = 'auto'\n }\n })\n\n watch(() => props.dense, () => {\n props.autogrow === true && nextTick(adjustHeight)\n })\n\n function focus () {\n addFocusFn(() => {\n const el = document.activeElement\n if (\n inputRef.value !== null\n && inputRef.value !== el\n && (el === null || el.id !== state.targetUid.value)\n ) {\n inputRef.value.focus({ preventScroll: true })\n }\n })\n }\n\n function select () {\n inputRef.value !== null && inputRef.value.select()\n }\n\n function onPaste (e) {\n if (hasMask.value === true && props.reverseFillMask !== true) {\n const inp = e.target\n moveCursorForPaste(inp, inp.selectionStart, inp.selectionEnd)\n }\n\n emit('paste', e)\n }\n\n function onInput (e) {\n if (!e || !e.target) return\n\n if (props.type === 'file') {\n emit('update:modelValue', e.target.files)\n return\n }\n\n const val = e.target.value\n\n if (e.target.qComposing === true) {\n temp.value = val\n return\n }\n\n if (hasMask.value === true) {\n updateMaskValue(val, false, e.inputType)\n }\n else {\n emitValue(val)\n\n if (isTypeText.value === true && e.target === document.activeElement) {\n const { selectionStart, selectionEnd } = e.target\n\n if (selectionStart !== void 0 && selectionEnd !== void 0) {\n nextTick(() => {\n if (e.target === document.activeElement && val.indexOf(e.target.value) === 0) {\n e.target.setSelectionRange(selectionStart, selectionEnd)\n }\n })\n }\n }\n }\n\n // we need to trigger it immediately too,\n // to avoid \"flickering\"\n props.autogrow === true && adjustHeight()\n }\n\n function onAnimationend (e) {\n emit('animationend', e)\n adjustHeight()\n }\n\n function emitValue (val, stopWatcher) {\n emitValueFn = () => {\n emitTimer = null\n\n if (\n props.type !== 'number'\n && temp.hasOwnProperty('value') === true\n ) {\n delete temp.value\n }\n\n if (props.modelValue !== val && emitCachedValue !== val) {\n emitCachedValue = val\n\n stopWatcher === true && (stopValueWatcher = true)\n emit('update:modelValue', val)\n\n nextTick(() => {\n emitCachedValue === val && (emitCachedValue = NaN)\n })\n }\n\n emitValueFn = void 0\n }\n\n if (props.type === 'number') {\n typedNumber = true\n temp.value = val\n }\n\n if (props.debounce !== void 0) {\n emitTimer !== null && clearTimeout(emitTimer)\n temp.value = val\n emitTimer = setTimeout(emitValueFn, props.debounce)\n }\n else {\n emitValueFn()\n }\n }\n\n // textarea only\n function adjustHeight () {\n requestAnimationFrame(() => {\n const inp = inputRef.value\n if (inp !== null) {\n const parentStyle = inp.parentNode.style\n // chrome does not keep scroll #15498\n const { scrollTop } = inp\n // chrome calculates a smaller scrollHeight when in a .column container\n const { overflowY, maxHeight } = $q.platform.is.firefox === true\n ? {}\n : window.getComputedStyle(inp)\n // on firefox or if overflowY is specified as scroll #14263, #14344\n // we don't touch overflow\n // firefox is not so bad in the end\n const changeOverflow = overflowY !== void 0 && overflowY !== 'scroll'\n\n // reset height of textarea to a small size to detect the real height\n // but keep the total control size the same\n changeOverflow === true && (inp.style.overflowY = 'hidden')\n parentStyle.marginBottom = (inp.scrollHeight - 1) + 'px'\n inp.style.height = '1px'\n\n inp.style.height = inp.scrollHeight + 'px'\n // we should allow scrollbars only\n // if there is maxHeight and content is taller than maxHeight\n changeOverflow === true && (inp.style.overflowY = parseInt(maxHeight, 10) < inp.scrollHeight ? 'auto' : 'hidden')\n parentStyle.marginBottom = ''\n inp.scrollTop = scrollTop\n }\n })\n }\n\n function onChange (e) {\n onComposition(e)\n\n if (emitTimer !== null) {\n clearTimeout(emitTimer)\n emitTimer = null\n }\n\n emitValueFn !== void 0 && emitValueFn()\n\n emit('change', e.target.value)\n }\n\n function onFinishEditing (e) {\n e !== void 0 && stop(e)\n\n if (emitTimer !== null) {\n clearTimeout(emitTimer)\n emitTimer = null\n }\n\n emitValueFn !== void 0 && emitValueFn()\n\n typedNumber = false\n stopValueWatcher = false\n delete temp.value\n\n // we need to use setTimeout instead of this.$nextTick\n // to avoid a bug where focusout is not emitted for type date/time/week/...\n props.type !== 'file' && setTimeout(() => {\n if (inputRef.value !== null) {\n inputRef.value.value = innerValue.value !== void 0 ? innerValue.value : ''\n }\n })\n }\n\n function getCurValue () {\n return temp.hasOwnProperty('value') === true\n ? temp.value\n : (innerValue.value !== void 0 ? innerValue.value : '')\n }\n\n onBeforeUnmount(() => {\n onFinishEditing()\n })\n\n onMounted(() => {\n // textarea only\n props.autogrow === true && adjustHeight()\n })\n\n Object.assign(state, {\n innerValue,\n\n fieldClass: computed(() =>\n `q-${ isTextarea.value === true ? 'textarea' : 'input' }`\n + (props.autogrow === true ? ' q-textarea--autogrow' : '')\n ),\n\n hasShadow: computed(() =>\n props.type !== 'file'\n && typeof props.shadowText === 'string'\n && props.shadowText.length !== 0\n ),\n\n inputRef,\n\n emitValue,\n\n hasValue,\n\n floatingLabel: computed(() =>\n (\n hasValue.value === true\n && (props.type !== 'number' || isNaN(innerValue.value) === false)\n )\n || fieldValueIsFilled(props.displayValue)\n ),\n\n getControl: () => {\n return h(isTextarea.value === true ? 'textarea' : 'input', {\n ref: inputRef,\n class: [\n 'q-field__native q-placeholder',\n props.inputClass\n ],\n style: props.inputStyle,\n ...inputAttrs.value,\n ...onEvents.value,\n ...(\n props.type !== 'file'\n ? { value: getCurValue() }\n : formDomProps.value\n )\n })\n },\n\n getShadowControl: () => {\n return h('div', {\n class: 'q-field__native q-field__shadow absolute-bottom no-pointer-events'\n + (isTextarea.value === true ? '' : ' text-no-wrap')\n }, [\n h('span', { class: 'invisible' }, getCurValue()),\n h('span', props.shadowText)\n ])\n }\n })\n\n const renderFn = useField(state)\n\n // expose public methods\n Object.assign(proxy, {\n focus,\n select,\n getNativeElement: () => inputRef.value // deprecated\n })\n\n injectProp(proxy, 'nativeEl', () => inputRef.value)\n\n return renderFn\n }\n})\n","import { render } from \"./PhoneNumberPanel.vue?vue&type=template&id=36f3965a&scoped=true&ts=true\"\nimport script from \"./PhoneNumberPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./PhoneNumberPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./PhoneNumberPanel.vue?vue&type=style&index=0&id=36f3965a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-36f3965a\"]])\n\nexport default __exports__\nimport QInput from 'quasar/src/components/input/QInput.js';\nimport QSeparator from 'quasar/src/components/separator/QSeparator.js';\nimport qInstall from \"../../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QInput,QSeparator});\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, vShow as _vShow, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"counter-caption\" }\nconst _hoisted_2 = { style: {\"color\":\"#4285f4\"} }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"section\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"article\", null, [\n _cache[0] || (_cache[0] = _createTextVNode(\" Через \")),\n _createElementVNode(\"span\", _hoisted_2, _toDisplayString($props.timeCounterValue), 1),\n _createTextVNode(\" \" + _toDisplayString($setup.timeCounterWordVariant) + \" кнопка буде активна \", 1)\n ], 512), [\n [_vShow, $setup.canShowCounter]\n ])\n ]))\n}","\nimport { computed, ComputedRef } from 'vue';\n\nexport default {\n name: \"PushNotificationSendDelayCounter\",\n props: {\n timeCounterValue: Number,\n },\n setup(props: any) {\n const canShowCounter: ComputedRef = computed(() => {\n return props.timeCounterValue && props.timeCounterValue > 0;\n });\n\n const timeCounterWordVariant: ComputedRef = computed(() => {\n let variant = \"секунд\";\n\n const lastDigit: number = parseInt(\n props.timeCounterValue.toString().slice(-1)\n );\n\n if (props.timeCounterValue >= 5 && props.timeCounterValue <= 20) {\n return \"секунд\";\n }\n if (lastDigit == 1) {\n return \"секунду\";\n }\n if (lastDigit > 1 && lastDigit < 5) {\n return \"секунди\";\n }\n\n return variant;\n });\n\n\n return {\n canShowCounter,\n timeCounterWordVariant\n }\n }\n};\n","import { render } from \"./PushNotificationSendDelayCounter.vue?vue&type=template&id=0e2e3324&scoped=true&ts=true\"\nimport script from \"./PushNotificationSendDelayCounter.vue?vue&type=script&lang=ts\"\nexport * from \"./PushNotificationSendDelayCounter.vue?vue&type=script&lang=ts\"\n\nimport \"./PushNotificationSendDelayCounter.vue?vue&type=style&index=0&id=0e2e3324&lang=scss&scoped=true\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0e2e3324\"]])\n\nexport default __exports__","\nimport BackToStoreButton from \"@/common-components/BackToStoreButton.vue\";\nimport { AuthType } from \"@/enums/AuthType\";\nimport MerchantInfoCache from \"@/models/cache/MerchantInfoCache\";\nimport BvrCheckoutData from \"@/models/requests/BvrApproveRequest\";\nimport * as Actions from \"@/store/constants/BvrPayCheckout/Actions\";\nimport * as Getters from \"@/store/constants/BvrPayCheckout/Getters\";\nimport * as Mutations from \"@/store/constants/BvrPayCheckout/Mutations\";\nimport AdditionalBonusAdView from \"@/temp-components/AdditionalBonusAdView.vue\";\nimport { computed, ComputedRef, ref } from \"vue\";\nimport { useStore } from \"vuex\";\nimport PaymentAvailableAttemptsView from \"./child-components/PaymentAvailableAttemptsView.vue\";\nimport PaymentConfirmationControlPanel from \"./child-components/PaymentConfirmationControlPanel.vue\";\nimport PaymentConfirmationDialogHeader from \"./child-components/PaymentConfirmationDialogHeader.vue\";\nimport PaymentErrorView from \"./child-components/PaymentErrorView.vue\";\nimport PaymentInfoPanel from \"./child-components/PaymentInfoPanel.vue\";\nimport PaymentVerifyPanel from \"./child-components/PaymentVerifyPanel.vue\";\nimport PhoneNumberPanel from \"./child-components/PhoneNumberPanel.vue\";\nimport PushNotificationSendDelayCounter from \"./child-components/PushNotificationSendDelayCounter.vue\";\n\nexport default {\n name: \"PaymentConfirmation\",\n components: {\n PaymentVerifyPanel,\n PaymentConfirmationDialogHeader,\n PaymentConfirmationControlPanel,\n PushNotificationSendDelayCounter,\n PaymentAvailableAttemptsView,\n AdditionalBonusAdView,\n PaymentInfoPanel,\n PhoneNumberPanel,\n PaymentErrorView,\n BackToStoreButton,\n },\n setup() {\n const store = useStore();\n const contentReady = ref(false);\n\n const errorCode: ComputedRef = computed(\n () => store.getters[Getters.BVR__GET_APPROVE_ERROR]\n );\n\n const isVerifyPayment: ComputedRef = computed(\n () => store.getters[Getters.BVR__GET_CHECKOUT_DATA].authType == AuthType.verify\n );\n\n const isApproveError: ComputedRef = computed(\n () => !!errorCode.value\n );\n\n const headerCaption: ComputedRef = computed(() => {\n const authType = store.getters[Getters.BVR__GET_CHECKOUT_DATA].authType;\n if (authType == AuthType.verify) {\n return \"Перевірка картки\";\n }\n return \"Підтвердь оплату в додатку\";\n });\n\n const hideOrderNumber: ComputedRef = computed(() => {\n return store.getters[Getters.BVR__GET_IS_ORDER_NUMBER_HIDDEN];\n })\n\n const isPaymentSuspend: ComputedRef = computed(() => store.getters[Getters.BVR__GET_IS_CHECKOUT_PAYMENT_SUSPEND]);\n\n const availableConfirmationAttemptCount: ComputedRef = computed(\n () =>\n store.getters[Getters.BVR__GET_AVAILABLE_PAYMENT_AUTHORIZATION_ATTEMPTS_LEFT]\n );\n\n const bvrCheckoutData: ComputedRef = computed(\n () => store.getters[Getters.BVR__GET_CHECKOUT_DATA]\n );\n\n const isLoyaltyPointsLoading: ComputedRef = computed(() => store.getters[Getters.BVR__GET_IS_LOYALTY_POINTS_LOAD_WAITING]);\n\n const merchantInfo: ComputedRef = computed(\n () => store.getters[Getters.BVR__GET_MERCHANT_INFO]\n );\n\n const isApproveButtonDisabled: ComputedRef = computed(\n () => store.getters[Getters.BVR__GET_APPROVE_BUTTON_LOCK_STATE]\n );\n\n const phoneNumberInputErrorMessage: ComputedRef = computed(\n () => store.getters[Getters.BVR__GET_CLIENT_PHONE_INPUT_ERROR_MESSAGE]\n );\n\n const isPhoneNumberInputError: ComputedRef = computed(\n () => store.getters[Getters.BVR__GET_IS_CLIENT_PHONE_INPUT_ERROR]\n );\n\n const pushSuspensionTime: ComputedRef = computed(\n () => store.getters[Getters.BVR__GET_PUSH_SEND_SUSPENSION_TIME_LEFT]\n );\n\n const canChangePhoneNumber: ComputedRef = computed(\n () => store.getters[Getters.BVR__GET_MERCHANT_INFO].canChangePhoneNumber\n );\n\n const failureRedirectUrl: ComputedRef = computed(() => {\n return (\n store.getters[Getters.BVR__GET_CHECKOUT_DATA].failureRedirectUrl ||\n store.getters[Getters.BVR__GET_MERCHANT_INFO].defaultFailureRedirectUrl\n );\n });\n\n const handlePaymentConfirmation = () => {\n const checkoutData: BvrCheckoutData =\n store.getters[Getters.BVR__GET_CHECKOUT_DATA];\n if (checkoutData.phoneNumber!.toString().length < 12) {\n store.commit(\n Mutations.BVR__SET_CLIENT_PHONE_INPUT_ERROR_MESSAGE,\n \"Некоректний формат номеру телeфона\"\n );\n store.commit(Mutations.BVR__SET_IS_CLIENT_PHONE_INPUT_ERROR, true);\n } else {\n store.commit(Mutations.BVR__SET_CLIENT_PHONE_INPUT_ERROR_MESSAGE, \"\");\n store.commit(Mutations.BVR__SET_IS_CLIENT_PHONE_INPUT_ERROR, false);\n store.dispatch(Actions.BVR__CONFIRM_PAYMENT);\n }\n };\n\n const handlePhoneNumberInput = (value: number) => {\n const bvrCheckoutData: BvrCheckoutData =\n store.getters[Getters.BVR__GET_CHECKOUT_DATA];\n\n if (!canChangePhoneNumber.value) {\n return;\n }\n\n if (value.toString().length === 12) {\n store.commit(Mutations.BVR__SET_CLIENT_PHONE_INPUT_ERROR_MESSAGE, \"\");\n store.commit(Mutations.BVR__SET_IS_CLIENT_PHONE_INPUT_ERROR, false);\n }\n store.commit(Mutations.BVR__SET_CHECKOUT_DATA, {\n ...bvrCheckoutData,\n phoneNumber: value,\n });\n };\n\n return {\n bvrCheckoutData,\n contentReady,\n phoneNumberInputErrorMessage,\n isPhoneNumberInputError,\n handlePaymentConfirmation,\n isLoyaltyPointsLoading,\n handlePhoneNumberInput,\n canChangePhoneNumber,\n pushSuspensionTime,\n isApproveButtonDisabled,\n availableConfirmationAttemptCount,\n isApproveError,\n errorCode,\n merchantInfo,\n headerCaption,\n isVerifyPayment,\n isPaymentSuspend,\n failureRedirectUrl,\n hideOrderNumber\n };\n },\n};\n","import { render } from \"./PaymentConfirmation.vue?vue&type=template&id=b8386f64&scoped=true&ts=true\"\nimport script from \"./PaymentConfirmation.vue?vue&type=script&lang=ts\"\nexport * from \"./PaymentConfirmation.vue?vue&type=script&lang=ts\"\n\nimport \"./PaymentConfirmation.vue?vue&type=style&index=0&id=b8386f64&lang=scss&scoped=true\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b8386f64\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, createBlock as _createBlock } from \"vue\"\nimport _imports_0 from '@/assets/emoji/emoji_loading_screen.png'\n\n\nconst _hoisted_1 = { class: \"payment-dialog-small q-pa-xl\" }\nconst _hoisted_2 = {\n key: 0,\n id: \"loading-screen\",\n class: \"q-ma-md payment-dialog-waiting row items-center\"\n}\nconst _hoisted_3 = {\n class: \"col q-pa-md\",\n style: {\"height\":\"120px\",\"width\":\"120px\",\"margin-top\":\"-120px\"}\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"q-pa-md\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_lottie_animation = _resolveComponent(\"lottie-animation\")!\n const _component_push_confirm_reminder = _resolveComponent(\"push-confirm-reminder\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n ($props.isLoading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_lottie_animation, {\n id: \"loading-animation\",\n path: \"wait-spinner.json\"\n }),\n _cache[0] || (_cache[0] = _createElementVNode(\"div\", {\n class: \"main-user-message q-mt-md\",\n id: \"user-message\"\n }, [\n _createTextVNode(\" Грузить, сподіваємось не тебе \"),\n _createElementVNode(\"img\", {\n src: _imports_0,\n style: {\"height\":\"20px\"}\n })\n ], -1)),\n _cache[1] || (_cache[1] = _createElementVNode(\"div\", { id: \"loading-screen-user-description\" }, \" Дочекайся повного завантаження \", -1))\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _renderSlot(_ctx.$slots, \"default\", {}, undefined, true)\n ])),\n ($setup.showAnimation)\n ? (_openBlock(), _createBlock(_component_push_confirm_reminder, {\n key: 2,\n ref: \"pushConfirmReminder\",\n isActive: $setup.isPushConfirmNotificationVisible\n }, null, 8, [\"isActive\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\nimport _imports_0 from '@/assets/images/text_mob.png'\nimport _imports_1 from '@/assets/images/phone_mob.png'\nimport _imports_2 from '@/assets/images/text_web.png'\nimport _imports_3 from '@/assets/images/phone_web.png'\n\n\nconst _hoisted_1 = {\n key: 0,\n class: \"push-confirm-reminder\"\n}\nconst _hoisted_2 = {\n key: 0,\n class: \"fullscreen\"\n}\nconst _hoisted_3 = {\n key: 1,\n class: \"push-animation-desktop-container\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return ($props.isActive)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (($setup.isMobile && $setup.isPortrait) || $setup.isNarrowScreen)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, _cache[0] || (_cache[0] = [\n _createElementVNode(\"div\", { class: \"fullscreen animation-mobile-background\" }, null, -1),\n _createElementVNode(\"img\", {\n class: \"absolute-center\",\n id: \"push-animation-text-mobile\",\n src: _imports_0\n }, null, -1),\n _createElementVNode(\"img\", {\n src: _imports_1,\n id: \"push-animation-image-mobile\"\n }, null, -1)\n ])))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _cache[1] || (_cache[1] = [\n _createElementVNode(\"img\", {\n id: \"push-animation-text-desktop\",\n src: _imports_2\n }, null, -1),\n _createElementVNode(\"img\", {\n id: \"push-animation-image-desktop\",\n src: _imports_3\n }, null, -1)\n ])))\n ]))\n : _createCommentVNode(\"\", true)\n}","import { computed } from '@vue/reactivity';\nimport Platform from 'quasar/src/plugins/platform/Platform.js';;\nimport { ComputedRef } from 'vue';\n\nconst MINIMAL_DESCTOP_SCREEN_WIDTH = 1350;\n\nexport default {\n name: \"PushConfirmReminder\",\n props: {\n isActive: Boolean,\n },\n setup() {\n let _paltformMock = null;\n let _windowMock = null;\n\n /* istanbul ignore next */\n const setupMock = (platformMock: any, windowMock: any) => {\n _paltformMock = platformMock;\n _windowMock = windowMock;\n }\n\n const isMobile: ComputedRef = computed(\n () => {\n let platform: any = Platform;\n\n if(_paltformMock) {\n platform = _paltformMock\n }\n return !platform.is.desktop\n }\n );\n\n const isPortrait: ComputedRef = computed(() => {\n let windowObject = window;\n\n if(_windowMock) {\n windowObject = _windowMock;\n }\n return windowObject.matchMedia(\"(orientation: portrait)\").matches === true\n }\n );\n\n const isNarrowScreen: ComputedRef = computed(\n () => document.documentElement.clientWidth < MINIMAL_DESCTOP_SCREEN_WIDTH\n )\n\n return {\n isMobile,\n isPortrait,\n isNarrowScreen,\n setupMock // for unit-testing\n }\n }\n};\n","import { render } from \"./PushConfirmReminder.vue?vue&type=template&id=2e572430&scoped=true&ts=true\"\nimport script from \"./PushConfirmReminder.vue?vue&type=script&lang=ts\"\nexport * from \"./PushConfirmReminder.vue?vue&type=script&lang=ts\"\n\nimport \"./PushConfirmReminder.vue?vue&type=style&index=0&id=2e572430&lang=scss&scoped=true\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2e572430\"]])\n\nexport default __exports__","\r\n\r\n","import { render } from \"./LottieAnimation.vue?vue&type=template&id=4524c918\"\nimport script from \"./LottieAnimation.vue?vue&type=script&lang=js\"\nexport * from \"./LottieAnimation.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport PushConfirmReminder from \"@/components/PaymentDialogSmall/child-components/PushConfirmReminder.vue\";\nimport { CheckoutScreen } from \"@/enums/CheckoutScreen\";\nimport * as Actions from \"@/store/constants/BvrPayCheckout/Actions\";\nimport * as Getters from \"@/store/constants/BvrPayCheckout/Getters\";\nimport LottieAnimation from \"lottie-vuejs/src/LottieAnimation.vue\";\nimport { computed, ComputedRef } from \"vue\";\nimport { useStore } from \"vuex\";\n\nconst PUSH_NOTIFICATION_DURATION = 5000;\n\nexport default {\n name: \"PaymentDialogSmall\",\n components: {\n PushConfirmReminder,\n LottieAnimation,\n },\n props: {\n isLoading: Boolean,\n },\n setup() {\n const store = useStore();\n\n const currentScreen = store.getters[Getters.BVR__GET_CURRENT_CHECKOUT_SCREEN];\n\n const showAnimation: ComputedRef = computed(() => {\n const currentScreen = store.getters[Getters.BVR__GET_CURRENT_CHECKOUT_SCREEN];\n return currentScreen === CheckoutScreen.PaymentConfirmation;\n });\n\n if (currentScreen === CheckoutScreen.PaymentConfirmation) {\n store.dispatch(\n Actions.BVR__SHOW_PUSH_CONFIRM_NOTIFICATION,\n PUSH_NOTIFICATION_DURATION\n );\n }\n\n const isPushConfirmNotificationVisible: ComputedRef = computed(\n () => store.getters[Getters.BVR__GET_IS_PUSH_CONFIRM_REMINDER_VISIBLE]\n );\n\n return {\n isPushConfirmNotificationVisible,\n showAnimation\n };\n },\n};\n","import { render } from \"./PaymentDialogSmall.vue?vue&type=template&id=1986ab64&scoped=true&ts=true&style=position%3A%20relative\"\nimport script from \"./PaymentDialogSmall.vue?vue&type=script&lang=ts\"\nexport * from \"./PaymentDialogSmall.vue?vue&type=script&lang=ts\"\n\nimport \"./PaymentDialogSmall.vue?vue&type=style&index=0&id=1986ab64&lang=scss&scoped=true\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1986ab64\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\nimport _imports_0 from '@/assets/images/error.png'\nimport _imports_1 from '@/assets/emoji/emoji_payment_fail.png'\n\n\nconst _hoisted_1 = { class: \"column items-center payment-authorization-dialog\" }\nconst _hoisted_2 = { class: \"payment-dialog-small-body height-auto\" }\nconst _hoisted_3 = {\n class: \"col user-data-small attention q-pt-md\",\n id: \"error-description\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n const _directive_t = _resolveDirective(\"t\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _cache[2] || (_cache[2] = _createElementVNode(\"div\", { class: \"col\" }, [\n _createElementVNode(\"img\", {\n src: _imports_0,\n class: \"small-dialog-image\",\n id: \"payment-error-image\"\n })\n ], -1)),\n _cache[3] || (_cache[3] = _createElementVNode(\"div\", {\n class: \"col main-user-message\",\n id: \"error-message-container\"\n }, [\n _createTextVNode(\" Халепка \"),\n _createElementVNode(\"img\", {\n id: \"payment-error-emoji\",\n src: _imports_1,\n style: {\"height\":\"25px\",\"margin-bottom\":\"-5px\"}\n }),\n _createElementVNode(\"br\"),\n _createTextVNode(\"Платіж не пройшов \")\n ], -1)),\n _createElementVNode(\"div\", _hoisted_3, [\n _cache[1] || (_cache[1] = _createTextVNode(\" І ось чому: \")),\n _withDirectives(_createElementVNode(\"span\", null, null, 512), [\n [_directive_t, { path: `error.${$setup.errorCode}` }]\n ])\n ])\n ]),\n _createVNode(_component_q_btn, {\n ref: \"backToStoreButton\",\n \"no-caps\": \"\",\n class: \"dialog-button\",\n label: \"До магазину\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => ($setup.handleBackToStoreClick()))\n }, null, 512)\n ]))\n}","\nimport * as Actions from \"@/store/constants/BvrPayCheckout/Actions\";\nimport * as Getters from \"@/store/constants/BvrPayCheckout/Getters\";\nimport { computed, ComputedRef } from \"vue\";\nimport { useStore } from \"vuex\";\n\nexport default {\n name: \"PaymentError\",\n setup() {\n const store = useStore();\n\n const errorCode: ComputedRef = computed(\n () => store.getters[Getters.BVR__GET_APPROVE_ERROR]\n );\n\n const handleBackToStoreClick = () => {\n store.dispatch(Actions.BVR__REDIRECT_TO_STORE);\n };\n\n return {\n handleBackToStoreClick,\n errorCode,\n };\n },\n};\n","import { render } from \"./PaymentError.vue?vue&type=template&id=902c259e&scoped=true&ts=true\"\nimport script from \"./PaymentError.vue?vue&type=script&lang=ts\"\nexport * from \"./PaymentError.vue?vue&type=script&lang=ts\"\n\nimport \"./PaymentError.vue?vue&type=style&index=0&id=902c259e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-902c259e\"]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn});\n","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\nimport _imports_0 from '@/assets/images/payment_successful.png'\nimport _imports_1 from '@/assets/emoji/emoji_payment_success.png'\n\n\nconst _hoisted_1 = { class: \"column items-center payment-authorization-dialog\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _cache[1] || (_cache[1] = _createStaticVNode(\"
Оплата пройшла!
Вона настільки успішна, що їй заздрять Маск та Джефф
\", 1)),\n _createVNode(_component_q_btn, {\n ref: \"backToStoreButton\",\n \"no-caps\": \"\",\n class: \"dialog-button\",\n label: \"До магазину\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => ($setup.handleBackToStoreClick()))\n }, null, 512)\n ]))\n}","\nimport * as Actions from \"@/store/constants/BvrPayCheckout/Actions\";\nimport { useStore } from \"vuex\";\n\nexport default {\n name: \"PaymentSuccess\",\n setup() {\n const store = useStore();\n\n store.dispatch(Actions.BVR__START_REDIRECT_TO_STORE_TIMER);\n\n const handleBackToStoreClick = () => {\n store.dispatch(Actions.BVR__REDIRECT_TO_STORE);\n };\n\n return {\n handleBackToStoreClick,\n };\n },\n};\n","import { render } from \"./PaymentSuccess.vue?vue&type=template&id=6c71e808&scoped=true&ts=true\"\nimport script from \"./PaymentSuccess.vue?vue&type=script&lang=ts\"\nexport * from \"./PaymentSuccess.vue?vue&type=script&lang=ts\"\n\nimport \"./PaymentSuccess.vue?vue&type=style&index=0&id=6c71e808&lang=scss&scoped=true\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6c71e808\"]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn});\n","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\nimport _imports_0 from '@/assets/images/payment-timeout.svg'\n\n\nconst _hoisted_1 = { class: \"column items-center payment-authorization-dialog\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _cache[1] || (_cache[1] = _createStaticVNode(\"
Упс... Спробуєш ще раз?
Час на підтвердження оплати у додатку вийшов
\", 1)),\n _createVNode(_component_q_btn, {\n ref: \"backToStoreButton\",\n \"no-caps\": \"\",\n class: \"dialog-button\",\n label: \"До магазину\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => ($setup.handleBackToStoreClick()))\n }, null, 512)\n ]))\n}","\nimport * as Actions from \"@/store/constants/BvrPayCheckout/Actions\";\nimport { useStore } from \"vuex\";\n\nexport default {\n name: \"PaymentFail\",\n setup() {\n const store = useStore();\n\n const handleBackToStoreClick = () => {\n store.dispatch(Actions.BVR__REDIRECT_TO_STORE);\n };\n\n return {\n handleBackToStoreClick,\n };\n },\n};\n","import { render } from \"./PaymentTimeoutFail.vue?vue&type=template&id=003094a6&scoped=true&ts=true\"\nimport script from \"./PaymentTimeoutFail.vue?vue&type=script&lang=ts\"\nexport * from \"./PaymentTimeoutFail.vue?vue&type=script&lang=ts\"\n\nimport \"./PaymentTimeoutFail.vue?vue&type=style&index=0&id=003094a6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-003094a6\"]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn});\n","\nimport PageContentContainer from \"@/common-components/PageContentContainer.vue\";\nimport Footer from \"@/components/Footer/Footer.vue\";\nimport Header from \"@/components/Header/Header.vue\";\nimport PaymentAttemptsEnded from \"@/components/PaymentAttemptsEnded/PaymentAttemptsEnded.vue\";\nimport PaymentCancel from \"@/components/PaymentCancel/PaymentCancel.vue\";\nimport PaymentConfirmation from \"@/components/PaymentConfirmation/PaymentConfirmation.vue\";\nimport PaymentDialogSmall from \"@/components/PaymentDialogSmall/PaymentDialogSmall.vue\";\nimport PaymentError from \"@/components/PaymentError/PaymentError.vue\";\nimport PaymentSuccess from \"@/components/PaymentSuccess/PaymentSuccess.vue\";\nimport PaymentTimeoutFail from \"@/components/PaymentTimeoutFail/PaymentTimeoutFail.vue\";\nimport { CheckoutScreen } from \"@/enums/CheckoutScreen\";\nimport router from \"@/router\";\nimport * as Actions from \"@/store/constants/BvrPayCheckout/Actions\";\nimport * as Getters from \"@/store/constants/BvrPayCheckout/Getters\";\nimport * as CommonActions from \"@/store/constants/Common/Actions\";\nimport { computed, ComputedRef, onMounted } from \"vue\";\nimport { useStore } from \"vuex\";\n\nexport default {\n name: \"BvrPayCheckout\",\n components: {\n Header,\n Footer,\n PageContentContainer,\n PaymentConfirmation,\n PaymentTimeoutFail,\n PaymentSuccess,\n PaymentDialogSmall,\n PaymentAttemptsEnded,\n PaymentError,\n PaymentCancel,\n },\n setup() {\n const store = useStore();\n const checkoutId = router.currentRoute.value.params.id;\n\n onMounted(async () => {\n store.dispatch(CommonActions.COMMON__INIT_WEB_SOCKET, checkoutId)\n .then(() => {\n store.dispatch(Actions.BVR__LOAD_CHECKOUT_DATA, checkoutId)});\n await store.dispatch(CommonActions.COMMON__LOAD_CHECKOUT_OPTIONS);\n });\n\n const isLoading: ComputedRef = computed(\n () => store.getters[Getters.BVR__GET_IS_CHECKOUT_WAITING]\n );\n\n const currentScreen: ComputedRef = computed(\n () => store.getters[Getters.BVR__GET_CURRENT_CHECKOUT_SCREEN]\n );\n\n const onBackToStoreClick = () => {\n store.dispatch(Actions.BVR__REDIRECT_TO_STORE);\n };\n\n return {\n isLoading,\n currentScreen,\n CheckoutScreen,\n onBackToStoreClick,\n };\n },\n};\n","import { render } from \"./BvrPayCheckout.vue?vue&type=template&id=57672755&scoped=true&ts=true\"\nimport script from \"./BvrPayCheckout.vue?vue&type=script&lang=ts\"\nexport * from \"./BvrPayCheckout.vue?vue&type=script&lang=ts\"\n\nimport \"./BvrPayCheckout.vue?vue&type=style&index=0&id=57672755&scoped=true&lang=scss\"\n\nimport exportComponent from \"/src/eCommerce.Checkout.BvrPay.ClientApp/ClientApp/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-57672755\"]])\n\nexport default __exports__\nimport QLayout from 'quasar/src/components/layout/QLayout.js';\nimport qInstall from \"../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QLayout});\n","module.exports = __webpack_public_path__ + \"img/payment_failed.32de12b9.png\";","'use strict';\nvar arrayWith = require('../internals/array-with');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toBigInt = require('../internals/to-big-int');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar PROPER_ORDER = !!function () {\n try {\n // eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing\n new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });\n } catch (error) {\n // some early implementations, like WebKit, does not follow the final semantic\n // https://github.com/tc39/proposal-change-array-by-copy/pull/86\n return error === 8;\n }\n}();\n\n// `%TypedArray%.prototype.with` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with\nexportTypedArrayMethod('with', { 'with': function (index, value) {\n var O = aTypedArray(this);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;\n return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);\n} }['with'], !PROPER_ORDER);\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./PageContentContainer.vue?vue&type=style&index=0&id=e23039c0&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./PaymentAttemptsEnded.vue?vue&type=style&index=0&id=b8fda582&lang=scss&scoped=true\"","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'params', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy'];\n var defaultToConfig2Keys = [\n 'baseURL', 'url', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress',\n 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath'\n ];\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys);\n\n var otherKeys = Object\n .keys(config2)\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, function otherKeysDefaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./PushConfirmReminder.vue?vue&type=style&index=0&id=2e572430&lang=scss&scoped=true\"","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","module.exports = __webpack_public_path__ + \"img/text_web.96ab404d.png\";","module.exports = __webpack_public_path__ + \"img/bonus.88b5c835.svg\";","module.exports = __webpack_public_path__ + \"img/emoji_loading_screen.79a9f4d0.png\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./LoyaltyPointsPanel.vue?vue&type=style&index=0&id=32f1cfd7&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./PushNotificationSendDelayCounter.vue?vue&type=style&index=0&id=0e2e3324&lang=scss&scoped=true\"","'use strict';\nvar arrayToReversed = require('../internals/array-to-reversed');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;\n\n// `%TypedArray%.prototype.toReversed` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed\nexportTypedArrayMethod('toReversed', function toReversed() {\n return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));\n});\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","module.exports = __webpack_public_path__ + \"img/payment_successful.98bbc043.png\";","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./PaymentConfirmationControlPanel.vue?vue&type=style&index=0&id=7e6bc044&lang=scss&scoped=true\"","module.exports = __webpack_public_path__ + \"img/payment-timeout.0c049b7d.svg\";","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./PaymentDialogSmall.vue?vue&type=style&index=0&id=1986ab64&lang=scss&scoped=true\"","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.at` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.at\nexportTypedArrayMethod('at', function at(index) {\n var O = aTypedArray(this);\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;\n return (k < 0 || k >= len) ? undefined : O[k];\n});\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\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 '',\r\n '',\r\n '',\r\n '',\r\n ].join('');\r\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n var url = URL.createObjectURL(blob);\r\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n\n var fil = createNS('filter');\n var matrix = createNS('feColorMatrix');\n fil.setAttribute('id', id);\n matrix.setAttribute('type', 'matrix');\n matrix.setAttribute('color-interpolation-filters', 'sRGB');\n matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n fil.appendChild(matrix);\n\n _svg.appendChild(fil);\n\n _svg.setAttribute('id', id + '_svg');\n\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n\n return _svg;\n }\n\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n\n var assetLoader = function () {\n return {\n loadLumaCanvas: lumaLoader.load,\n getLumaCanvas: lumaLoader.get,\n createCanvas: createCanvas\n };\n }();\n\n var registeredEffects = {};\n\n function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect(id, effect) {\n registeredEffects[id] = {\n effect: effect\n };\n }\n\n function CVMaskElement(data, element) {\n this.data = data;\n this.element = element;\n this.masksProperties = this.data.masksProperties || [];\n this.viewData = createSizedArray(this.masksProperties.length);\n var i;\n var len = this.masksProperties.length;\n var hasMasks = false;\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n\n this.hasMasks = hasMasks;\n\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\n\n var transform = this.element.finalTransform.mat;\n var ctx = this.element.canvasContext;\n var i;\n var len = this.masksProperties.length;\n var pt;\n var pts;\n var data;\n ctx.beginPath();\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0);\n ctx.lineTo(this.element.globalData.compSize.w, 0);\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n ctx.lineTo(0, this.element.globalData.compSize.h);\n ctx.lineTo(0, 0);\n }\n\n data = this.viewData[i].v;\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n ctx.moveTo(pt[0], pt[1]);\n var j;\n var jLen = data._length;\n\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n }\n\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n\n var operationsMap = {\n 1: 'source-in',\n 2: 'source-out',\n 3: 'source-in',\n 4: 'source-out'\n };\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n // If the layer is masked we will use two buffers to store each different states of the drawing\n // This solution is not ideal for several reason. But unfortunately, because of the recursive\n // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n // It might be challenging because the layer most likely is transformed in some way\n if (this.data.tt >= 1) {\n this.buffers = [];\n var canvasContext = this.globalData.canvasContext;\n var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas);\n var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas2);\n\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\n }\n\n this.canvasContext = this.globalData.canvasContext;\n this.transformCanvas = this.globalData.transformCanvas;\n this.renderableEffectsManager = new CVEffects(this);\n this.searchEffectTransforms();\n },\n createContent: function createContent() {},\n setBlendMode: function setBlendMode() {\n var globalData = this.globalData;\n\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm;\n var blendModeValue = getBlendMode(this.data.bm);\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new CVMaskElement(this.data, this);\n this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n },\n hideElement: function hideElement() {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true;\n }\n },\n showElement: function showElement() {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false;\n this._isFirstFrame = true;\n this.maskManager._isFirstFrame = true;\n }\n },\n clearCanvas: function clearCanvas(canvasContext) {\n canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n },\n prepareLayer: function prepareLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[0];\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx); // on the first buffer we store the current state of the global drawing\n\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // The next four lines are to clear the canvas\n // TODO: Check if there is a way to clear the canvas without resetting the transform\n\n this.currentTransform = this.canvasContext.getTransform();\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n }\n },\n exitLayer: function exitLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[1]; // On the second buffer we store the current state of the global drawing\n // that only contains the content of this layer\n // (if it is a composition, it also includes the nested layers)\n\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // If the mask is a Luma matte, we need to do two extra painting operations\n // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n\n if (this.data.tt >= 3 && !document._isProxy) {\n // We copy the painted mask to a buffer that has a color matrix filter applied to it\n // that applies the rgb values to the alpha channel\n var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n var lumaBufferCtx = lumaBuffer.getContext('2d');\n lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n this.clearCanvas(this.canvasContext); // we repaint the context with the mask applied to it\n\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0); // We finally draw the first buffer (that contains the content of the global drawing)\n // We use destination-over to draw the global drawing below the current layer\n\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n if (this.data.td === 1 && !forceRender) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.prepareLayer();\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n this.exitLayer();\n\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.canvasContext = null;\n this.data = null;\n this.globalData = null;\n this.maskManager.destroy();\n },\n mHelper: new Matrix()\n };\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = [];\n this.tr = [0, 0, 0, 0, 0, 0];\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: []\n };\n this.styledShapes.push(styledShape);\n styles[i].elements.push(styledShape);\n }\n }\n }\n\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = [];\n this.shapesData = data.shapes;\n this.stylesList = [];\n this.itemsData = [];\n this.prevViewData = [];\n this.shapeModifiers = [];\n this.processedElements = [];\n this.transformsManager = new ShapeTransformManager();\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n CVShapeElement.prototype.transformHelper = {\n opacity: 1,\n _opMdf: false\n };\n CVShapeElement.prototype.dashResetter = [];\n\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\n\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true\n };\n var elementData = {};\n\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n if (!elementData.c.k) {\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n elementData.h = PropertyFactory.getProp(this, data.h || {\n k: 0\n }, 0, 0.01, this);\n elementData.a = PropertyFactory.getProp(this, data.a || {\n k: 0\n }, 0, degToRads, this);\n elementData.g = new GradientProperty(this, data.g, this);\n }\n\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray;\n styleElem[\"do\"] = elementData.d.dashoffset[0];\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n }\n\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n }\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n return elementData;\n };\n\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform);\n }\n }\n };\n\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var processedPos;\n var modifier;\n var currentTransform;\n var ownTransforms = [].concat(transforms);\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n } else {\n itemsData[i].style.closed = false;\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i]);\n itemsData[i] = currentTransform;\n }\n\n ownTransforms.push(itemsData[i]);\n this.addTransformToStyleList(itemsData[i]);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i]);\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n shouldRender = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1;\n this.transformHelper._opMdf = false;\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n };\n\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity;\n groupTransform.opacity *= groupTransform.op.v;\n groupTransform._opMdf = true;\n }\n };\n\n CVShapeElement.prototype.drawLayer = function () {\n var i;\n var len = this.stylesList.length;\n var j;\n var jLen;\n var k;\n var kLen;\n var elems;\n var nodes;\n var renderer = this.globalData.renderer;\n var ctx = this.globalData.canvasContext;\n var type;\n var currentStyle;\n\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type; // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n renderer.save();\n elems = currentStyle.elements;\n\n if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n\n renderer.ctxOpacity(currentStyle.coOp);\n\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n } else {\n ctx.closePath();\n }\n }\n\n if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n\n renderer.restore();\n }\n }\n };\n\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i;\n var len = items.length - 1;\n var groupTransform;\n groupTransform = parentTransform;\n\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform;\n this.renderShapeTransform(parentTransform, groupTransform);\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i]);\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it);\n } else if (items[i].ty === 'tm') {//\n }\n }\n\n if (isMain) {\n this.drawLayer();\n }\n };\n\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes;\n var paths = shape.paths;\n var i;\n var len;\n var j;\n var jLen = paths._length;\n shapeNodes.length = 0;\n var groupTransformMat = styledShape.transforms.finalTransform;\n\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\n }\n\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n });\n shapeNodes.push({\n t: 'z'\n });\n }\n }\n }\n\n styledShape.trNodes = shapeNodes;\n }\n };\n\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i;\n var len = itemData.styledShapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n var ctx = this.globalData.canvasContext;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n }\n\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1];\n }\n\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n\n styleElem.grd = grd;\n }\n\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\n };\n\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null;\n this.globalData = null;\n this.canvasContext = null;\n this.stylesList.length = 0;\n this.itemsData.length = 0;\n };\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.yOffset = 0;\n this.fillColorAnim = false;\n this.strokeColorAnim = false;\n this.strokeWidthAnim = false;\n this.stroke = false;\n this.fill = false;\n this.justifyOffset = 0;\n this.currentRender = null;\n this.renderType = 'canvas';\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: ''\n };\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var hasFill = false;\n\n if (documentData.fc) {\n hasFill = true;\n this.values.fill = this.buildColor(documentData.fc);\n } else {\n this.values.fill = 'rgba(0,0,0,0)';\n }\n\n this.fill = hasFill;\n var hasStroke = false;\n\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n var i;\n var len;\n var letters = documentData.l;\n var matrixHelper = this.mHelper;\n this.stroke = hasStroke;\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n var charData;\n var shapeData;\n var k;\n var kLen;\n var shapes;\n var j;\n var jLen;\n var pathNodes;\n var commands;\n var pathArr;\n var singleShape = this.data.singleShape;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n matrixHelper.reset();\n\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length;\n pathNodes = shapes[j].ks.k;\n pathArr = [];\n\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n commands[commandsCounter] = pathArr;\n commandsCounter += 1;\n }\n }\n\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n\n cnt += 1;\n }\n };\n\n CVTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n this.globalData.renderer.ctxLineCap('butt'); // ctx.lineCap = 'butt';\n\n this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\n\n var i;\n var len;\n var j;\n var jLen;\n var k;\n var kLen;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var lastFill = null;\n var lastStroke = null;\n var lastStrokeW = null;\n var commands;\n var pathArr;\n var renderer = this.globalData.renderer;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxFill(); // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\n }\n\n if (renderedLetter) {\n this.globalData.renderer.restore();\n }\n }\n }\n };\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.img = globalData.imageLoader.getAsset(this.assetData);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas');\n canvas.width = this.assetData.w;\n canvas.height = this.assetData.h;\n var ctx = canvas.getContext('2d');\n var imgW = this.img.width;\n var imgH = this.img.height;\n var imgRel = imgW / imgH;\n var canvasRel = this.assetData.w / this.assetData.h;\n var widthCrop;\n var heightCrop;\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n heightCrop = imgH;\n widthCrop = heightCrop * canvasRel;\n } else {\n widthCrop = imgW;\n heightCrop = widthCrop / canvasRel;\n }\n\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n this.img = canvas;\n }\n };\n\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\n\n CVImageElement.prototype.destroy = function () {\n this.img = null;\n };\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n\n extendPrototype([BaseRenderer], CanvasRendererBase);\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return;\n }\n\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n this.contextData.reset();\n };\n\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n\n this.contextData.restore(actionFlag);\n };\n\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas');\n var containerStyle = this.animationItem.container.style;\n containerStyle.width = '100%';\n containerStyle.height = '100%';\n var origin = '0px 0px 0px';\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n containerStyle['-webkit-transform'] = origin;\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n this.animationItem.wrapper.appendChild(this.animationItem.container);\n this.canvasContext = this.animationItem.container.getContext('2d');\n\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\n }\n } else {\n this.canvasContext = this.renderConfig.context;\n }\n\n this.contextData.setContext(this.canvasContext);\n this.data = animData;\n this.layers = animData.layers;\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0\n };\n this.setupGlobalData(animData, document.body);\n this.globalData.canvasContext = this.canvasContext;\n this.globalData.renderer = this;\n this.globalData.isDashed = false;\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.globalData.transformCanvas = this.transformCanvas;\n this.elements = createSizedArray(animData.layers.length);\n this.updateContainerSize();\n };\n\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n\n if (width) {\n elementWidth = width;\n elementHeight = height;\n this.canvasContext.canvas.width = elementWidth;\n this.canvasContext.canvas.height = elementHeight;\n } else {\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n } else {\n elementWidth = this.canvasContext.canvas.width;\n elementHeight = this.canvasContext.canvas.height;\n }\n\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n\n var elementRel;\n var animationRel;\n\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n var par = this.renderConfig.preserveAspectRatio.split(' ');\n var fillType = par[1] || 'meet';\n var pos = par[0] || 'xMidYMid';\n var xPos = pos.substr(0, 4);\n var yPos = pos.substr(4);\n elementRel = elementWidth / elementHeight;\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n }\n\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.tx = 0;\n }\n\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.ty = 0;\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr;\n this.transformCanvas.sy = this.renderConfig.dpr;\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n }\n\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\n\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n return;\n }\n\n this.renderedFrame = num;\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n this.globalData.frameId += 1;\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n // console.log('NEW: ',num);\n\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n } else {\n this.save();\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n var element = this.createItem(this.layers[pos], this, this.globalData);\n elements[pos] = element;\n element.initExpressions();\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\n };\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\n\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block';\n };\n\n function CanvasContext() {\n this.opacity = -1;\n this.transform = createTypedArray('float32', 16);\n this.fillStyle = '';\n this.strokeStyle = '';\n this.lineWidth = '';\n this.lineCap = '';\n this.lineJoin = '';\n this.miterLimit = '';\n this.id = Math.random();\n }\n\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\n\n this._length = len;\n this.nativeContext = null;\n this.transformMat = new Matrix();\n this.currentOpacity = 1; //\n\n this.currentFillStyle = '';\n this.appliedFillStyle = ''; //\n\n this.currentStrokeStyle = '';\n this.appliedStrokeStyle = ''; //\n\n this.currentLineWidth = '';\n this.appliedLineWidth = ''; //\n\n this.currentLineCap = '';\n this.appliedLineCap = ''; //\n\n this.currentLineJoin = '';\n this.appliedLineJoin = ''; //\n\n this.appliedMiterLimit = '';\n this.currentMiterLimit = '';\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\n\n CVContextData.prototype.restore = function (forceRestore) {\n this.cArrPos -= 1;\n var currentContext = this.stack[this.cArrPos];\n var transform = currentContext.transform;\n var i;\n var arr = this.cTr.props;\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\n\n if (forceRestore) {\n this.nativeContext.restore();\n var prevStack = this.stack[this.cArrPos + 1];\n this.appliedFillStyle = prevStack.fillStyle;\n this.appliedStrokeStyle = prevStack.strokeStyle;\n this.appliedLineWidth = prevStack.lineWidth;\n this.appliedLineCap = prevStack.lineCap;\n this.appliedLineJoin = prevStack.lineJoin;\n this.appliedMiterLimit = prevStack.miterLimit;\n }\n\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\n\n this.currentFillStyle = currentContext.fillStyle;\n this.currentStrokeStyle = currentContext.strokeStyle;\n this.currentLineWidth = currentContext.lineWidth;\n this.currentLineCap = currentContext.lineCap;\n this.currentLineJoin = currentContext.lineJoin;\n this.currentMiterLimit = currentContext.miterLimit;\n };\n\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n\n var props = this.cTr.props;\n\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n\n var currentStack = this.stack[this.cArrPos];\n var i;\n\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\n\n this.cArrPos += 1;\n var newStack = this.stack[this.cArrPos];\n newStack.opacity = currentStack.opacity;\n newStack.fillStyle = currentStack.fillStyle;\n newStack.strokeStyle = currentStack.strokeStyle;\n newStack.lineWidth = currentStack.lineWidth;\n newStack.lineCap = currentStack.lineCap;\n newStack.lineJoin = currentStack.lineJoin;\n newStack.miterLimit = currentStack.miterLimit;\n };\n\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\n\n CVContextData.prototype.fillStyle = function (value) {\n if (this.stack[this.cArrPos].fillStyle !== value) {\n this.currentFillStyle = value;\n this.stack[this.cArrPos].fillStyle = value;\n }\n };\n\n CVContextData.prototype.strokeStyle = function (value) {\n if (this.stack[this.cArrPos].strokeStyle !== value) {\n this.currentStrokeStyle = value;\n this.stack[this.cArrPos].strokeStyle = value;\n }\n };\n\n CVContextData.prototype.lineWidth = function (value) {\n if (this.stack[this.cArrPos].lineWidth !== value) {\n this.currentLineWidth = value;\n this.stack[this.cArrPos].lineWidth = value;\n }\n };\n\n CVContextData.prototype.lineCap = function (value) {\n if (this.stack[this.cArrPos].lineCap !== value) {\n this.currentLineCap = value;\n this.stack[this.cArrPos].lineCap = value;\n }\n };\n\n CVContextData.prototype.lineJoin = function (value) {\n if (this.stack[this.cArrPos].lineJoin !== value) {\n this.currentLineJoin = value;\n this.stack[this.cArrPos].lineJoin = value;\n }\n };\n\n CVContextData.prototype.miterLimit = function (value) {\n if (this.stack[this.cArrPos].miterLimit !== value) {\n this.currentMiterLimit = value;\n this.stack[this.cArrPos].miterLimit = value;\n }\n };\n\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\n };\n\n CVContextData.prototype.fill = function (rule) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fill(rule);\n };\n\n CVContextData.prototype.fillRect = function (x, y, w, h) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fillRect(x, y, w, h);\n };\n\n CVContextData.prototype.stroke = function () {\n if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n this.appliedStrokeStyle = this.currentStrokeStyle;\n this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n }\n\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\n\n this.nativeContext.stroke();\n };\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false;\n this.layers = data.layers;\n this.pendingElements = [];\n this.elements = createSizedArray(this.layers.length);\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.data.w, 0);\n ctx.lineTo(this.data.w, this.data.h);\n ctx.lineTo(0, this.data.h);\n ctx.lineTo(0, 0);\n ctx.clip();\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.layers = null;\n this.elements = null;\n };\n\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || '',\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n\n if (this.renderConfig.clearCanvas) {\n this.ctxTransform = this.contextData.transform.bind(this.contextData);\n this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n this.ctxFill = this.contextData.fill.bind(this.contextData);\n this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n this.save = this.contextData.save.bind(this.contextData);\n }\n }\n\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n\n if (this.data.hasMask) {\n this.svgElement = createNS('svg');\n this.layerElement = createNS('g');\n this.maskedElement = this.layerElement;\n this.svgElement.appendChild(this.layerElement);\n this.baseElement.appendChild(this.svgElement);\n } else {\n this.layerElement = this.baseElement;\n }\n\n styleDiv(this.baseElement);\n },\n createContainerElements: function createContainerElements() {\n this.renderableEffectsManager = new CVEffects(this);\n this.transformedElement = this.baseElement;\n this.maskedElement = this.layerElement;\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\n\n if (this.finalTransform._opMdf) {\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n\n if (this.matteElement) {\n this.matteElement = null;\n }\n\n if (this.maskManager) {\n this.maskManager.destroy();\n this.maskManager = null;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n },\n addEffects: function addEffects() {},\n setMatte: function setMatte() {}\n };\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n function HSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n HSolidElement.prototype.createContent = function () {\n var rect;\n\n if (this.data.hasMask) {\n rect = createNS('rect');\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.svgElement.setAttribute('width', this.data.sw);\n this.svgElement.setAttribute('height', this.data.sh);\n } else {\n rect = createTag('div');\n rect.style.width = this.data.sw + 'px';\n rect.style.height = this.data.sh + 'px';\n rect.style.backgroundColor = this.data.sc;\n }\n\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n\n if (this.data.hasMask) {\n this.layerElement.appendChild(this.shapesContainer);\n cont = this.svgElement;\n } else {\n cont = createNS('svg');\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n cont.setAttribute('width', size.w);\n cont.setAttribute('height', size.h);\n cont.appendChild(this.shapesContainer);\n this.layerElement.appendChild(cont);\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n\n return point;\n };\n\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n var shape = item.sh.v;\n var transformers = item.transformers;\n var i;\n var len = shape._length;\n var vPoint;\n var oPoint;\n var nextIPoint;\n var nextVPoint;\n\n if (len <= 1) {\n return;\n }\n\n for (i = 0; i < len - 1; i += 1) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n\n if (shape.c) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n };\n\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n var bounds = this.shapeBoundingBox;\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n };\n\n HShapeElement.prototype.shapeBoundingBox = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n HShapeElement.prototype.tempBoundingBox = {\n x: 0,\n xMax: 0,\n y: 0,\n yMax: 0,\n width: 0,\n height: 0\n };\n\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n // eslint-disable-line no-plusplus\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n b |= 0; // eslint-disable-line no-bitwise\n\n a |= 0; // eslint-disable-line no-bitwise\n\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {//\n } else if (a === 0) {\n t = -c / b;\n\n if (t > 0 && t < 1) {\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n }\n } else {\n b2ac = b * b - 4 * c * a;\n\n if (b2ac >= 0) {\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n }\n }\n }\n\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n };\n\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n };\n\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n if (itemsData[i] && itemsData[i].sh) {\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n } else if (itemsData[i] && itemsData[i].it) {\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\n } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n }\n }\n };\n\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n\n if (kfw > width) {\n width = kfw;\n }\n }\n\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\n };\n\n HShapeElement.prototype.currentBoxContains = function (box) {\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n };\n\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n var tempBoundingBox = this.tempBoundingBox;\n var max = 999999;\n tempBoundingBox.x = max;\n tempBoundingBox.xMax = -max;\n tempBoundingBox.y = max;\n tempBoundingBox.yMax = -max;\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n\n var changed = false;\n\n if (this.currentBBox.w !== tempBoundingBox.width) {\n this.currentBBox.w = tempBoundingBox.width;\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\n changed = true;\n }\n\n if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\n }\n\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n this.currentBBox.w = tempBoundingBox.width;\n this.currentBBox.h = tempBoundingBox.height;\n this.currentBBox.x = tempBoundingBox.x;\n this.currentBBox.y = tempBoundingBox.y;\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n var shapeStyle = this.shapeCont.style;\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n shapeStyle.transform = shapeTransform;\n shapeStyle.webkitTransform = shapeTransform;\n }\n }\n };\n\n function HTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.textPaths = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n this.renderType = 'svg';\n this.isMasked = false;\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n\n if (this.isMasked) {\n this.renderType = 'svg';\n this.compW = this.comp.data.w;\n this.compH = this.comp.data.h;\n this.svgElement.setAttribute('width', this.compW);\n this.svgElement.setAttribute('height', this.compH);\n var g = createNS('g');\n this.maskedElement.appendChild(g);\n this.innerElem = g;\n } else {\n this.renderType = 'html';\n this.innerElem = this.layerElement;\n }\n\n this.checkParenting();\n };\n\n HTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var innerElemStyle = this.innerElem.style;\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n innerElemStyle.fill = textColor;\n innerElemStyle.color = textColor;\n\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n if (fontData.fClass) {\n this.innerElem.className = fontData.fClass;\n } else {\n innerElemStyle.fontFamily = fontData.fFamily;\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n innerElemStyle.fontStyle = fStyle;\n innerElemStyle.fontWeight = fWeight;\n }\n }\n\n var i;\n var len;\n var letters = documentData.l;\n len = letters.length;\n var tSpan;\n var tParent;\n var tCont;\n var matrixHelper = this.mHelper;\n var shapes;\n var shapeStr = '';\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.globalData.fontManager.chars) {\n if (!this.textPaths[cnt]) {\n tSpan = createNS('path');\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n tSpan.setAttribute('stroke-miterlimit', '4');\n } else {\n tSpan = this.textPaths[cnt];\n }\n\n if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tCont = tParent.children[0];\n } else {\n tParent = createTag('div');\n tParent.style.lineHeight = 0;\n tCont = createNS('svg');\n tCont.appendChild(tSpan);\n styleDiv(tParent);\n }\n }\n } else if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tSpan = this.textPaths[cnt];\n } else {\n tParent = createTag('span');\n styleDiv(tParent);\n tSpan = createTag('span');\n styleDiv(tSpan);\n tParent.appendChild(tSpan);\n }\n } else {\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n } // tSpan.setAttribute('visibility', 'hidden');\n\n\n if (this.globalData.fontManager.chars) {\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var shapeData;\n\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n\n matrixHelper.reset();\n\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n shapes = shapeData.shapes[0].it;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n shapeStr = this.createPathShape(matrixHelper, shapes);\n tSpan.setAttribute('d', shapeStr);\n }\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n\n if (shapeData && shapeData.shapes) {\n // document.body.appendChild is needed to get exact measure of shape\n document.body.appendChild(tCont);\n var boundingBox = tCont.getBBox();\n tCont.setAttribute('width', boundingBox.width + 2);\n tCont.setAttribute('height', boundingBox.height + 2);\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n var tContStyle = tCont.style;\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n tContStyle.transform = tContTranslation;\n tContStyle.webkitTransform = tContTranslation;\n letters[i].yOffset = boundingBox.y - 1;\n } else {\n tCont.setAttribute('width', 1);\n tCont.setAttribute('height', 1);\n }\n\n tParent.appendChild(tCont);\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } else {\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent); //\n\n var tStyle = tSpan.style;\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n tStyle.transform = tSpanTranslation;\n tStyle.webkitTransform = tSpanTranslation;\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } //\n\n\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\n\n if (this.isMasked && this.finalTransform._matMdf) {\n // Todo Benchmark if using this is better than getBBox\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n svgStyle = this.svgElement.style;\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n svgStyle.transform = translation;\n svgStyle.webkitTransform = translation;\n }\n }\n\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\n\n var i;\n var len;\n var count = 0;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var textPath;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n count += 1;\n } else {\n textSpan = this.textSpans[i];\n textPath = this.textPaths[i];\n renderedLetter = renderedLetters[count];\n count += 1;\n\n if (renderedLetter._mdf.m) {\n if (!this.isMasked) {\n textSpan.style.webkitTransform = renderedLetter.m;\n textSpan.style.transform = renderedLetter.m;\n } else {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n textSpan.style.opacity = renderedLetter.o;\n\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n\n var margin = 1;\n\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n this.currentBBox.w = boundingBox.width + margin * 2;\n this.currentBBox.h = boundingBox.height + margin * 2;\n this.currentBBox.x = boundingBox.x - margin;\n this.currentBBox.y = boundingBox.y - margin;\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n svgStyle = this.svgElement.style;\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n svgStyle.transform = svgTransform;\n svgStyle.webkitTransform = svgTransform;\n }\n }\n };\n\n function HCameraElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initHierarchy();\n var getProp = PropertyFactory.getProp;\n this.pe = getProp(this, data.pe, 0, 0, this);\n\n if (data.ks.p.s) {\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n } else {\n this.p = getProp(this, data.ks.p, 1, 0, this);\n }\n\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\n\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\n var i;\n var len = data.ks.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.ks.or.k[i].to = null;\n data.ks.or.k[i].ti = null;\n }\n }\n\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\n this.or.sh = true;\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n this.mat = new Matrix();\n this._prevMat = new Matrix();\n this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n this.finalTransform = {\n mProp: this\n };\n }\n\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n HCameraElement.prototype.setup = function () {\n var i;\n var len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n perspectiveStyle = comp.perspectiveElem.style;\n containerStyle = comp.container.style;\n var perspective = this.pe.v + 'px';\n var origin = '0px 0px 0px';\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n perspectiveStyle.perspective = perspective;\n perspectiveStyle.webkitPerspective = perspective;\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n perspectiveStyle.transform = matrix;\n perspectiveStyle.webkitTransform = matrix;\n }\n }\n };\n\n HCameraElement.prototype.createElements = function () {};\n\n HCameraElement.prototype.hide = function () {};\n\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n\n if (this.hierarchy) {\n len = this.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\n }\n\n if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n this.mat.reset();\n\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n\n for (i = len; i >= 0; i -= 1) {\n var mTransf = this.hierarchy[i].finalTransform.mProp;\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n }\n }\n\n if (this.p) {\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n } else {\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n }\n\n if (this.a) {\n var diffVector;\n\n if (this.p) {\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n } else {\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n }\n\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n }\n\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n this.mat.translate(0, 0, this.pe.v);\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n if (hasMatrixChanged) {\n var matValue = this.mat.toCSS();\n containerStyle = comp.container.style;\n containerStyle.transform = matValue;\n containerStyle.webkitTransform = matValue;\n }\n\n if (this.pe._mdf) {\n perspectiveStyle = comp.perspectiveElem.style;\n perspectiveStyle.perspective = this.pe.v + 'px';\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n }\n }\n }\n\n this.mat.clone(this._prevMat);\n }\n }\n\n this._isFirstFrame = false;\n };\n\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n HCameraElement.prototype.destroy = function () {};\n\n HCameraElement.prototype.getBaseElement = function () {\n return null;\n };\n\n function HImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n\n if (this.data.hasMask) {\n this.imageElem = createNS('image');\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.imageElem);\n this.baseElement.setAttribute('width', this.assetData.w);\n this.baseElement.setAttribute('height', this.assetData.h);\n } else {\n this.layerElement.appendChild(img);\n }\n\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n\n if (this.data.ln) {\n this.baseElement.setAttribute('id', this.data.ln);\n }\n };\n\n function HybridRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n\n if (!newDOMElement) {\n return;\n }\n\n var layer = this.layers[pos];\n\n if (!layer.ddd || !this.supports3d) {\n if (this.threeDElements) {\n this.addTo3dContainer(newDOMElement, pos);\n } else {\n var i = 0;\n var nextDOMElement;\n var nextLayer;\n var tmpDOMElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n nextLayer = this.elements[i];\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n nextDOMElement = tmpDOMElement || nextDOMElement;\n }\n\n i += 1;\n }\n\n if (nextDOMElement) {\n if (!layer.ddd || !this.supports3d) {\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n }\n } else if (!layer.ddd || !this.supports3d) {\n this.layerElement.appendChild(newDOMElement);\n }\n }\n } else {\n this.addTo3dContainer(newDOMElement, pos);\n }\n };\n\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n\n return new HShapeElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n\n return new HTextElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n\n return new HImageElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n\n return new HSolidElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n\n i += 1;\n }\n\n return null;\n };\n\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n var perspectiveElem = createTag('div');\n var style;\n var containerStyle;\n styleDiv(perspectiveElem);\n var container = createTag('div');\n styleDiv(container);\n\n if (type === '3d') {\n style = perspectiveElem.style;\n style.width = this.globalData.compSize.w + 'px';\n style.height = this.globalData.compSize.h + 'px';\n var center = '50% 50%';\n style.webkitTransformOrigin = center;\n style.mozTransformOrigin = center;\n style.transformOrigin = center;\n containerStyle = container.style;\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n containerStyle.transform = matrix;\n containerStyle.webkitTransform = matrix;\n }\n\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n var threeDContainerData = {\n container: container,\n perspectiveElem: perspectiveElem,\n startPos: pos,\n endPos: pos,\n type: type\n };\n this.threeDElements.push(threeDContainerData);\n return threeDContainerData;\n };\n\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n if (currentContainer !== '3d') {\n currentContainer = '3d';\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n\n len = this.threeDElements.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n\n break;\n }\n\n i += 1;\n }\n };\n\n HybridRendererBase.prototype.configAnimation = function (animData) {\n var resizerElem = createTag('div');\n var wrapper = this.animationItem.wrapper;\n var style = resizerElem.style;\n style.width = animData.w + 'px';\n style.height = animData.h + 'px';\n this.resizerElem = resizerElem;\n styleDiv(resizerElem);\n style.transformStyle = 'flat';\n style.mozTransformStyle = 'flat';\n style.webkitTransformStyle = 'flat';\n\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\n\n wrapper.appendChild(resizerElem);\n style.overflow = 'hidden';\n var svg = createNS('svg');\n svg.setAttribute('width', '1');\n svg.setAttribute('height', '1');\n styleDiv(svg);\n this.resizerElem.appendChild(svg);\n var defs = createNS('defs');\n svg.appendChild(defs);\n this.data = animData; // Mask animation\n\n this.setupGlobalData(animData, svg);\n this.globalData.defs = defs;\n this.layers = animData.layers;\n this.layerElement = this.resizerElem;\n this.build3dContainers();\n this.updateContainerSize();\n };\n\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n HybridRendererBase.prototype.updateContainerSize = function () {\n var elementWidth = this.animationItem.wrapper.offsetWidth;\n var elementHeight = this.animationItem.wrapper.offsetHeight;\n var elementRel = elementWidth / elementHeight;\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n var sx;\n var sy;\n var tx;\n var ty;\n\n if (animationRel > elementRel) {\n sx = elementWidth / this.globalData.compSize.w;\n sy = elementWidth / this.globalData.compSize.w;\n tx = 0;\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n } else {\n sx = elementHeight / this.globalData.compSize.h;\n sy = elementHeight / this.globalData.compSize.h;\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n ty = 0;\n }\n\n var style = this.resizerElem.style;\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n style.transform = style.webkitTransform;\n };\n\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n\n if (this.camera) {\n this.camera.setup();\n } else {\n var cWidth = this.globalData.compSize.w;\n var cHeight = this.globalData.compSize.h;\n var i;\n var len = this.threeDElements.length;\n\n for (i = 0; i < len; i += 1) {\n var style = this.threeDElements[i].perspectiveElem.style;\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n style.perspective = style.webkitPerspective;\n }\n }\n };\n\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n function HCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = !data.hasMask;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n if (this.data.hasMask) {\n this.svgElement.setAttribute('width', this.data.w);\n this.svgElement.setAttribute('height', this.data.h);\n this.transformedElement = this.baseElement;\n } else {\n this.transformedElement = this.layerElement;\n }\n };\n\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n function HybridRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n },\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([HybridRendererBase], HybridRenderer);\n\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n var CompExpressionInterface = function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0;\n var len = comp.layers.length;\n\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n\n i += 1;\n }\n\n return null; // return {active:false};\n }\n\n Object.defineProperty(_thisLayerFunction, '_name', {\n value: comp.data.nm\n });\n _thisLayerFunction.layer = _thisLayerFunction;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n _thisLayerFunction.displayStartTime = 0;\n _thisLayerFunction.numLayers = comp.layers.length;\n return _thisLayerFunction;\n };\n }();\n\n function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\n };\n } // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n } // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n\n math['seed' + rngname] = seedrandom; //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\n\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n } // The \"g\" method returns the next (count) outputs as one number.\n\n\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n\n me.i = i;\n me.j = j;\n return r; // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n } //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\n\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n } //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n } //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n } //\n // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n } //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n var _lottieGlobal = {};\n initialize$2(BMMath);\n\n function resetFrame() {\n _lottieGlobal = {};\n }\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\n\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\n\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\n g = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [r, g, b, val[3]];\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\n\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n\n return path;\n }\n\n function initiateExpression(elem, data, property) {\n // Bail out if we don't want expressions\n function noOp(_value) {\n return _value;\n }\n\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n return executeExpression;\n }\n\n ob.initiateExpression = initiateExpression;\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n ob.resetFrame = resetFrame;\n return ob;\n }();\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n ob.resetFrame = ExpressionManager.resetFrame;\n\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\n\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\n }\n\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n\n default:\n return interfaceFunction.transform;\n }\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n }); // interfaceFunction.content = interfaceFunction;\n\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\n\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _sourceText;\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\n if (!_sourceText || stringValue !== _sourceText.value) {\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\n\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n var interfaces = {\n layer: LayerExpressionInterface,\n effects: EffectsExpressionInterface,\n comp: CompExpressionInterface,\n shape: ShapeExpressionInterface,\n text: TextExpressionInterface,\n footage: FootageInterface\n };\n\n function getInterface(type) {\n return interfaces[type] || null;\n }\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n\n return this._cachingAtTime.value;\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\n\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\n\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\n\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n\n i += 1;\n }\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n\n i += 1;\n }\n\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n if (magnitude === 0) {\n return [0, 0];\n }\n\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\n }\n\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n\n return currentValue;\n };\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n\n return feMerge;\n }\n };\n\n var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n\n function SVGTintFilter(filter, filterManager, elem, id, source) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n this.linearFilter = feColorMatrix;\n feColorMatrix.setAttribute('result', id + '_tint_1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id);\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(fil, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n filter.appendChild(feComponentTransfer);\n }\n\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n } // Green\n\n\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n } // Blue\n\n\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n } // Alpha\n\n\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\n\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n\n while (cnt <= 256) {\n perc = cnt / 256;\n\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n var filterSize = filterManager.data.fs || globalFilterSize;\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge); //\n }\n\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n }\n };\n\n var _svgMatteSymbols = [];\n\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n\n _svgMatteSymbols.push(mask);\n\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n\n elem.setMatte(mask.layerId);\n };\n\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\n\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('result', id);\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n\n TransformEffect.prototype.init = function (effectsManager) {\n this.effectsManager = effectsManager;\n this.type = effectTypes.TRANSFORM_EFFECT;\n this.matrix = new Matrix();\n this.opacity = -1;\n this._mdf = false;\n this._opMdf = false;\n };\n\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n\n if (forceFrame || this.effectsManager._mdf) {\n var effectElements = this.effectsManager.effectElements;\n var anchor = effectElements[0].p.v;\n var position = effectElements[1].p.v;\n var isUniformScale = effectElements[2].p.v === 1;\n var scaleHeight = effectElements[3].p.v;\n var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n var skew = effectElements[5].p.v;\n var skewAxis = effectElements[6].p.v;\n var rotation = effectElements[7].p.v;\n this.matrix.reset();\n this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n this.matrix.rotate(-rotation * degToRads);\n this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n this.matrix.translate(position[0], position[1], 0);\n this._mdf = true;\n\n if (this.opacity !== effectElements[8].p.v) {\n this.opacity = effectElements[8].p.v;\n this._opMdf = true;\n }\n }\n };\n\n function SVGTransformEffect(_, filterManager) {\n this.init(filterManager);\n }\n\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n\n extendPrototype([TransformEffect], CVTransformEffect);\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize(); // Registering svg effects\n\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./PaymentError.vue?vue&type=style&index=0&id=902c259e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./PaymentInfoPanel.vue?vue&type=style&index=0&id=f51c7c68&lang=scss&scoped=true\"","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $findLast = require('../internals/array-iteration-from-last').findLast;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findLast` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findlast\nexportTypedArrayMethod('findLast', function findLast(predicate /* , thisArg */) {\n return $findLast(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n","module.exports = __webpack_public_path__ + \"img/additional_bonus_desktop.1d871e3e.svg\";","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ findLast, findLastIndex }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_FIND_LAST_INDEX = TYPE === 1;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var index = lengthOfArrayLike(self);\n var boundFunction = bind(callbackfn, that);\n var value, result;\n while (index-- > 0) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (result) switch (TYPE) {\n case 0: return value; // findLast\n case 1: return index; // findLastIndex\n }\n }\n return IS_FIND_LAST_INDEX ? -1 : undefined;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.findLast` method\n // https://github.com/tc39/proposal-array-find-from-last\n findLast: createMethod(0),\n // `Array.prototype.findLastIndex` method\n // https://github.com/tc39/proposal-array-find-from-last\n findLastIndex: createMethod(1)\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 -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.some` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.some\n$({ target: 'Iterator', proto: true, real: true }, {\n some: function some(predicate) {\n anObject(this);\n aCallable(predicate);\n var record = getIteratorDirect(this);\n var counter = 0;\n return iterate(record, function (value, stop) {\n if (predicate(value, counter++)) return stop();\n }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n }\n});\n","module.exports = __webpack_public_path__ + \"img/edit.15209e21.svg\";","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./PaymentAvailableAttemptsView.vue?vue&type=style&index=0&id=38b3e267&lang=scss&scoped=true\"","'use strict';\nvar classof = require('../internals/classof');\n\nmodule.exports = function (it) {\n var klass = classof(it);\n return klass === 'BigInt64Array' || klass === 'BigUint64Array';\n};\n","module.exports = __webpack_public_path__ + \"img/emoji_payment_fail.39c18b55.png\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./PaymentErrorView.vue?vue&type=style&index=0&id=490d0aa2&lang=scss&scoped=true\"","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","module.exports = __webpack_public_path__ + \"img/additional_bonus_mobile.6d690562.svg\";","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./PaymentConfirmation.vue?vue&type=style&index=0&id=b8386f64&lang=scss&scoped=true\"","module.exports = __webpack_public_path__ + \"img/emoji_payment_success.8b15e2b6.png\";","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with\nmodule.exports = function (O, C, index, value) {\n var len = lengthOfArrayLike(O);\n var relativeIndex = toIntegerOrInfinity(index);\n var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;\n if (actualIndex >= len || actualIndex < 0) throw new $RangeError('Incorrect index');\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = k === actualIndex ? value : O[k];\n return A;\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar $TypeError = TypeError;\n\nvar REDUCE_EMPTY = 'Reduce of empty array with no initial value';\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(O);\n aCallable(callbackfn);\n if (length === 0 && argumentsLength < 2) throw new $TypeError(REDUCE_EMPTY);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw new $TypeError(REDUCE_EMPTY);\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.every` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.every\n$({ target: 'Iterator', proto: true, real: true }, {\n every: function every(predicate) {\n anObject(this);\n aCallable(predicate);\n var record = getIteratorDirect(this);\n var counter = 0;\n return !iterate(record, function (value, stop) {\n if (!predicate(value, counter++)) return stop();\n }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n }\n});\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./AdditionalBonusAdView.vue?vue&type=style&index=0&id=bd2e5dc8&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./PaymentConfirmationDialogHeader.vue?vue&type=style&index=0&id=8fa7015e&lang=scss&scoped=true\"","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed\n// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed\nmodule.exports = function (O, C) {\n var len = lengthOfArrayLike(O);\n var A = new C(len);\n var k = 0;\n for (; k < len; k++) A[k] = O[len - k - 1];\n return A;\n};\n","'use strict';\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nmodule.exports = function (Constructor, list, $length) {\n var index = 0;\n var length = arguments.length > 2 ? $length : lengthOfArrayLike(list);\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./PhoneNumberPanel.vue?vue&type=style&index=0&id=36f3965a&lang=scss&scoped=true\"","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/vue-cli-plugin-quasar/lib/loader.scss.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-1!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./BvrPayCheckout.vue?vue&type=style&index=0&id=57672755&scoped=true&lang=scss\"","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = globalThis.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = globalThis.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = globalThis.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(globalThis.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw new TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw new TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = globalThis[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = globalThis[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = globalThis[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw new TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (globalThis[NAME]) setPrototypeOf(globalThis[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (globalThis[NAME]) setPrototypeOf(globalThis[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineBuiltInAccessor(TypedArrayPrototype, TO_STRING_TAG, {\n configurable: true,\n get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n }\n });\n for (NAME in TypedArrayConstructorsList) if (globalThis[NAME]) {\n createNonEnumerableProperty(globalThis[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n var prim = toPrimitive(argument, 'number');\n if (typeof prim == 'number') throw new $TypeError(\"Can't convert number to bigint\");\n // eslint-disable-next-line es/no-bigint -- safe\n return BigInt(prim);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.find` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.find\n$({ target: 'Iterator', proto: true, real: true }, {\n find: function find(predicate) {\n anObject(this);\n aCallable(predicate);\n var record = getIteratorDirect(this);\n var counter = 0;\n return iterate(record, function (value, stop) {\n if (predicate(value, counter++)) return stop(value);\n }, { IS_RECORD: true, INTERRUPTED: true }).result;\n }\n});\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw new $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","module.exports = __webpack_public_path__ + \"img/error.1512f5a4.png\";","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","module.exports = __webpack_public_path__ + \"img/text_mob.3355bb40.png\";"],"sourceRoot":""}