@sula-tech/webcomponents 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{index-Bbryl0vg.js → index-LR6yFDX7.js} +16 -2
- package/dist/cjs/index-LR6yFDX7.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{sula-avatar_18.cjs.entry.js → sula-avatar_19.cjs.entry.js} +368 -45
- package/dist/cjs/sula-avatar_19.cjs.entry.js.map +1 -0
- package/dist/cjs/webcomponents.cjs.js +2 -2
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/sula-button/sula-button.css +1 -1
- package/dist/collection/components/sula-chip/sula-chip.css +1 -1
- package/dist/collection/components/sula-dropdown/sula-dropdown.css +1 -1
- package/dist/collection/components/sula-dropdown/sula-dropdown.js +74 -9
- package/dist/collection/components/sula-dropdown/sula-dropdown.js.map +1 -1
- package/dist/collection/components/sula-dropdown/sula-dropdown.stories.js +53 -0
- package/dist/collection/components/sula-dropdown/sula-dropdown.stories.js.map +1 -1
- package/dist/collection/components/sula-icon/sula-icon.css +1 -1
- package/dist/collection/components/sula-icon/sula-icon.js +1 -1
- package/dist/collection/components/sula-loader/sula-loader.css +1 -1
- package/dist/collection/components/sula-loader/sula-loader.js +1 -1
- package/dist/collection/components/sula-menu-select-list/sula-menu-select-list.css +1 -1
- package/dist/collection/components/sula-menu-select-list/sula-menu-select-list.js +33 -2
- package/dist/collection/components/sula-menu-select-list/sula-menu-select-list.js.map +1 -1
- package/dist/collection/components/sula-modal/model/sula-modal.model.js +16 -0
- package/dist/collection/components/sula-modal/model/sula-modal.model.js.map +1 -0
- package/dist/collection/components/sula-modal/sula-modal.css +1 -0
- package/dist/collection/components/sula-modal/sula-modal.js +558 -0
- package/dist/collection/components/sula-modal/sula-modal.js.map +1 -0
- package/dist/collection/components/sula-modal/sula-modal.stories.js +193 -0
- package/dist/collection/components/sula-modal/sula-modal.stories.js.map +1 -0
- package/dist/collection/components/sula-progress-bar/sula-progress-bar.js +2 -2
- package/dist/collection/components/sula-radio-button/sula-radio-button.js +2 -2
- package/dist/collection/components/sula-search-bar/sula-search-bar.js +2 -2
- package/dist/collection/components/sula-switch/sula-switch.js +4 -4
- package/dist/collection/components/sula-tag/sula-tag.js +3 -3
- package/dist/collection/components/sula-textarea/sula-textarea.js +6 -6
- package/dist/collection/components/sula-textfield/sula-textfield.js +2 -2
- package/dist/collection/components/sula-tiles/sula-tiles.js +1 -1
- package/dist/collection/components/sula-timeline-list/sula-timeline-list.js +1 -1
- package/dist/components/index.js +19 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/p-BhxK9El6.js +231 -0
- package/dist/components/p-BhxK9El6.js.map +1 -0
- package/dist/components/{p-DrUsgtsv.js → p-CyIObO0v.js} +4 -4
- package/dist/components/{p-DrUsgtsv.js.map → p-CyIObO0v.js.map} +1 -1
- package/dist/components/{p-BNtk_d_S.js → p-DvWN7hVP.js} +14 -6
- package/dist/components/p-DvWN7hVP.js.map +1 -0
- package/dist/components/{p-BrY8WoEl.js → p-ff6chV3i.js} +4 -4
- package/dist/components/{p-BrY8WoEl.js.map → p-ff6chV3i.js.map} +1 -1
- package/dist/components/sula-avatar.js +1 -1
- package/dist/components/sula-badge.js +1 -1
- package/dist/components/sula-button.js +1 -226
- package/dist/components/sula-button.js.map +1 -1
- package/dist/components/sula-checkbox.js +1 -1
- package/dist/components/sula-chip.js +3 -3
- package/dist/components/sula-chip.js.map +1 -1
- package/dist/components/sula-dropdown.js +60 -14
- package/dist/components/sula-dropdown.js.map +1 -1
- package/dist/components/sula-icon.js +1 -1
- package/dist/components/sula-loader.js +1 -1
- package/dist/components/sula-menu-select-list.js +1 -1
- package/dist/components/sula-modal.d.ts +11 -0
- package/dist/components/sula-modal.js +332 -0
- package/dist/components/sula-modal.js.map +1 -0
- package/dist/components/sula-progress-bar.js +3 -3
- package/dist/components/sula-radio-button.js +2 -2
- package/dist/components/sula-search-bar.js +3 -3
- package/dist/components/sula-switch.js +4 -4
- package/dist/components/sula-tag.js +4 -4
- package/dist/components/sula-textarea.js +6 -6
- package/dist/components/sula-textfield.js +3 -3
- package/dist/components/sula-tiles.js +2 -2
- package/dist/components/sula-timeline-list.js +2 -2
- package/dist/esm/{index-or7qTZgT.js → index-CrFclBiX.js} +16 -2
- package/dist/esm/index-CrFclBiX.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{sula-avatar_18.entry.js → sula-avatar_19.entry.js} +368 -46
- package/dist/esm/sula-avatar_19.entry.js.map +1 -0
- package/dist/esm/webcomponents.js +3 -3
- package/dist/types/components/sula-dropdown/sula-dropdown.d.ts +11 -0
- package/dist/types/components/sula-dropdown/sula-dropdown.stories.d.ts +10 -0
- package/dist/types/components/sula-menu-select-list/sula-menu-select-list.d.ts +4 -0
- package/dist/types/components/sula-modal/model/sula-modal.model.d.ts +13 -0
- package/dist/types/components/sula-modal/sula-modal.d.ts +94 -0
- package/dist/types/components/sula-modal/sula-modal.stories.d.ts +83 -0
- package/dist/types/components.d.ts +170 -0
- package/dist/webcomponents/{p-or7qTZgT.js → p-CrFclBiX.js} +28 -16
- package/dist/webcomponents/p-CrFclBiX.js.map +1 -0
- package/dist/webcomponents/{p-bc1f174c.entry.js → p-e4fa59d5.entry.js} +658 -285
- package/dist/webcomponents/p-e4fa59d5.entry.js.map +1 -0
- package/dist/webcomponents/webcomponents.esm.js +41 -20
- package/package.json +2 -3
- package/dist/cjs/index-Bbryl0vg.js.map +0 -1
- package/dist/cjs/sula-avatar_18.cjs.entry.js.map +0 -1
- package/dist/components/p-BNtk_d_S.js.map +0 -1
- package/dist/esm/index-or7qTZgT.js.map +0 -1
- package/dist/esm/sula-avatar_18.entry.js.map +0 -1
- package/dist/webcomponents/p-bc1f174c.entry.js.map +0 -1
- package/dist/webcomponents/p-or7qTZgT.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["SulaAvatarSize","sulaAvatarCss","SulaAvatar","constructor","hostRef","this","size","Medium","render","h","Host","key","class","Small","Large","Display","imageUrl","src","alt","text","icon","SulaBadgeStatus","SulaBadgeSize","SulaBadgeType","sulaBadgeCss","SulaBadge","status","Default","type","Text","hasSlotContent","componentDidLoad","checkSlotContent","slotRef","assignedNodes","hasContent","some","node","nodeType","Node","TEXT_NODE","textContent","trim","getSizeClass","sizeStyles","getPaddingByType","paddingStyles","Dot","getTextPaddingBySize","Icon","getStatusClass","statusStyles","Error","Info","Success","Warning","customClass","ref","el","SulaButtonAppearance","SulaButtonSize","SulaButtonStatus","SulaButtonType","SulaLoaderSize","sulaButtonCss","SulaButton","appearance","Primary","loading","buttonDisabled","fullWidth","handleClick","buttonClicked","emit","getAppearanceClass","appearanceStyles","getDefaultButtonStyles","Secondary","getSecondaryButtonStyles","getTextButtonStyles","getButtonDisabledClass","Danger","Negative","getTextTypeSizeClass","sizeClasses","getButtonSizeByTypeClass","getArrowIconContainerClass","getBaseButtonClass","Object","assign","disabled","renderIconContent","id","renderTextContent","renderArrowIcon","getLoadingSize","onClick","leftIcon","rightIcon","SulaCheckboxType","sulaCheckboxCss","SulaCheckbox","checked","isFocus","toggle","valueChanged","handleFocus","focusedOn","handleBlur","focusedOut","getIconColor","label","List","onFocus","onBlur","tabIndex","subTitle","SulaChipAppearance","sulaChipCss","SulaChip","items","isFocused","showItems","itemClicked","length","handleItemSelected","item","menuItemSelected","detail","handleDocumentClick","event","clickInside","contains","target","getIconClass","onItemSelected","sulaDropdownCss","SulaDropdown","dropdownClicked","selectedItem","dropdownFocused","dropdownFocusedOut","handleValueChange","value","componentWillLoad","title","sulaIconCss","SulaIcon","document","navigator","global","factory","module","exports","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","getLocationHref","createTag","createElement","extendPrototype","sources","destination","i","len","sourcePrototype","prototype","attr","hasOwnProperty","call","getDescriptor","object","prop","getOwnPropertyDescriptor","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","push","pause","resume","setRate","rateValue","createAudio","assetPath","window","Howl","isPlaying","play","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","createRegularArray","arr","createTypedArrayFactory","Float32Array","Int16Array","Uint8ClampedArray","createSizedArray","Array","apply","_typeof$6","o","Symbol","iterator","subframeEnabled","expressionsPlugin","expressionsInterfaces","idPrefix$1","isSafari","test","userAgent","bmPow","Math","pow","bmSqrt","sqrt","bmFloor","floor","bmMax","max","bmMin","min","BMMath","propertyNames","random","abs","val","tOfVal","absArr","defaultCurveSegments","degToRads","PI","roundCorner","styleDiv","element","style","position","top","left","display","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","totalTime","frameMultiplier","direction","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","createElementID","_count","createID","HSVtoRGB","s","v","r","g","b","f","p","q","t","RGBtoHSV","d","addSaturationToRGB","color","offset","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","colorMap","hex","toString","setSubframeEnabled","getSubframeEnabled","setExpressionsPlugin","getExpressionsPlugin","setExpressionInterfaces","getExpressionInterfaces","setDefaultCurveSegments","getDefaultCurveSegments","setIdPrefix","createNS","createElementNS","_typeof$5","dataManager","_counterId","processes","workerFn","workerInstance","workerProxy","onmessage","postMessage","path","data","_workerSelf","createWorker","fn","Worker","Blob","blob","url","URL","createObjectURL","setupWorker","workerStart","e","dataFunctionManager","completeLayers","layers","comps","layerData","j","jLen","k","kLen","completed","hasMask","maskProps","masksProperties","pt","convertPathsToAbsoluteValues","ty","findCompLayers","refId","completeShapes","shapes","completeChars","chars","assets","findComp","comp","__used","JSON","parse","stringify","ks","it","checkVersion","minimum","animVersionString","animVersion","split","checkText","minimumVersion","updateTextLayer","textLayer","documentData","iterateLayers","animationData","checkChars","charData","ip","op","st","sr","a","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","c","checkShapes","completeClosingShapes","closed","cl","completeData","__complete","moduleOb","assetLoader","formatResponse","xhr","contentTypeHeader","getResponseHeader","responseType","indexOf","response","responseText","loadAsset","fullPath","callback","errorCallback","XMLHttpRequest","err","onreadystatechange","readyState","open","join","error","send","load","payload","animation","process","onComplete","onError","createProcess","loadAnimation","processId","location","origin","pathname","loadData","completeAnimation","anim","ImagePreloader","proxyImage","canvas","width","height","ctx","getContext","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","u","testImageLoaded","img","intervalId","setInterval","box","getBBox","_imageLoaded","clearInterval","bind","createImageData","addEventListener","ob","setAttributeNS","_elementHelper","append","appendChild","createImgData","crossOrigin","createFootageData","footageData","_footageLoaded","loadAssets","cb","images","_createImageData","setPath","setAssetsPath","getAsset","destroy","loadedImages","loadedFootages","setCacheType","elementHelper","ImagePreloaderFactory","BaseEvent","triggerEvent","eventName","args","_cbs","callbacks","removeEventListener","splice","markerParser","parsePayloadLines","lines","keys","line","keysCount","_markers","markers","_marker","markerData","time","tm","duration","dr","cm","_","__","name","ProjectInterface","registerComposition","compositions","_thisProjectFunction","nm","prepareFrame","xt","currentFrame","compInterface","renderers","registerRenderer","getRenderer","getRegisteredRenderer","_typeof$4","AnimationItem","isLoaded","currentRawFrame","frameRate","frameMult","playSpeed","playDirection","playCount","isPaused","autoplay","loop","renderer","animationID","timeCompleted","segmentPos","isSubframeEnabled","segments","_idle","_completedLoop","projectInterface","imagePreloader","audioController","configAnimation","onSetupError","onSegmentComplete","drawnFrameEvent","setParams","params","wrapper","container","animType","RendererClass","rendererSettings","globalData","defs","setProjectInterface","undefined","parseInt","autoloadSegments","initialSegment","setupAnimation","lastIndexOf","substr","fileName","trigger","setData","wrapperAttributes","attributes","getNamedItem","prerender","includeLayers","newLayers","fonts","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","animData","round","fr","searchExtraCompositions","updaFrameModifier","waitForFontsLoaded","triggerConfigError","setTimeout","rendererType","initItems","gotoFrame","resize","_width","_height","updateContainerSize","setSubframe","renderFrame","resetFrame","triggerRenderFrameError","togglePause","stop","setCurrentRawFrameValue","getMarkerData","markerName","marker","goToAndStop","isFrame","numValue","Number","isNaN","frameModifier","goToAndPlay","playSegments","advanceTime","nextValue","_isComplete","checkSegments","adjustSegment","setSpeed","setDirection","setSegment","init","end","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","setLoop","isLooping","getPath","getAssetData","hide","show","getDuration","updateDocumentData","index","getElementByPath","animationManager","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","subtractPlayingCount","registerAnimation","elem","getRegisteredAnimations","lenAnims","animations","addPlayingCount","activate","nowTime","elapsedTime","requestAnimationFrame","first","searchAnimations","standalone","animElements","concat","slice","getElementsByClassName","setAttribute","body","getElementsByTagName","innerText","div","freeze","unfreeze","BezierFactory","getBezierEasing","beziers","str","replace","bezEasing","BezierEasing","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","A","aA1","aA2","B","C","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","points","_p","_mSampleValues","_precomputed","get","x","mY1","mY2","_precompute","_getTForX","_calcSampleValues","mSampleValues","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","pooling","_double","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","dist1","dist2","dist3","diffDist","getBezierLength","pt1","pt2","pt3","pt4","curveSegments","ptCoord","perc","ptDistance","point","lastPoint","lengthData","getSegmentsLength","shapeData","segmentsLength","pathV","pathO","pathI","BezierData","segmentLength","PointData","partial","partialLength","buildBezierData","storedData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","dir","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","offsetTime","newValue","propType","pv","iterationIndex","lastIndex","keyframes","keyData","nextKeyData","keyframeMetadata","keyframesMetadata","fnc","nextKeyTime","keyTime","endValue","to","ti","ind","__fnct","y","n","distanceInLine","segmentPerc","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quatStart","createQuaternion","quatEnd","quaternionToEuler","slerp","out","ax","ay","az","aw","bx","by","bz","bw","omega","cosom","sinom","scale0","scale1","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","getValue","MultiDimensionalProperty","KeyframedValueProperty","KeyframedMultidimensionalProperty","arrLen","PropertyFactory","getProp","sid","slotManager","DynamicPropertyContainer","dynamicProperties","_isAnimated","iterateDynamicProperties","initDynamicPropertyContainer","pointPool","ShapePath","setPathData","setLength","doubleArrayLength","setXYAt","pos","setTripleAt","vX","vY","oX","oY","iX","iY","reverse","newPath","vertices","outPoints","inPoints","cnt","shapePool","shapePath","clone","shape","cloned","ShapeCollection","addShape","releaseShapes","shapeCollectionPool","newShapeCollection","shapeCollection","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","paths","localShapeCollection","shapesEqual","shape1","shape2","ShapeProperty","reset","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","p0","p1","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","sy","ir","is","convertToPath","convertStarToPath","convertPolygonToPath","or","os","numPts","angle","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","rad","roundness","perimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","v1","getShapeProp","dataProp","getConstructorFunction","getKeyframedConstructorFunction","Matrix","_cos","_sin","_tan","tan","_rnd","props","rotate","mCos","mSin","_t","rotateX","rotateY","rotateZ","shear","sx","skew","skewFromAxis","scale","sz","setTransform","l","m","translate","tx","tz","transform","a2","b2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_identityCalculated","a1","b1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","multiply","matrix","matrixProps","isIdentity","_identity","equals","matr","cloneFromProps","applyToPoint","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","lottie","setLocation","href","setSubframeRendering","setPrefix","prefix","setQuality","inBrowser","installPlugin","plugin","getFactory","useWebWorker","setIDPrefix","__getFactory","version","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","decodeURIComponent","scripts","myScript","bodymovin","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","TrimModifier","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","shapeSegments","segmentOb","shapeS","shapeE","releasePathsData","processShapes","_s","shapePaths","totalShapeLength","edges","newShapesData","addShapes","lastShapeInCollection","lastShape","pop","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","PuckerAndBloatModifier","amount","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","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","ceil","group","ix","reloadShapes","elems","transformData","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","RoundCornersModifier","rd","currentV","currentI","currentO","closerV","distance","newPosPerc","floatEqual","floatZero","lerp","lerpPoint","quadRoots","singleRoot","delta","polynomialCoefficients","p3","singlePoint","PolynomialBezier","linearize","pointEqual","coeffx","coeffy","derivative","tangentAngle","normalAngle","inflectionPoints","denom","tcusp","square","root","filter","p10","p11","p20","p21","extrema","bounds","boundingBox","right","bottom","cx","cy","intersectData","t2","splitData","boxIntersect","intersectsImpl","depth","tolerance","intersections","maxRecursion","d1s","d2s","other","nextIndex","shapeSegmentInverted","crossProduct","lineIntersection","start1","end1","start2","end2","v3","v4","polarOffset","pointDistance","hypot","ZigZagModifier","amplitude","frequency","pointsType","setPoint","outputBezier","outAmplitude","inAmplitude","angO","angI","getPerpendicularVector","vector","rot","rotatedVector","getProjectingAngle","cur","prevIndex","prevPoint","nextPoint","pVector","zigZagCorner","pointType","prevDist","nextDist","zigZagSegment","count","linearOffset","offsetSegment","p1a","p1b","p2b","p2a","joinLines","seg1","seg2","lineJoin","miterLimit","angleOut","angleIn","center","radius","intersection","getIntersection","intersect","pruneSegmentIntersection","outa","outb","pruneIntersections","offsetSegmentSplit","flex","mid","OffsetPathModifier","ml","lj","inputBezier","multiSegments","lastSeg","multiSegment","getFontProperties","fontData","styles","fStyle","fWeight","styleName","toLowerCase","weight","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","parentNode","fontFamily","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","offsetWidth","parent","checkLoadedFonts","loadedCount","loaded","fOrigin","monoCase","sansCase","removeChild","Date","now","checkLoadedFontsBinded","setIsLoadedBinded","createHelper","def","engine","helper","fontProps","tHelper","fFamily","fClass","tCanvasHelper","OffscreenCanvas","measure","getComputedTextLength","measureText","list","forEach","cache","fontArr","_pendingFonts","shouldLoadFont","loadedSelector","fPath","querySelectorAll","rel","sc","found","ch","getCharData","_char","charCodeAt","console","warn","_warned","_char2","fontName","getFontByName","doubleSize","singleSize","fName","getCodePoint","string","codePoint","second","isModifier","firstCharCode","secondCharCode","sum","isZeroWidthJoiner","charCode","isVariationSelector","isRegionalCode","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","setIsLoaded","Font","typekitLoaded","fontPrototype","SlotManager","slots","slotFactory","RenderableElement","initRenderable","isInRange","hidden","isTransparent","renderableComponents","addRenderableComponent","component","removeRenderableComponent","prepareRenderableFrame","num","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","hideOnTransparent","renderRenderable","sourceRectAtTime","getLayerSize","textData","getBlendMode","blendModeEnums","mode","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","EffectsManager","effects","ef","effectElements","effectItem","GroupEffect","eff","BaseElement","checkMasks","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","layerInterface","maskManager","registerMaskInterface","effectsInterface","createEffectsInterface","registerEffectsInterface","shapeInterface","shapesData","itemsData","content","textInterface","setBlendMode","blendModeValue","bm","baseElement","layerElement","initBaseData","layerId","effectsManager","getType","FrameElement","prepareProperties","isVisible","_isParent","FootageElement","imageLoader","getBaseElement","FootageInterface","getFootageData","AudioElement","_isPlaying","_canPlay","_currentTime","_volumeMultiplier","_previousVolume","_placeholder","lv","au","timeRemapped","totalVolume","volumeValue","BaseRenderer","checkLayers","buildItem","checkPendingElements","createItem","layer","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","buildAllItems","pInterface","progressiveLoad","buildElementParenting","parentName","hierarchy","addPendingElement","setAsParent","setHierarchy","pendingElements","getElementById","pathValue","setupGlobalData","fontsContainer","animationItem","compSize","effectTypes","TRANSFORM_EFFECT","TransformElement","initTransform","_matMdf","_localMatMdf","_opMdf","localMat","localOpacity","ao","renderTransform","finalMat","localTransforms","renderLocalTransform","lmat","localOp","opacity","searchEffectTransforms","renderableEffectsManager","transformEffects","getEffects","globalToLocal","transforms","ptNew","mHelper","MaskElement","maskElement","viewData","solidPath","properties","currentMasks","rect","expansor","feMorph","maskType","maskRef","lastPath","filterID","expan","lastOperator","filterId","lastRadius","mask","createLayerSolidPath","invRect","drawPath","maskedElement","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","createFilter","createAlphaToLuminanceFilter","filId","skipCoordinates","fil","feColorMatrix","featureSupport","svgLumaHidden","offscreenCanvas","registeredEffects$1","idPrefix","SVGEffects","source","filters","filterManager","Effect","effect","countsAsEffect","registerEffect$1","SVGBaseElement","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","HierarchyElement","initHierarchy","checkParenting","RenderableDOMElement","_prototype","initElement","createContent","renderInnerContent","innerElem","IImageElement","sourceRect","pr","imagePreserveAspectRatio","ProcessedElement","IShapeElement","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","comparePoints","diff","SVGGradientFillStyleData","initGradientData","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","maskId","opFill","lc","of","ms","ost","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","SVGTransformData","buildShapeString","_o","_i","shapeString","SVGElementsRenderer","_identityMatrix","_matrixHelper","createRenderFunction","renderFill","renderGradient","renderGradientStroke","renderStroke","renderPath","renderContentTransform","renderNoop","styleData","itemData","pathStringTransformed","redraw","lLen","iterations","styleElem","hasOpacity","attr1","attr2","cValues","oValues","ang","SVGShapeElement","stylesList","animatedContents","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","GradientConstructor","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","shapeProperty","setElementStyles","ownStyles","ownModifiers","currentTransform","modifier","processedPos","renderShape","animatedContent","LetterProps","sw","fc","update","updated","TextProperty","_frameId","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","obj","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","charactersArray","shouldCombine","shouldCombineNext","currentChars","charAt","letters","newLineFlag","anchorGrouping","currentSize","currentPos","currentLine","lineWidth","maxLineWidth","trackingOffset","boxHeight","currentHeight","lastSpaceIndex","uncollapsedSpaces","currentChar","an","add","anIndexes","animatorJustifyOffset","extra","animators","animatorData","letterData","based","indexes","fh","fs","fb","rn","totalChars","currentInd","newInd","newData","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorProp","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","sm","getMult","textProperty","easer","tot","smoothness","threshold","newCharsFlag","divisor","getTextSelectorProp","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","TextAnimatorProperty","renderType","_hasMaskedPath","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","searchProperties","getMeasures","matrixHelper","renderedLettersCount","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","tanAngle","tLength","pi","yOff","firstLine","animatorSelector","letterValue","offf","xPathPos","yPathPos","initPathPos","initSegmentInd","initPointInd","elemOpacity","letterSw","letterSc","letterFc","letterM","letterP","defaultPropsArray","letterO","animatorFirstCharOffset","justifyOffsetMult","isNewLine","animatorOffset","atan","ITextElement","textAnimator","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","validateText","buildNewText","emptyShapeData","SVGTextLottieElement","textSpans","singleShape","textContainer","buildTextContents","textArray","textContents","currentTextContent","String","fromCharCode","buildShapeData","shapeItem","usesGlyphs","tSpan","tElement","justify","span","glyph","cachedSpansLength","childSpan","glyphElement","SVGCompElement","_debug","textBox","bbox","renderedLetter","textSpan","ISolidElement","NullElement","SVGRendererBase","svgElement","viewBoxSize","viewBoxOnly","contentVisibility","className","focusable","preserveAspectRatio","destroyed","findIndexByInd","appendElementInPos","elementIndex","tp","matteMask","nextElement","insertBefore","ICompElement","setElements","getElements","destroyElements","supports3d","SVGRenderer","config","ariaLabel","titleElement","titleId","description","descElement","descId","filterSize","runExpressions","ShapeTransformManager","sequences","sequenceList","transform_key_count","addTransformSequence","sequence","processSequence","processSequences","getNewKey","lumaLoader","lumaBuffer","lumaBufferCtx","svg","createLumaSvgFilter","_svg","loadLuma","getLuma","createCanvas","loadLumaCanvas","getLumaCanvas","registeredEffects","CVEffects","registerEffect","CVMaskElement","hasMasks","canvasContext","beginPath","moveTo","lineTo","bezierCurveTo","save","clip","CVBaseElement","operationsMap","createElements","buffers","bufferCanvas","bufferCanvas2","_isProxy","transformCanvas","blendMode","globalCompositeOperation","hideElement","showElement","clearCanvas","clearRect","prepareLayer","buffer","bufferCtx","drawImage","getTransform","exitLayer","forceRealStack","ctxTransform","ctxOpacity","restore","CVShapeData","transformsManager","styledShapes","styledShape","trNodes","CVShapeElement","transformHelper","dashResetter","preTransforms","co","wi","da","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","currentGlobalAlpha","ctxStrokeStyle","grd","ctxLineWidth","ctxLineCap","ctxLineJoin","ctxMiterLimit","ctxFillStyle","setLineDash","lineDashOffset","closePath","ctxStroke","ctxFill","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","CVTextElement","stroke","fill","currentRender","sWidth","fValue","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","CVImageElement","imgW","imgH","imgRel","canvasRel","widthCrop","heightCrop","par","CVSolidElement","ctxFillRect","CanvasRendererBase","globalAlpha","strokeStyle","lineCap","rule","contextData","actionFlag","containerStyle","mozTransformOrigin","context","setContext","isDashed","elementWidth","elementHeight","offsetHeight","dpr","elementRel","animationRel","fillType","CanvasContext","CVContextData","stack","cArrPos","cTr","nativeContext","transformMat","currentOpacity","currentFillStyle","appliedFillStyle","currentStrokeStyle","appliedStrokeStyle","currentLineWidth","appliedLineWidth","currentLineCap","appliedLineCap","currentLineJoin","appliedLineJoin","appliedMiterLimit","currentMiterLimit","duplicate","newLength","forceRestore","currentContext","prevStack","saveOnNativeFlag","currentStack","newStack","setOpacity","trProps","CVCompElement","CanvasRenderer","devicePixelRatio","HBaseElement","checkBlendMode","tg","transformedElementStyle","matrixValue","webkitTransform","addEffects","HSolidElement","backgroundColor","HShapeElement","shapesContainer","currentBBox","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","shapeBoundingBox","xMax","yMax","tempBoundingBox","b2ac","calculateF","calculateBoundingBox","expandStrokeBoundingBox","widthProperty","kfw","currentBoxContains","changed","shapeStyle","shapeTransform","HTextElement","textPaths","isMasked","compW","compH","innerElemStyle","textColor","strokeWidth","lineHeight","tParent","tCont","children","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","margin","svgTransform","HCameraElement","pe","_prevMat","setup","threeDElements","perspectiveStyle","perspectiveElem","perspective","webkitPerspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","HImageElement","Image","imageElem","HybridRendererBase","camera","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","tmpDOMElement","getThreeDContainerByPos","startPos","endPos","createThreeDContainer","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","overflow","cWidth","cHeight","floatingContainer","HCompElement","_createBaseContainerElements","HybridRenderer","_thisLayerFunction","defineProperty","pixelAspect","frameDuration","displayStartTime","numLayers","_typeof$2","seedRandom","chunks","digits","rngname","startdenom","significance","seedrandom","seed","options","entropy","shortseed","mixkey","flatten","tostring","autoseed","arc4","ARC4","prng","int32","quick","S","pass","is_math_call","state","copy","keylen","me","result","typ","stringseed","smear","Uint8Array","crypto","msCrypto","getRandomValues","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","arrPlaceholder","inVertexPoint","outVertexPoint","initiateExpression","property","noOp","_value","needsVelocity","_needsRandom","elemType","$bm_transform","thisProperty","_name","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","lookAt","elem1","elem2","fVec","pitch","yaw","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","randSeed","substring","posterizeTime","framesPerSecond","velocity","textIndex","textTotal","selectorValue","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","hasParent","anchor_point","startTime","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","propertyName","_propertyGroup","effectsData","createGroupInterface","groupInterface","mn","createValueInterface","numProperties","np","enabled","en","expressionProperty","setGroupProperty","ShapePathInterface","pathInterfaceFactory","view","propertyIndex","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","defaultInterfaceFactory","contentsInterfaceFactory","interfaces","_interfaceFunction","transformInterfaceFactory","cix","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","start","skewAxis","outerRadius","outerRoundness","innerRadius","innerRoundness","parentGroupWrapper","_sourceText","sourceText","stringValue","fillColor","_typeof","outlineInterfaceFactory","currentPropertyName","currentProperty","propertyNameIndex","dataInterfaceFactory","outlineInterface","dataInterface","footage","getInterface","expressionHelpers","searchExpressions","_cachingAtTime","speed","getStaticValueAtTime","addPropertyDecorator","durationFlag","lastKeyFrame","cycleDuration","firstKeyFrame","ret","initV","endV","current","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","endFrame","sampleFrequency","sampleValue","getTransformValueAtTime","_transformCachingAtTime","anchor","rotationZ","rotationY","rotationX","orientation","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","feMerge","feMergeNode","linearFilterValue","SVGTintFilter","linearFilter","matrixFilter","colorBlack","colorWhite","SVGFillFilter","SVGStrokeEffect","initialized","elemChildren","childNodes","groupPath","removeAttribute","pathMasker","dasharrayValue","getTotalLength","lineLength","units","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","color1","color2","color3","tableR","tableG","tableB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","table","colorValue","outputDelta","inputDelta","SVGDropShadowEffect","globalFilterSize","feGaussianBlur","feOffset","feFlood","feComposite","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","symbol","SVGGaussianBlurEffect","kBlurrinessToSigma","sigma","dimensions","sigmaX","sigmaY","edgeMode","TransformEffect","forceFrame","isUniformScale","scaleHeight","scaleWidth","SVGTransformEffect","CVTransformEffect","sulaLoaderCss","SulaLoader","initLottie","disconnectedCallback","animationInstance","containerRef","loaderAnimation","getDimensions","sizes","small","medium","large","sulaMenuSelectListCss","SulaMenuSelectList","itemSelected","map","SulaProgressBarAppearance","SulaProgressBarState","sulaProgressBarCss","SulaProgressBar","showProgress","validateProgress","handleProgress","progress","getProgressBarStyle","OnPrimary","getProgressBarStateElement","topLabel","bottomLabel","sulaRadioButtonCss","SulaRadioButton","radioIsFocus","handleFocusOut","SulaSearchBarStyle","sulaSearchBarCss","SulaSearchBar","searchBarStyle","textValue","handleInputFocus","inputElement","focus","handleInputBlur","blur","handleRightIconClick","rightIconClicked","stopPropagation","preventDefault","handleValueChanges","getStyleClass","Highlight","placeholder","onInput","onMouseDown","SulaSwitchType","sulaSwitchCss","SulaSwitch","SulaTagSize","SulaTagIconStatus","SulaTagAppearance","SulaTagFontWeight","sulaTagCss","SulaTag","iconStatus","Bordered","Normal","Brand","LightBlue","LightBrand","OpacityGrey","OpacityWhite","getTextColorClass","getTextWeightClass","fontWeightStyles","Bold","getIconStatusClass","iconStatusStyles","SulaTextareaStatus","sulaTextareaCss","SulaTextarea","rows","isActive","textareaIsFocused","labelPadding","handleTextareaClick","setLabelUp","focusOnTextarea","handleTextareaChanges","setLabelDown","handleTextareaFocus","watchValueHandler","textareaElement","cursorPosition","selectionStart","newPosition","setSelectionRange","updateLabelPadding","changeElementsStyle","activeLabelElement","labelHeight","labelElement","classList","containerHeight","maxLength","paddingTop","helpText","SulaTextfieldType","SulaTextfieldStatus","DIGIT","ALPHA","ALPHANUM","BY_PASS_KEYS","isAllowedKeyCode","keyCode","mergeMoneyOptions","opts","delimiter","lastOutput","precision","separator","showSignal","suffixUnit","unit","zeroCents","moneyPrecision","addPlaceholdersToOutput","output","VanillaMasker","unbindElementToMask","onkeyup","onkeydown","bindElementToMask","that","onType","srcElement","VMasker","maskMoney","maskNumber","maskAlphaNum","maskPattern","pattern","unMask","toMoney","zeroMatcher","zeroRegExp","RegExp","digitsLength","lastDigitLength","number","clearDelimiter","clearSeparator","money","masked","cents","signal","startsWith","beginCents","centsValue","centsLength","centsSliced","toPattern","patternChars","charsValues","outputLength","match","toNumber","toAlphaNumeric","sulaTextfieldCss","SulaTextfield","inputIsOpen","showPassword","inputIsFocused","handleInputClick","toggleOptions","handleInputChanges","handleInputMask","handleIconClick","Password","handlePasswordIconClicked","inputContainer","inputValue","inputType","getInputIcon","SulaTilesType","SulaTilesSize","sulaTilesCss","SulaTiles","Rounded","ellipsis","subText","TILE_SIZES","BASE_CLASSES","roundedContainer","squareContainer","interactiveBackground","disabledBackground","iconContainer","roundedIcon","ellipsisText","tileClicked","isRounded","isSquare","Square","hasSubText","isInteractive","getRoundedTileSize","getContainerClasses","getIconContainerClasses","getTextContainerClasses","getTextClasses","isPrimary","getIconClasses","baseClass","colorClass","getTabIndex","condition","renderIcon","renderText","SulaTimelineListItemIconStatus","sulaTimelineListCss","SulaTimelineList","sulaTimelineList","handleItemClick","hasLink","getIconBackgroundColorByStatus","iconColorByStatus","getIconByStatus","iconByStatus","getIconColorByStatus","isLastItem","weekdayText","weekday","day","message"],"sources":["src/components/sula-avatar/model/sula-avatar.model.ts","src/components/sula-avatar/sula-avatar.scss?tag=sula-avatar&encapsulation=shadow","src/components/sula-avatar/sula-avatar.tsx","src/components/sula-badge/model/sula-badge.model.ts","src/components/sula-badge/sula-badge.scss?tag=sula-badge&encapsulation=shadow","src/components/sula-badge/sula-badge.tsx","src/components/sula-button/model/sula-button.model.ts","src/components/sula-loader/model/sula-loader.model.ts","src/components/sula-button/sula-button.scss?tag=sula-button&encapsulation=shadow","src/components/sula-button/sula-button.tsx","src/components/sula-checkbox/model/sula-checkbox.model.ts","src/components/sula-checkbox/sula-checkbox.scss?tag=sula-checkbox&encapsulation=shadow","src/components/sula-checkbox/sula-checkbox.tsx","src/components/sula-chip/model/sula-chip.model.ts","src/components/sula-chip/sula-chip.scss?tag=sula-chip&encapsulation=shadow","src/components/sula-chip/sula-chip.tsx","src/components/sula-dropdown/sula-dropdown.scss?tag=sula-dropdown&encapsulation=shadow","src/components/sula-dropdown/sula-dropdown.tsx","src/components/sula-icon/sula-icon.scss?tag=sula-icon","src/components/sula-icon/sula-icon.tsx","node_modules/.pnpm/lottie-web@5.13.0/node_modules/lottie-web/build/player/lottie.js","src/components/sula-loader/sula-loader.scss?tag=sula-loader&encapsulation=shadow","src/components/sula-loader/sula-loader.tsx","src/components/sula-menu-select-list/sula-menu-select-list.scss?tag=sula-menu-select-list&encapsulation=shadow","src/components/sula-menu-select-list/sula-menu-select-list.tsx","src/components/sula-progress-bar/model/sula-progress-bar.model.ts","src/components/sula-progress-bar/sula-progress-bar.scss?tag=sula-progress-bar&encapsulation=shadow","src/components/sula-progress-bar/sula-progress-bar.tsx","src/components/sula-radio-button/sula-radio-button.scss?tag=sula-radio-button&encapsulation=shadow","src/components/sula-radio-button/sula-radio-button.tsx","src/components/sula-search-bar/model/sula-search.bar-model.ts","src/components/sula-search-bar/sula-search-bar.scss?tag=sula-search-bar&encapsulation=shadow","src/components/sula-search-bar/sula-search-bar.tsx","src/components/sula-switch/model/sula-switch.model.ts","src/components/sula-switch/sula-switch.scss?tag=sula-switch&encapsulation=shadow","src/components/sula-switch/sula-switch.tsx","src/components/sula-tag/model/sula-tag.model.ts","src/components/sula-tag/sula-tag.scss?tag=sula-tag&encapsulation=shadow","src/components/sula-tag/sula-tag.tsx","src/components/sula-textarea/model/sula-textarea.model.ts","src/components/sula-textarea/sula-textarea.scss?tag=sula-textarea&encapsulation=shadow","src/components/sula-textarea/sula-textarea.tsx","src/components/sula-textfield/model/sula-textfield.model.ts","node_modules/.pnpm/vanilla-masker@1.2.0/node_modules/vanilla-masker/lib/vanilla-masker.js","src/components/sula-textfield/sula-textfield.scss?tag=sula-textfield&encapsulation=shadow","src/components/sula-textfield/sula-textfield.tsx","src/components/sula-tiles/model/sula-tiles.model.ts","src/components/sula-tiles/sula-tiles.scss?tag=sula-tiles&encapsulation=shadow","src/components/sula-tiles/sula-tiles.tsx","src/components/sula-timeline-list/model/sula-timeline-list.model.ts","src/components/sula-timeline-list/sula-timeline-list.scss?tag=sula-timeline-list&encapsulation=shadow","src/components/sula-timeline-list/sula-timeline-list.tsx"],"sourcesContent":["export enum SulaAvatarSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n Display = 'display',\n}\n",":host {\n display: block;\n}\n","import { Component, Host, Prop, h } from '@stencil/core';\nimport { SulaAvatarSize } from './model/sula-avatar.model';\n\n@Component({\n tag: 'sula-avatar',\n styleUrl: 'sula-avatar.scss',\n shadow: true,\n})\nexport class SulaAvatar {\n /**\n * Avatar size\n */\n @Prop()\n size: SulaAvatarSize = SulaAvatarSize.Medium;\n\n /**\n * Avatar image url\n */\n @Prop()\n imageUrl?: string;\n\n /**\n * Text to display when image is not available\n */\n @Prop()\n text?: string;\n\n /**\n * Icon to displaywhen image is not set\n */\n @Prop()\n icon?: string;\n\n render() {\n return (\n <Host>\n <div\n class={{\n 'flex justify-center items-center rounded-xxl bg-surface-on-body font-bold text-text-primary': true,\n 'w-[44px] h-[44px] text-2xl': this.size === SulaAvatarSize.Small,\n 'w-[56px] h-[56px] text-3xl': this.size === SulaAvatarSize.Medium,\n 'w-[96px] h-[96px] text-5xl': this.size === SulaAvatarSize.Large,\n 'w-[240px] h-[240px] text-5xl': this.size === SulaAvatarSize.Display,\n }}\n >\n <div>{this.imageUrl && <img class=\"rounded-full\" src={this.imageUrl} alt={this.text} />}</div>\n <div>{this.icon && !this.imageUrl && <sula-icon icon={this.icon} />}</div>\n <div>{this.text && !this.imageUrl && !this.icon && <span>{this.text}</span>}</div>\n </div>\n </Host>\n );\n }\n}\n","export enum SulaBadgeStatus {\n Default = 'default',\n Money = 'money',\n Info = 'info',\n Error = 'error',\n Success = 'success',\n Warning = 'warning',\n}\n\nexport enum SulaBadgeSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n Display = 'display',\n} \n\nexport enum SulaBadgeType {\n Text = 'text',\n Icon = 'icon',\n Dot = 'dot',\n}\n ",":host {\n display: block;\n}\n","import { Component, Host, Prop, h, Element, State } from '@stencil/core';\nimport { SulaBadgeSize, SulaBadgeStatus, SulaBadgeType } from './model/sula-badge.model';\n\n@Component({\n tag: 'sula-badge',\n styleUrl: 'sula-badge.scss',\n shadow: true,\n})\nexport class SulaBadge {\n @Element() hostElement: HTMLElement;\n\n /**\n * Badge status\n */\n @Prop({ mutable: true }) status: SulaBadgeStatus = SulaBadgeStatus.Default;\n\n /**\n * Badge size\n */\n @Prop({ mutable: true }) size: SulaBadgeSize = SulaBadgeSize.Medium;\n\n /**\n * Badge type\n */\n @Prop({ mutable: true }) type: SulaBadgeType = SulaBadgeType.Text;\n\n /**\n * Badge text\n */\n @Prop({ mutable: true }) text: string = '';\n\n /**\n * Badge icon\n */\n @Prop({ mutable: true }) icon: string = '';\n\n slotRef?: HTMLSlotElement;\n\n @State()\n hasSlotContent: boolean = false;\n\n componentDidLoad() {\n this.checkSlotContent();\n }\n\n checkSlotContent() {\n if (this.slotRef) {\n const assignedNodes = this.slotRef.assignedNodes();\n\n const hasContent = assignedNodes.some(node => {\n if (node.nodeType === Node.TEXT_NODE) {\n return node.textContent.trim() !== '';\n }\n return true;\n });\n\n this.hasSlotContent = hasContent;\n }\n }\n\n getSizeClass() {\n const sizeStyles = {\n [SulaBadgeSize.Small]: 'min-w-12 h-12',\n [SulaBadgeSize.Medium]: 'min-w-[20px] h-[20px]',\n [SulaBadgeSize.Large]: 'min-w-[24px] h-[24px]',\n [SulaBadgeSize.Display]: 'min-w-[32px] h-[32px]',\n };\n\n return sizeStyles[this.size];\n }\n\n getPaddingByType() {\n const paddingStyles = {\n [SulaBadgeType.Dot]: 'p-0',\n [SulaBadgeType.Text]: this.getTextPaddingBySize(),\n [SulaBadgeType.Icon]: 'p-4',\n };\n return paddingStyles[this.type];\n }\n\n getTextPaddingBySize() {\n const paddingStyles = {\n [SulaBadgeSize.Small]: 'p-4',\n [SulaBadgeSize.Medium]: 'p-4',\n [SulaBadgeSize.Large]: 'px-8 py-2',\n [SulaBadgeSize.Display]: 'px-8 py-2',\n };\n\n return paddingStyles[this.size];\n }\n\n getStatusClass() {\n const statusStyles = {\n [SulaBadgeStatus.Default]: 'bg-brand-primary',\n [SulaBadgeStatus.Error]: 'bg-feedback-error',\n [SulaBadgeStatus.Info]: 'bg-feedback-informational',\n [SulaBadgeStatus.Success]: 'bg-feedback-success',\n [SulaBadgeStatus.Warning]: 'bg-feedback-alert',\n };\n\n return statusStyles[this.status];\n }\n\n render() {\n return (\n <Host>\n <div class=\"relative flex w-fit\">\n <div\n class={{\n 'absolute top-0 right-0': (this.type === SulaBadgeType.Dot || this.type === SulaBadgeType.Icon) && this.hasSlotContent,\n 'absolute bottom-[-8px] flex w-full justify-center items-center': this.type === SulaBadgeType.Text && this.hasSlotContent,\n }}\n >\n <div\n class={{\n [this.getSizeClass()]: true,\n [this.getStatusClass()]: true,\n [this.getPaddingByType()]: true,\n 'rounded-full flex justify-center items-center': true,\n }}\n >\n {this.icon && <sula-icon icon={this.icon} customClass=\"text-base text-negative-negative-1\"></sula-icon>}\n {this.text && <div class=\"font-bold text-base leading-4 text-negative-negative-1\">{this.text}</div>}\n </div>\n </div>\n <slot ref={el => (this.slotRef = el as HTMLSlotElement)}></slot>\n </div>\n </Host>\n );\n }\n}\n","export enum SulaButtonAppearance {\n Default = 'default',\n Secondary = 'secondary',\n Text = 'text',\n}\n\nexport enum SulaButtonSize {\n Large = 'large',\n Default = 'default',\n Cta = 'cta',\n}\n\nexport enum SulaButtonStatus {\n Primary = 'primary',\n Danger = 'danger',\n Negative = 'negative',\n}\n\nexport enum SulaButtonType {\n Icon = 'icon',\n Text = 'text',\n}\n","export enum SulaLoaderSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n}\n",":host {\n display: block;\n}\n\nbutton {\n &:focus {\n outline: 2px solid var(--color-feedback-informational) !important;\n outline-offset: 2px !important;\n }\n}\n","import { Component, Event, EventEmitter, Host, Prop, h } from '@stencil/core';\nimport { SulaButtonAppearance, SulaButtonSize, SulaButtonStatus, SulaButtonType } from './model/sula-button.model';\nimport { SulaLoaderSize } from '../sula-loader/model/sula-loader.model';\n\n@Component({\n tag: 'sula-button',\n styleUrl: 'sula-button.scss',\n shadow: true,\n})\nexport class SulaButton {\n /**\n * Button text when is text type\n */\n @Prop({ mutable: true }) text: string;\n\n /**\n * Button icon when is Icon type\n */\n @Prop({ mutable: true }) icon: string;\n\n /**\n * Button left icon\n */\n @Prop({ mutable: true }) leftIcon: string;\n\n /**\n * Button right icon\n */\n @Prop({ mutable: true }) rightIcon: string;\n\n /**\n * Button appearance\n */\n @Prop({ mutable: true }) appearance: SulaButtonAppearance = SulaButtonAppearance.Default;\n\n /**\n * Button type\n */\n @Prop({ mutable: true }) type: SulaButtonType = SulaButtonType.Text;\n\n /**\n * Button size\n */\n @Prop({ mutable: true }) size: SulaButtonSize = SulaButtonSize.Default;\n\n /**\n * Button status\n */\n @Prop({ mutable: true }) status: SulaButtonStatus = SulaButtonStatus.Primary;\n\n /**\n * Is button loading\n */\n @Prop({ mutable: true }) loading: boolean = false;\n\n /**\n * Is button disabled\n */\n @Prop({ mutable: true }) buttonDisabled: boolean = false;\n\n /**\n * If true, button will take the full width of its container\n */\n @Prop({ mutable: true, attribute: 'full-width' }) fullWidth: boolean = false;\n\n /**\n * Event emitted when button is clicked.\n * @note If button is disabled event won't be emitted\n */\n @Event()\n buttonClicked: EventEmitter<void>;\n\n private getAppearanceClass() {\n if (this.loading) return;\n const appearanceStyles = {\n [SulaButtonAppearance.Default]: this.getDefaultButtonStyles(),\n [SulaButtonAppearance.Secondary]: `border ${this.getSecondaryButtonStyles()}`,\n [SulaButtonAppearance.Text]: `flex items-center space-x-8 ${this.getTextButtonStyles()}`,\n };\n\n return appearanceStyles[this.appearance];\n }\n\n private getButtonDisabledClass() {\n return this.appearance === SulaButtonAppearance.Text ? 'text-text-disabled' : 'bg-states-bg-disabled text-text-disabled border-none';\n }\n\n private getDefaultButtonStyles() {\n if (this.buttonDisabled) {\n return this.getButtonDisabledClass();\n }\n\n const statusStyles = {\n [SulaButtonStatus.Primary]: 'bg-brand-primary text-white hover:bg-states-primary-hover active:bg-states-primary-pressed',\n [SulaButtonStatus.Danger]: 'bg-feedback-error text-white hover:bg-states-danger-hover active:bg-opacity-85 active:bg-states-danger-pressed',\n [SulaButtonStatus.Negative]: 'bg-negative-negative-1 text-negative-negative-2 hover:bg-states-negative-hover active:bg-states-negative-pressed',\n };\n\n return statusStyles[this.status];\n }\n\n private getSecondaryButtonStyles() {\n if (this.buttonDisabled) {\n return this.getButtonDisabledClass();\n }\n\n const statusStyles = {\n [SulaButtonStatus.Primary]: 'border-brand-primary text-brand-primary hover:bg-states-empty-bg-hover bg-white active:bg-states-empty-bg-pressed',\n [SulaButtonStatus.Danger]: 'border-feedback-error text-feedback-error hover:bg-states-empty-bg-hover bg-white active:bg-states-empty-bg-pressed',\n [SulaButtonStatus.Negative]: 'border-negative-negative-1 text-negative-negative-1 bg-transparent hover:bg-states-empty-bg-hover active:bg-states-empty-bg-pressed',\n };\n\n return statusStyles[this.status];\n }\n\n private getTextButtonStyles() {\n if (this.buttonDisabled) {\n return this.getButtonDisabledClass();\n }\n\n const statusStyles = {\n [SulaButtonStatus.Primary]: 'text-brand-primary',\n [SulaButtonStatus.Danger]: 'text-feedback-error',\n [SulaButtonStatus.Negative]: 'text-negative-negative-1',\n };\n\n return statusStyles[this.status];\n }\n\n private getTextTypeSizeClass() {\n const sizeClasses = {\n [SulaButtonSize.Default]: 'py-4 h-[40px]',\n [SulaButtonSize.Large]: 'py-4 h-[56px]',\n };\n\n return sizeClasses[this.size];\n }\n\n private getButtonSizeByTypeClass() {\n if (this.loading) {\n if (this.type === SulaButtonType.Icon) {\n return {\n 'w-[40px] h-[40px] p-8': this.size === SulaButtonSize.Default,\n 'w-[56px] h-[56px] p-16': this.size === SulaButtonSize.Large,\n };\n }\n\n return {\n 'w-[56px] h-[44px]': this.size === SulaButtonSize.Default,\n 'w-[64px] h-[56px]': this.size === SulaButtonSize.Large,\n };\n }\n if (this.type === SulaButtonType.Text) {\n return this.appearance === SulaButtonAppearance.Text\n ? { [this.getTextTypeSizeClass()]: true }\n : {\n ['px-16 py-4 min-w-[120px] h-[40px]']: this.size === SulaButtonSize.Default,\n ['px-16 py-4 min-w-[120px] h-[56px]']: this.size === SulaButtonSize.Large,\n };\n }\n\n return {\n 'flex justify-center items-center': true,\n ['p-8 h-[40px] min-w-[40px]']: this.size === SulaButtonSize.Default,\n ['p-16 py-4 min-w-[56px] h-[56px]']: this.size === SulaButtonSize.Large,\n };\n }\n\n private getArrowIconContainerClass() {\n return {\n 'flex items-center justify-center w-24 h-24 rounded-xxl': true,\n 'group-hover:bg-states-empty-bg-hover': !this.buttonDisabled && this.type === SulaButtonType.Text,\n 'text-icon-primary': !this.buttonDisabled,\n 'text-icon-disabled': this.buttonDisabled,\n };\n }\n\n private getBaseButtonClass() {\n return {\n [this.getAppearanceClass()]: true,\n ...this.getButtonSizeByTypeClass(),\n 'rounded-xxl': this.appearance !== SulaButtonAppearance.Text,\n 'rounded-xs focus:bg-states-empty-bg-hover': this.appearance === SulaButtonAppearance.Text,\n 'font-bold text-base group': true,\n 'disabled': this.buttonDisabled,\n 'bg-states-empty-bg-pressed flex justify-center items-center': this.loading,\n 'w-full': this.fullWidth,\n };\n }\n\n private renderIconContent() {\n if (this.type === SulaButtonType.Icon) {\n return <sula-icon id=\"button-icon\" icon={this.icon} customClass=\"text-2xl\" class=\"flex leading-6\"></sula-icon>;\n }\n return null;\n }\n\n private renderTextContent() {\n if (this.text && this.type === SulaButtonType.Text) {\n return <div id=\"button-text\">{this.text}</div>;\n }\n return null;\n }\n\n private renderArrowIcon() {\n if (this.appearance === SulaButtonAppearance.Text) {\n return (\n <div class={this.getArrowIconContainerClass()}>\n <sula-icon icon=\"ph-bold ph-caret-right\" customClass=\"text-lg\"></sula-icon>\n </div>\n );\n }\n return null;\n }\n\n getLoadingSize() {\n if (this.type === SulaButtonType.Icon || this.size === SulaButtonSize.Default) {\n return SulaLoaderSize.Small;\n }\n\n return SulaLoaderSize.Medium;\n }\n\n handleClick = () => {\n if (!this.buttonDisabled && !this.loading) {\n this.buttonClicked.emit();\n }\n };\n\n render() {\n return (\n <Host>\n <button id=\"button-container\" class={this.getBaseButtonClass()} disabled={this.buttonDisabled || this.loading} onClick={this.handleClick}>\n {this.loading && (\n <div>\n <sula-loader size={this.getLoadingSize()}></sula-loader>\n </div>\n )}\n {!this.loading && (\n <div class=\"flex w-full justify-center items-center\">\n {this.leftIcon && <sula-icon icon={this.leftIcon} customClass=\"text-lg mr-8\"></sula-icon>}\n {this.renderIconContent()}\n {this.renderTextContent()}\n {this.renderArrowIcon()}\n {this.rightIcon && <sula-icon icon={this.rightIcon} customClass=\"text-lg ml-8\"></sula-icon>}\n </div>\n )}\n </button>\n </Host>\n );\n }\n}\n","export enum SulaCheckboxType {\n Default = 'default',\n List = 'list',\n}\n",":host {\n display: block;\n}\n\n.checkbox-focus {\n outline: 2px solid var(--color-feedback-informational) !important;\n outline-offset: 2px !important;\n}\n\n.container-focus {\n outline: 2px solid var(--color-feedback-informational) !important;\n outline-offset: 2px !important;\n}\n","import { Component, Event, EventEmitter, Host, Prop, State, h } from '@stencil/core';\nimport { SulaCheckboxType } from './model/sula-checkbox.model';\n\n@Component({\n tag: 'sula-checkbox',\n styleUrl: 'sula-checkbox.scss',\n shadow: true,\n})\nexport class SulaCheckbox {\n /**\n * Checkbox type\n */\n @Prop({ mutable: true }) type: SulaCheckboxType = SulaCheckboxType.Default;\n\n /**\n * Checkbox label\n */\n @Prop({ mutable: true }) label?: string;\n\n /**\n * Checkbox sub title (avaible when is `list` type)\n */\n @Prop({ mutable: true }) subTitle?: string;\n\n /**\n * Is checbox disabled\n */\n @Prop({ mutable: true }) disabled: boolean = false;\n\n /**\n * Is checkbox checked\n */\n @Prop({ mutable: true }) checked: boolean = false;\n\n /**\n * Event emitted when checkbox value changes.\n */\n @Event()\n valueChanged: EventEmitter<boolean>;\n\n /**\n * Event emitted when checkbox is focused.\n */\n @Event()\n focusedOn: EventEmitter<void>;\n\n /**\n * Event emitted when checkbox is focused out.\n */\n @Event()\n focusedOut: EventEmitter<void>;\n\n @State()\n isFocus: boolean = false;\n\n toggle = () => {\n if (!this.disabled) {\n this.checked = !this.checked;\n this.valueChanged.emit(this.checked);\n }\n };\n\n handleFocus = () => {\n if (!this.disabled) {\n this.isFocus = true;\n this.focusedOn.emit();\n }\n };\n\n handleBlur = () => {\n if (!this.disabled) {\n this.focusedOut.emit();\n this.isFocus = false;\n }\n };\n\n getIconColor() {\n if (this.disabled) {\n return 'text-icon-disabled';\n }\n\n return 'text-negative-negative-1';\n }\n\n render() {\n return (\n <Host>\n <div\n class={{\n 'outline-none': true,\n 'flex items-center space-x-12': !!this.label && this.type === SulaCheckboxType.Default,\n 'flex items-center justify-between bg-surface-on-body rounded-md w-[280px] min-h-[85px] px-24 py-16': this.type === SulaCheckboxType.List,\n 'hover:bg-states-empty-bg-hover active:bg-states-empty-bg-pressed cursor-pointer': this.type === SulaCheckboxType.List && !this.disabled,\n 'container-focus': this.isFocus && this.type === SulaCheckboxType.List,\n }}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n onClick={this.toggle}\n tabIndex={0}\n >\n {this.type === SulaCheckboxType.List && (\n <div class=\"flex flex-col flex-1 mr-16 overflow-hidden\">\n {!!this.label && <label class=\"text-text-primary font-bold text-base cursor-pointer break-words\">{this.label}</label>}\n {!!this.subTitle && <span class=\"text-text-secondary text-base break-words\">{this.subTitle}</span>}\n </div>\n )}\n\n <div\n tabIndex={0}\n class={{\n 'flex justify-center items-center rounded-xs w-[27px] h-[27px] border outline-none flex-shrink-0': true,\n 'checkbox-focus': this.isFocus && this.type === SulaCheckboxType.Default,\n 'cursor-pointer active:bg-states-empty-bg-pressed': !this.disabled,\n 'bg-states-bg-disabled border-states-bg-disabled': this.disabled,\n 'bg-brand-primary border-brand-primary': this.checked,\n 'bg-surface-body border-line-input': !this.checked,\n }}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n >\n {this.checked && (\n <div class=\"flex justify-center items-center\">\n <sula-icon icon=\"ph-bold ph-check\" customClass={`${this.getIconColor()} text-xl`}></sula-icon>\n </div>\n )}\n </div>\n {!!this.label && this.type === SulaCheckboxType.Default && <label class=\"text-text-secondary text-base cursor-pointer break-words\">{this.label}</label>}\n </div>\n </Host>\n );\n }\n}\n","export enum SulaChipAppearance {\n Default = 'default',\n Negative = 'negative',\n}\n",":host {\n display: block;\n}\n\n.chip-focus {\n outline: 2px solid var(--color-feedback-informational) !important;\n outline-offset: 2px !important;\n}\n\n.chip-opened {\n box-shadow: 0px 0px 0px 2px #1414141a;\n}\n","import { Component, Event, EventEmitter, Host, Listen, Prop, State, h } from '@stencil/core';\nimport { SulaMenuListItem } from '../sula-menu-select-list/model/sula-menu-select-list.model';\nimport { SulaChipAppearance } from './model/sula-chip.model';\nimport { SulaMenuSelectListCustomEvent } from '../../components';\n\n@Component({\n tag: 'sula-chip',\n styleUrl: 'sula-chip.scss',\n shadow: true,\n})\nexport class SulaChip {\n /**\n * Chip text\n */\n @Prop({ mutable: true })\n text: string = '';\n\n /**\n * Chip appearance\n */\n @Prop({ mutable: true })\n appearance: SulaChipAppearance = SulaChipAppearance.Default;\n\n /**\n * Chip is disabled\n */\n @Prop({ mutable: true })\n disabled: boolean = false;\n\n /**\n * Items for list\n */\n @Prop({ mutable: true })\n items: SulaMenuListItem[] = [];\n\n /**\n * Event emitted when chip is clicked\n */\n @Event()\n itemClicked: EventEmitter<void>;\n\n /**\n * Event emitted when item is selected\n */\n @Event()\n menuItemSelected: EventEmitter<SulaMenuListItem>;\n\n @State()\n isFocused = false;\n\n @State()\n showItems = false;\n\n node?: HTMLElement;\n\n @Listen('click', { target: 'document' })\n handleDocumentClick(event: Event) {\n if (!this.node) return;\n\n const clickInside = this.node.contains(event.target as Node);\n\n if (!clickInside) {\n this.showItems = false;\n }\n }\n\n handleFocus = () => {\n if (this.disabled) return;\n this.isFocused = true;\n };\n\n handleBlur = () => {\n if (this.disabled) return;\n this.isFocused = false;\n };\n\n handleClick = () => {\n if (this.disabled) return;\n\n this.itemClicked.emit();\n\n if (this.items.length > 0) {\n this.showItems = !this.showItems;\n this.isFocused = false;\n }\n };\n\n handleItemSelected = (item: SulaMenuSelectListCustomEvent<SulaMenuListItem>) => {\n this.menuItemSelected.emit(item.detail);\n this.showItems = false;\n };\n\n getIconClass() {\n if (this.disabled) return 'text-text-disabled';\n\n if (this.appearance === SulaChipAppearance.Default) {\n return 'text-text-primary';\n } else {\n return 'text-negative-negative-2';\n }\n }\n\n render() {\n return (\n <Host ref={node => (this.node = node)}>\n <div class=\"w-fit relative\">\n <div\n class={{\n 'flex justify-center items-center px-16 py-2 rounded-xxl min-h-40 w-fit outline-none': true,\n 'bg-surface-on-body hover:bg-states-empty-bg-hover active:bg-states-empty-bg-pressed': this.appearance === SulaChipAppearance.Default && !this.disabled,\n 'bg-negative-negative-1 hover:bg-states-negative-hover active:bg-states-negative-pressed': this.appearance === SulaChipAppearance.Negative && !this.disabled,\n 'bg-states-bg-disabled cursor-not-allowed': this.disabled,\n 'cursor-pointer': !this.disabled,\n 'border border-line-input chip-opened': !this.disabled && this.showItems,\n 'chip-focus': this.isFocused,\n }}\n tabIndex={0}\n onClick={this.handleClick}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n >\n <span\n class={{\n 'text-base font-bold leading-4': true,\n 'text-text-primary': this.appearance === SulaChipAppearance.Default && !this.disabled,\n 'text-negative-negative-2': this.appearance === SulaChipAppearance.Negative && !this.disabled,\n 'text-text-disabled': this.disabled,\n }}\n >\n {this.text}\n </span>\n\n {this.items.length > 0 && (\n <div class=\"flex items-center justify-center ml-8 leading-4\">\n <sula-icon icon={`ph-bold ph-caret-${this.showItems ? 'up' : 'down'}`} customClass={this.getIconClass()}></sula-icon>\n </div>\n )}\n </div>\n {this.showItems && (\n <div class=\"absolute z-50 top-40 left-0\">\n <sula-menu-select-list items={this.items} onItemSelected={this.handleItemSelected}></sula-menu-select-list>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.dropdown-focus {\n outline: 2px solid var(--color-feedback-informational) !important;\n outline-offset: 2px !important;\n}\n","import { Component, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { SulaMenuListItem, SulaMenuSelectListCustomEvent } from '../../components';\n\n@Component({\n tag: 'sula-dropdown',\n styleUrl: 'sula-dropdown.scss',\n shadow: true,\n})\nexport class SulaDropdown {\n /**\n * Dropdown label\n */\n @Prop({ mutable: true })\n label: string;\n\n /**\n * Dropdown is disabled\n */\n @Prop({ mutable: true })\n disabled: boolean = false;\n\n /**\n * Items for list\n */\n @Prop({ mutable: true })\n items: SulaMenuListItem[] = [];\n\n /**\n * Value for dropdown\n */\n @Prop({ mutable: true })\n value?: SulaMenuListItem;\n\n /**\n * Event emitted when dropdown is clicked\n */\n @Event()\n dropdownClicked: EventEmitter<void>;\n\n /**\n * Event emitted when dropdown is focused\n */\n @Event()\n dropdownFocused: EventEmitter<void>;\n\n /**\n * Event emitted when dropdown is focused out\n */\n @Event()\n dropdownFocusedOut: EventEmitter<void>;\n\n /**\n * Event emitted when item is selected\n */\n @Event()\n menuItemSelected: EventEmitter<SulaMenuListItem>;\n\n @State()\n selectedItem?: SulaMenuListItem;\n\n @State()\n showItems = false;\n\n @State()\n isFocused = false;\n\n node?: HTMLElement;\n\n @Watch('value')\n handleValueChange() {\n if (this.value) {\n this.selectedItem = this.value;\n }\n }\n\n @Listen('click', { target: 'document' })\n handleDocumentClick(event: Event) {\n if (!this.node) return;\n\n const clickInside = this.node.contains(event.target as Node);\n\n if (!clickInside) {\n this.showItems = false;\n }\n }\n\n componentWillLoad() {\n if (this.value) {\n this.selectedItem = this.value;\n }\n }\n\n handleClick = () => {\n if (this.disabled) return;\n\n this.dropdownClicked.emit();\n\n if (this.items.length > 0) {\n this.showItems = !this.showItems;\n }\n };\n\n handleItemSelected = (item: SulaMenuSelectListCustomEvent<SulaMenuListItem>) => {\n this.menuItemSelected.emit(item.detail);\n this.selectedItem = item.detail;\n };\n\n getIconClass() {\n if (this.disabled) return 'text-icon-disabled';\n\n return 'text-text-primary';\n }\n\n handleFocus = () => {\n if (this.disabled) return;\n\n this.isFocused = true;\n this.dropdownFocused.emit();\n };\n\n handleBlur = () => {\n if (this.disabled) return;\n\n this.isFocused = false;\n this.dropdownFocusedOut.emit();\n };\n\n render() {\n return (\n <Host ref={node => (this.node = node)}>\n <div\n class={{\n 'flex justify-between items-center border border-line-input h-[72px] px-16 rounded-xl relative': true,\n 'bg-surface-body cursor-pointer': !this.disabled,\n 'bg-states-bg-disabled': this.disabled,\n 'dropdown-focus': this.isFocused,\n }}\n onClick={this.handleClick}\n tabIndex={0}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n >\n <div class=\"flex flex-col\">\n <label\n class={{\n 'text-base leading-4': !this.selectedItem,\n 'text-sm leading-4 font-bold': !!this.selectedItem,\n 'text-text-primary': !this.disabled,\n 'text-text-disabled': this.disabled,\n }}\n >\n {this.label}\n </label>\n\n {!!this.selectedItem && (\n <span\n class={{\n 'text-base leading-4 pt-4': true,\n 'text-text-primary': !this.disabled,\n 'text-text-disabled': this.disabled,\n }}\n >\n {this.selectedItem.title}\n </span>\n )}\n </div>\n <div class=\"flex items-center justify-center ml-8 leading-6 text-2xl\">\n <sula-icon icon={`ph ph-caret-${this.showItems ? 'up' : 'down'}`} customClass={`${this.getIconClass()} text-2xl`}></sula-icon>\n </div>\n\n {this.showItems && (\n <div class=\"absolute z-50 top-[72px] left-0 w-full\">\n <sula-menu-select-list items={this.items} fullWidth={true} onItemSelected={this.handleItemSelected}></sula-menu-select-list>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n","\n\n.ph {\n font-family: 'Phosphor' !important;\n}\n\n.ph-bold {\n font-family: 'Phosphor-Bold' !important;\n}\n\n.ph-duotone {\n font-family: 'Phosphor-Duotone' !important;\n}\n\n.ph-fill {\n font-family: 'Phosphor-Fill' !important;\n}\n\n.ph-light {\n font-family: 'Phosphor-Light' !important;\n}\n\n.ph-thin {\n font-family: 'Phosphor-Thin' !important;\n}\n\n.sula-icon {\n speak: never;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n letter-spacing: 0;\n -webkit-font-feature-settings: 'liga';\n -moz-font-feature-settings: 'liga=1';\n -moz-font-feature-settings: 'liga';\n -ms-font-feature-settings: 'liga' 1;\n font-feature-settings: 'liga';\n -webkit-font-variant-ligatures: discretionary-ligatures;\n font-variant-ligatures: discretionary-ligatures;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.sula-icon.ph-acorn:before {\n content: '\\eb9a';\n}\n.sula-icon.ph-address-book:before {\n content: '\\e6f8';\n}\n.sula-icon.ph-address-book-tabs:before {\n content: '\\ee4e';\n}\n.sula-icon.ph-air-traffic-control:before {\n content: '\\ecd8';\n}\n.sula-icon.ph-airplane:before {\n content: '\\e002';\n}\n.sula-icon.ph-airplane-in-flight:before {\n content: '\\e4fe';\n}\n.sula-icon.ph-airplane-landing:before {\n content: '\\e502';\n}\n.sula-icon.ph-airplane-takeoff:before {\n content: '\\e504';\n}\n.sula-icon.ph-airplane-taxiing:before {\n content: '\\e500';\n}\n.sula-icon.ph-airplane-tilt:before {\n content: '\\e5d6';\n}\n.sula-icon.ph-airplay:before {\n content: '\\e004';\n}\n.sula-icon.ph-alarm:before {\n content: '\\e006';\n}\n.sula-icon.ph-alien:before {\n content: '\\e8a6';\n}\n.sula-icon.ph-align-bottom:before {\n content: '\\e506';\n}\n.sula-icon.ph-align-bottom-simple:before {\n content: '\\eb0c';\n}\n.sula-icon.ph-align-center-horizontal:before {\n content: '\\e50a';\n}\n.sula-icon.ph-align-center-horizontal-simple:before {\n content: '\\eb0e';\n}\n.sula-icon.ph-align-center-vertical:before {\n content: '\\e50c';\n}\n.sula-icon.ph-align-center-vertical-simple:before {\n content: '\\eb10';\n}\n.sula-icon.ph-align-left:before {\n content: '\\e50e';\n}\n.sula-icon.ph-align-left-simple:before {\n content: '\\eaee';\n}\n.sula-icon.ph-align-right:before {\n content: '\\e510';\n}\n.sula-icon.ph-align-right-simple:before {\n content: '\\eb12';\n}\n.sula-icon.ph-align-top:before {\n content: '\\e512';\n}\n.sula-icon.ph-align-top-simple:before {\n content: '\\eb14';\n}\n.sula-icon.ph-amazon-logo:before {\n content: '\\e96c';\n}\n.sula-icon.ph-ambulance:before {\n content: '\\e572';\n}\n.sula-icon.ph-anchor:before {\n content: '\\e514';\n}\n.sula-icon.ph-anchor-simple:before {\n content: '\\e5d8';\n}\n.sula-icon.ph-android-logo:before {\n content: '\\e008';\n}\n.sula-icon.ph-angle:before {\n content: '\\e7bc';\n}\n.sula-icon.ph-angular-logo:before {\n content: '\\eb80';\n}\n.sula-icon.ph-aperture:before {\n content: '\\e00a';\n}\n.sula-icon.ph-app-store-logo:before {\n content: '\\e974';\n}\n.sula-icon.ph-app-window:before {\n content: '\\e5da';\n}\n.sula-icon.ph-apple-logo:before {\n content: '\\e516';\n}\n.sula-icon.ph-apple-podcasts-logo:before {\n content: '\\eb96';\n}\n.sula-icon.ph-approximate-equals:before {\n content: '\\edaa';\n}\n.sula-icon.ph-archive:before {\n content: '\\e00c';\n}\n.sula-icon.ph-armchair:before {\n content: '\\e012';\n}\n.sula-icon.ph-arrow-arc-left:before {\n content: '\\e014';\n}\n.sula-icon.ph-arrow-arc-right:before {\n content: '\\e016';\n}\n.sula-icon.ph-arrow-bend-double-up-left:before {\n content: '\\e03a';\n}\n.sula-icon.ph-arrow-bend-double-up-right:before {\n content: '\\e03c';\n}\n.sula-icon.ph-arrow-bend-down-left:before {\n content: '\\e018';\n}\n.sula-icon.ph-arrow-bend-down-right:before {\n content: '\\e01a';\n}\n.sula-icon.ph-arrow-bend-left-down:before {\n content: '\\e01c';\n}\n.sula-icon.ph-arrow-bend-left-up:before {\n content: '\\e01e';\n}\n.sula-icon.ph-arrow-bend-right-down:before {\n content: '\\e020';\n}\n.sula-icon.ph-arrow-bend-right-up:before {\n content: '\\e022';\n}\n.sula-icon.ph-arrow-bend-up-left:before {\n content: '\\e024';\n}\n.sula-icon.ph-arrow-bend-up-right:before {\n content: '\\e026';\n}\n.sula-icon.ph-arrow-circle-down:before {\n content: '\\e028';\n}\n.sula-icon.ph-arrow-circle-down-left:before {\n content: '\\e02a';\n}\n.sula-icon.ph-arrow-circle-down-right:before {\n content: '\\e02c';\n}\n.sula-icon.ph-arrow-circle-left:before {\n content: '\\e05a';\n}\n.sula-icon.ph-arrow-circle-right:before {\n content: '\\e02e';\n}\n.sula-icon.ph-arrow-circle-up:before {\n content: '\\e030';\n}\n.sula-icon.ph-arrow-circle-up-left:before {\n content: '\\e032';\n}\n.sula-icon.ph-arrow-circle-up-right:before {\n content: '\\e034';\n}\n.sula-icon.ph-arrow-clockwise:before {\n content: '\\e036';\n}\n.sula-icon.ph-arrow-counter-clockwise:before {\n content: '\\e038';\n}\n.sula-icon.ph-arrow-down:before {\n content: '\\e03e';\n}\n.sula-icon.ph-arrow-down-left:before {\n content: '\\e040';\n}\n.sula-icon.ph-arrow-down-right:before {\n content: '\\e042';\n}\n.sula-icon.ph-arrow-elbow-down-left:before {\n content: '\\e044';\n}\n.sula-icon.ph-arrow-elbow-down-right:before {\n content: '\\e046';\n}\n.sula-icon.ph-arrow-elbow-left:before {\n content: '\\e048';\n}\n.sula-icon.ph-arrow-elbow-left-down:before {\n content: '\\e04a';\n}\n.sula-icon.ph-arrow-elbow-left-up:before {\n content: '\\e04c';\n}\n.sula-icon.ph-arrow-elbow-right:before {\n content: '\\e04e';\n}\n.sula-icon.ph-arrow-elbow-right-down:before {\n content: '\\e050';\n}\n.sula-icon.ph-arrow-elbow-right-up:before {\n content: '\\e052';\n}\n.sula-icon.ph-arrow-elbow-up-left:before {\n content: '\\e054';\n}\n.sula-icon.ph-arrow-elbow-up-right:before {\n content: '\\e056';\n}\n.sula-icon.ph-arrow-fat-down:before {\n content: '\\e518';\n}\n.sula-icon.ph-arrow-fat-left:before {\n content: '\\e51a';\n}\n.sula-icon.ph-arrow-fat-line-down:before {\n content: '\\e51c';\n}\n.sula-icon.ph-arrow-fat-line-left:before {\n content: '\\e51e';\n}\n.sula-icon.ph-arrow-fat-line-right:before {\n content: '\\e520';\n}\n.sula-icon.ph-arrow-fat-line-up:before {\n content: '\\e522';\n}\n.sula-icon.ph-arrow-fat-lines-down:before {\n content: '\\e524';\n}\n.sula-icon.ph-arrow-fat-lines-left:before {\n content: '\\e526';\n}\n.sula-icon.ph-arrow-fat-lines-right:before {\n content: '\\e528';\n}\n.sula-icon.ph-arrow-fat-lines-up:before {\n content: '\\e52a';\n}\n.sula-icon.ph-arrow-fat-right:before {\n content: '\\e52c';\n}\n.sula-icon.ph-arrow-fat-up:before {\n content: '\\e52e';\n}\n.sula-icon.ph-arrow-left:before {\n content: '\\e058';\n}\n.sula-icon.ph-arrow-line-down:before {\n content: '\\e05c';\n}\n.sula-icon.ph-arrow-line-down-left:before {\n content: '\\e05e';\n}\n.sula-icon.ph-arrow-line-down-right:before {\n content: '\\e060';\n}\n.sula-icon.ph-arrow-line-left:before {\n content: '\\e062';\n}\n.sula-icon.ph-arrow-line-right:before {\n content: '\\e064';\n}\n.sula-icon.ph-arrow-line-up:before {\n content: '\\e066';\n}\n.sula-icon.ph-arrow-line-up-left:before {\n content: '\\e068';\n}\n.sula-icon.ph-arrow-line-up-right:before {\n content: '\\e06a';\n}\n.sula-icon.ph-arrow-right:before {\n content: '\\e06c';\n}\n.sula-icon.ph-arrow-square-down:before {\n content: '\\e06e';\n}\n.sula-icon.ph-arrow-square-down-left:before {\n content: '\\e070';\n}\n.sula-icon.ph-arrow-square-down-right:before {\n content: '\\e072';\n}\n.sula-icon.ph-arrow-square-in:before {\n content: '\\e5dc';\n}\n.sula-icon.ph-arrow-square-left:before {\n content: '\\e074';\n}\n.sula-icon.ph-arrow-square-out:before {\n content: '\\e5de';\n}\n.sula-icon.ph-arrow-square-right:before {\n content: '\\e076';\n}\n.sula-icon.ph-arrow-square-up:before {\n content: '\\e078';\n}\n.sula-icon.ph-arrow-square-up-left:before {\n content: '\\e07a';\n}\n.sula-icon.ph-arrow-square-up-right:before {\n content: '\\e07c';\n}\n.sula-icon.ph-arrow-u-down-left:before {\n content: '\\e07e';\n}\n.sula-icon.ph-arrow-u-down-right:before {\n content: '\\e080';\n}\n.sula-icon.ph-arrow-u-left-down:before {\n content: '\\e082';\n}\n.sula-icon.ph-arrow-u-left-up:before {\n content: '\\e084';\n}\n.sula-icon.ph-arrow-u-right-down:before {\n content: '\\e086';\n}\n.sula-icon.ph-arrow-u-right-up:before {\n content: '\\e088';\n}\n.sula-icon.ph-arrow-u-up-left:before {\n content: '\\e08a';\n}\n.sula-icon.ph-arrow-u-up-right:before {\n content: '\\e08c';\n}\n.sula-icon.ph-arrow-up:before {\n content: '\\e08e';\n}\n.sula-icon.ph-arrow-up-left:before {\n content: '\\e090';\n}\n.sula-icon.ph-arrow-up-right:before {\n content: '\\e092';\n}\n.sula-icon.ph-arrows-clockwise:before {\n content: '\\e094';\n}\n.sula-icon.ph-arrows-counter-clockwise:before {\n content: '\\e096';\n}\n.sula-icon.ph-arrows-down-up:before {\n content: '\\e098';\n}\n.sula-icon.ph-arrows-horizontal:before {\n content: '\\eb06';\n}\n.sula-icon.ph-arrows-in:before {\n content: '\\e09a';\n}\n.sula-icon.ph-arrows-in-cardinal:before {\n content: '\\e09c';\n}\n.sula-icon.ph-arrows-in-line-horizontal:before {\n content: '\\e530';\n}\n.sula-icon.ph-arrows-in-line-vertical:before {\n content: '\\e532';\n}\n.sula-icon.ph-arrows-in-simple:before {\n content: '\\e09e';\n}\n.sula-icon.ph-arrows-left-right:before {\n content: '\\e0a0';\n}\n.sula-icon.ph-arrows-merge:before {\n content: '\\ed3e';\n}\n.sula-icon.ph-arrows-out:before {\n content: '\\e0a2';\n}\n.sula-icon.ph-arrows-out-cardinal:before {\n content: '\\e0a4';\n}\n.sula-icon.ph-arrows-out-line-horizontal:before {\n content: '\\e534';\n}\n.sula-icon.ph-arrows-out-line-vertical:before {\n content: '\\e536';\n}\n.sula-icon.ph-arrows-out-simple:before {\n content: '\\e0a6';\n}\n.sula-icon.ph-arrows-split:before {\n content: '\\ed3c';\n}\n.sula-icon.ph-arrows-vertical:before {\n content: '\\eb04';\n}\n.sula-icon.ph-article:before {\n content: '\\e0a8';\n}\n.sula-icon.ph-article-medium:before {\n content: '\\e5e0';\n}\n.sula-icon.ph-article-ny-times:before {\n content: '\\e5e2';\n}\n.sula-icon.ph-asclepius:before {\n content: '\\ee34';\n}\n.sula-icon.ph-caduceus:before {\n content: '\\ee34';\n}\n.sula-icon.ph-asterisk:before {\n content: '\\e0aa';\n}\n.sula-icon.ph-asterisk-simple:before {\n content: '\\e832';\n}\n.sula-icon.ph-at:before {\n content: '\\e0ac';\n}\n.sula-icon.ph-atom:before {\n content: '\\e5e4';\n}\n.sula-icon.ph-avocado:before {\n content: '\\ee04';\n}\n.sula-icon.ph-axe:before {\n content: '\\e9fc';\n}\n.sula-icon.ph-baby:before {\n content: '\\e774';\n}\n.sula-icon.ph-baby-carriage:before {\n content: '\\e818';\n}\n.sula-icon.ph-backpack:before {\n content: '\\e922';\n}\n.sula-icon.ph-backspace:before {\n content: '\\e0ae';\n}\n.sula-icon.ph-bag:before {\n content: '\\e0b0';\n}\n.sula-icon.ph-bag-simple:before {\n content: '\\e5e6';\n}\n.sula-icon.ph-balloon:before {\n content: '\\e76c';\n}\n.sula-icon.ph-bandaids:before {\n content: '\\e0b2';\n}\n.sula-icon.ph-bank:before {\n content: '\\e0b4';\n}\n.sula-icon.ph-barbell:before {\n content: '\\e0b6';\n}\n.sula-icon.ph-barcode:before {\n content: '\\e0b8';\n}\n.sula-icon.ph-barn:before {\n content: '\\ec72';\n}\n.sula-icon.ph-barricade:before {\n content: '\\e948';\n}\n.sula-icon.ph-baseball:before {\n content: '\\e71a';\n}\n.sula-icon.ph-baseball-cap:before {\n content: '\\ea28';\n}\n.sula-icon.ph-baseball-helmet:before {\n content: '\\ee4a';\n}\n.sula-icon.ph-basket:before {\n content: '\\e964';\n}\n.sula-icon.ph-basketball:before {\n content: '\\e724';\n}\n.sula-icon.ph-bathtub:before {\n content: '\\e81e';\n}\n.sula-icon.ph-battery-charging:before {\n content: '\\e0ba';\n}\n.sula-icon.ph-battery-charging-vertical:before {\n content: '\\e0bc';\n}\n.sula-icon.ph-battery-empty:before {\n content: '\\e0be';\n}\n.sula-icon.ph-battery-full:before {\n content: '\\e0c0';\n}\n.sula-icon.ph-battery-high:before {\n content: '\\e0c2';\n}\n.sula-icon.ph-battery-low:before {\n content: '\\e0c4';\n}\n.sula-icon.ph-battery-medium:before {\n content: '\\e0c6';\n}\n.sula-icon.ph-battery-plus:before {\n content: '\\e808';\n}\n.sula-icon.ph-battery-plus-vertical:before {\n content: '\\ec50';\n}\n.sula-icon.ph-battery-vertical-empty:before {\n content: '\\e7c6';\n}\n.sula-icon.ph-battery-vertical-full:before {\n content: '\\e7c4';\n}\n.sula-icon.ph-battery-vertical-high:before {\n content: '\\e7c2';\n}\n.sula-icon.ph-battery-vertical-low:before {\n content: '\\e7be';\n}\n.sula-icon.ph-battery-vertical-medium:before {\n content: '\\e7c0';\n}\n.sula-icon.ph-battery-warning:before {\n content: '\\e0c8';\n}\n.sula-icon.ph-battery-warning-vertical:before {\n content: '\\e0ca';\n}\n.sula-icon.ph-beach-ball:before {\n content: '\\ed24';\n}\n.sula-icon.ph-beanie:before {\n content: '\\ea2a';\n}\n.sula-icon.ph-bed:before {\n content: '\\e0cc';\n}\n.sula-icon.ph-beer-bottle:before {\n content: '\\e7b0';\n}\n.sula-icon.ph-beer-stein:before {\n content: '\\eb62';\n}\n.sula-icon.ph-behance-logo:before {\n content: '\\e7f4';\n}\n.sula-icon.ph-bell:before {\n content: '\\e0ce';\n}\n.sula-icon.ph-bell-ringing:before {\n content: '\\e5e8';\n}\n.sula-icon.ph-bell-simple:before {\n content: '\\e0d0';\n}\n.sula-icon.ph-bell-simple-ringing:before {\n content: '\\e5ea';\n}\n.sula-icon.ph-bell-simple-slash:before {\n content: '\\e0d2';\n}\n.sula-icon.ph-bell-simple-z:before {\n content: '\\e5ec';\n}\n.sula-icon.ph-bell-slash:before {\n content: '\\e0d4';\n}\n.sula-icon.ph-bell-z:before {\n content: '\\e5ee';\n}\n.sula-icon.ph-belt:before {\n content: '\\ea2c';\n}\n.sula-icon.ph-bezier-curve:before {\n content: '\\eb00';\n}\n.sula-icon.ph-bicycle:before {\n content: '\\e0d6';\n}\n.sula-icon.ph-binary:before {\n content: '\\ee60';\n}\n.sula-icon.ph-binoculars:before {\n content: '\\ea64';\n}\n.sula-icon.ph-biohazard:before {\n content: '\\e9e0';\n}\n.sula-icon.ph-bird:before {\n content: '\\e72c';\n}\n.sula-icon.ph-blueprint:before {\n content: '\\eda0';\n}\n.sula-icon.ph-bluetooth:before {\n content: '\\e0da';\n}\n.sula-icon.ph-bluetooth-connected:before {\n content: '\\e0dc';\n}\n.sula-icon.ph-bluetooth-slash:before {\n content: '\\e0de';\n}\n.sula-icon.ph-bluetooth-x:before {\n content: '\\e0e0';\n}\n.sula-icon.ph-boat:before {\n content: '\\e786';\n}\n.sula-icon.ph-bomb:before {\n content: '\\ee0a';\n}\n.sula-icon.ph-bone:before {\n content: '\\e7f2';\n}\n.sula-icon.ph-book:before {\n content: '\\e0e2';\n}\n.sula-icon.ph-book-bookmark:before {\n content: '\\e0e4';\n}\n.sula-icon.ph-book-open:before {\n content: '\\e0e6';\n}\n.sula-icon.ph-book-open-text:before {\n content: '\\e8f2';\n}\n.sula-icon.ph-book-open-user:before {\n content: '\\ede0';\n}\n.sula-icon.ph-bookmark:before {\n content: '\\e0e8';\n}\n.sula-icon.ph-bookmark-simple:before {\n content: '\\e0ea';\n}\n.sula-icon.ph-bookmarks:before {\n content: '\\e0ec';\n}\n.sula-icon.ph-bookmarks-simple:before {\n content: '\\e5f0';\n}\n.sula-icon.ph-books:before {\n content: '\\e758';\n}\n.sula-icon.ph-boot:before {\n content: '\\ecca';\n}\n.sula-icon.ph-boules:before {\n content: '\\e722';\n}\n.sula-icon.ph-bounding-box:before {\n content: '\\e6ce';\n}\n.sula-icon.ph-bowl-food:before {\n content: '\\eaa4';\n}\n.sula-icon.ph-bowl-steam:before {\n content: '\\e8e4';\n}\n.sula-icon.ph-bowling-ball:before {\n content: '\\ea34';\n}\n.sula-icon.ph-box-arrow-down:before {\n content: '\\e00e';\n}\n.sula-icon.ph-archive-box:before {\n content: '\\e00e';\n}\n.sula-icon.ph-box-arrow-up:before {\n content: '\\ee54';\n}\n.sula-icon.ph-boxing-glove:before {\n content: '\\ea36';\n}\n.sula-icon.ph-brackets-angle:before {\n content: '\\e862';\n}\n.sula-icon.ph-brackets-curly:before {\n content: '\\e860';\n}\n.sula-icon.ph-brackets-round:before {\n content: '\\e864';\n}\n.sula-icon.ph-brackets-square:before {\n content: '\\e85e';\n}\n.sula-icon.ph-brain:before {\n content: '\\e74e';\n}\n.sula-icon.ph-brandy:before {\n content: '\\e6b4';\n}\n.sula-icon.ph-bread:before {\n content: '\\e81c';\n}\n.sula-icon.ph-bridge:before {\n content: '\\ea68';\n}\n.sula-icon.ph-briefcase:before {\n content: '\\e0ee';\n}\n.sula-icon.ph-briefcase-metal:before {\n content: '\\e5f2';\n}\n.sula-icon.ph-broadcast:before {\n content: '\\e0f2';\n}\n.sula-icon.ph-broom:before {\n content: '\\ec54';\n}\n.sula-icon.ph-browser:before {\n content: '\\e0f4';\n}\n.sula-icon.ph-browsers:before {\n content: '\\e0f6';\n}\n.sula-icon.ph-bug:before {\n content: '\\e5f4';\n}\n.sula-icon.ph-bug-beetle:before {\n content: '\\e5f6';\n}\n.sula-icon.ph-bug-droid:before {\n content: '\\e5f8';\n}\n.sula-icon.ph-building:before {\n content: '\\e100';\n}\n.sula-icon.ph-building-apartment:before {\n content: '\\e0fe';\n}\n.sula-icon.ph-building-office:before {\n content: '\\e0ff';\n}\n.sula-icon.ph-buildings:before {\n content: '\\e102';\n}\n.sula-icon.ph-bulldozer:before {\n content: '\\ec6c';\n}\n.sula-icon.ph-bus:before {\n content: '\\e106';\n}\n.sula-icon.ph-butterfly:before {\n content: '\\ea6e';\n}\n.sula-icon.ph-cable-car:before {\n content: '\\e49c';\n}\n.sula-icon.ph-cactus:before {\n content: '\\e918';\n}\n.sula-icon.ph-cake:before {\n content: '\\e780';\n}\n.sula-icon.ph-calculator:before {\n content: '\\e538';\n}\n.sula-icon.ph-calendar:before {\n content: '\\e108';\n}\n.sula-icon.ph-calendar-blank:before {\n content: '\\e10a';\n}\n.sula-icon.ph-calendar-check:before {\n content: '\\e712';\n}\n.sula-icon.ph-calendar-dot:before {\n content: '\\e7b2';\n}\n.sula-icon.ph-calendar-dots:before {\n content: '\\e7b4';\n}\n.sula-icon.ph-calendar-heart:before {\n content: '\\e8b0';\n}\n.sula-icon.ph-calendar-minus:before {\n content: '\\ea14';\n}\n.sula-icon.ph-calendar-plus:before {\n content: '\\e714';\n}\n.sula-icon.ph-calendar-slash:before {\n content: '\\ea12';\n}\n.sula-icon.ph-calendar-star:before {\n content: '\\e8b2';\n}\n.sula-icon.ph-calendar-x:before {\n content: '\\e10c';\n}\n.sula-icon.ph-call-bell:before {\n content: '\\e7de';\n}\n.sula-icon.ph-camera:before {\n content: '\\e10e';\n}\n.sula-icon.ph-camera-plus:before {\n content: '\\ec58';\n}\n.sula-icon.ph-camera-rotate:before {\n content: '\\e7a4';\n}\n.sula-icon.ph-camera-slash:before {\n content: '\\e110';\n}\n.sula-icon.ph-campfire:before {\n content: '\\e9d8';\n}\n.sula-icon.ph-car:before {\n content: '\\e112';\n}\n.sula-icon.ph-car-battery:before {\n content: '\\ee30';\n}\n.sula-icon.ph-car-profile:before {\n content: '\\e8cc';\n}\n.sula-icon.ph-car-simple:before {\n content: '\\e114';\n}\n.sula-icon.ph-cardholder:before {\n content: '\\e5fa';\n}\n.sula-icon.ph-cards:before {\n content: '\\e0f8';\n}\n.sula-icon.ph-cards-three:before {\n content: '\\ee50';\n}\n.sula-icon.ph-caret-circle-double-down:before {\n content: '\\e116';\n}\n.sula-icon.ph-caret-circle-double-left:before {\n content: '\\e118';\n}\n.sula-icon.ph-caret-circle-double-right:before {\n content: '\\e11a';\n}\n.sula-icon.ph-caret-circle-double-up:before {\n content: '\\e11c';\n}\n.sula-icon.ph-caret-circle-down:before {\n content: '\\e11e';\n}\n.sula-icon.ph-caret-circle-left:before {\n content: '\\e120';\n}\n.sula-icon.ph-caret-circle-right:before {\n content: '\\e122';\n}\n.sula-icon.ph-caret-circle-up:before {\n content: '\\e124';\n}\n.sula-icon.ph-caret-circle-up-down:before {\n content: '\\e13e';\n}\n.sula-icon.ph-caret-double-down:before {\n content: '\\e126';\n}\n.sula-icon.ph-caret-double-left:before {\n content: '\\e128';\n}\n.sula-icon.ph-caret-double-right:before {\n content: '\\e12a';\n}\n.sula-icon.ph-caret-double-up:before {\n content: '\\e12c';\n}\n.sula-icon.ph-caret-down:before {\n content: '\\e136';\n}\n.sula-icon.ph-caret-left:before {\n content: '\\e138';\n}\n.sula-icon.ph-caret-line-down:before {\n content: '\\e134';\n}\n.sula-icon.ph-caret-line-left:before {\n content: '\\e132';\n}\n.sula-icon.ph-caret-line-right:before {\n content: '\\e130';\n}\n.sula-icon.ph-caret-line-up:before {\n content: '\\e12e';\n}\n.sula-icon.ph-caret-right:before {\n content: '\\e13a';\n}\n.sula-icon.ph-caret-up:before {\n content: '\\e13c';\n}\n.sula-icon.ph-caret-up-down:before {\n content: '\\e140';\n}\n.sula-icon.ph-carrot:before {\n content: '\\ed38';\n}\n.sula-icon.ph-cash-register:before {\n content: '\\ed80';\n}\n.sula-icon.ph-cassette-tape:before {\n content: '\\ed2e';\n}\n.sula-icon.ph-castle-turret:before {\n content: '\\e9d0';\n}\n.sula-icon.ph-cat:before {\n content: '\\e748';\n}\n.sula-icon.ph-cell-signal-full:before {\n content: '\\e142';\n}\n.sula-icon.ph-cell-signal-high:before {\n content: '\\e144';\n}\n.sula-icon.ph-cell-signal-low:before {\n content: '\\e146';\n}\n.sula-icon.ph-cell-signal-medium:before {\n content: '\\e148';\n}\n.sula-icon.ph-cell-signal-none:before {\n content: '\\e14a';\n}\n.sula-icon.ph-cell-signal-slash:before {\n content: '\\e14c';\n}\n.sula-icon.ph-cell-signal-x:before {\n content: '\\e14e';\n}\n.sula-icon.ph-cell-tower:before {\n content: '\\ebaa';\n}\n.sula-icon.ph-certificate:before {\n content: '\\e766';\n}\n.sula-icon.ph-chair:before {\n content: '\\e950';\n}\n.sula-icon.ph-chalkboard:before {\n content: '\\e5fc';\n}\n.sula-icon.ph-chalkboard-simple:before {\n content: '\\e5fe';\n}\n.sula-icon.ph-chalkboard-teacher:before {\n content: '\\e600';\n}\n.sula-icon.ph-champagne:before {\n content: '\\eaca';\n}\n.sula-icon.ph-charging-station:before {\n content: '\\e8d0';\n}\n.sula-icon.ph-chart-bar:before {\n content: '\\e150';\n}\n.sula-icon.ph-chart-bar-horizontal:before {\n content: '\\e152';\n}\n.sula-icon.ph-chart-donut:before {\n content: '\\eaa6';\n}\n.sula-icon.ph-chart-line:before {\n content: '\\e154';\n}\n.sula-icon.ph-chart-line-down:before {\n content: '\\e8b6';\n}\n.sula-icon.ph-chart-line-up:before {\n content: '\\e156';\n}\n.sula-icon.ph-chart-pie:before {\n content: '\\e158';\n}\n.sula-icon.ph-chart-pie-slice:before {\n content: '\\e15a';\n}\n.sula-icon.ph-chart-polar:before {\n content: '\\eaa8';\n}\n.sula-icon.ph-chart-scatter:before {\n content: '\\eaac';\n}\n.sula-icon.ph-chat:before {\n content: '\\e15c';\n}\n.sula-icon.ph-chat-centered:before {\n content: '\\e160';\n}\n.sula-icon.ph-chat-centered-dots:before {\n content: '\\e164';\n}\n.sula-icon.ph-chat-centered-slash:before {\n content: '\\e162';\n}\n.sula-icon.ph-chat-centered-text:before {\n content: '\\e166';\n}\n.sula-icon.ph-chat-circle:before {\n content: '\\e168';\n}\n.sula-icon.ph-chat-circle-dots:before {\n content: '\\e16c';\n}\n.sula-icon.ph-chat-circle-slash:before {\n content: '\\e16a';\n}\n.sula-icon.ph-chat-circle-text:before {\n content: '\\e16e';\n}\n.sula-icon.ph-chat-dots:before {\n content: '\\e170';\n}\n.sula-icon.ph-chat-slash:before {\n content: '\\e15e';\n}\n.sula-icon.ph-chat-teardrop:before {\n content: '\\e172';\n}\n.sula-icon.ph-chat-teardrop-dots:before {\n content: '\\e176';\n}\n.sula-icon.ph-chat-teardrop-slash:before {\n content: '\\e174';\n}\n.sula-icon.ph-chat-teardrop-text:before {\n content: '\\e178';\n}\n.sula-icon.ph-chat-text:before {\n content: '\\e17a';\n}\n.sula-icon.ph-chats:before {\n content: '\\e17c';\n}\n.sula-icon.ph-chats-circle:before {\n content: '\\e17e';\n}\n.sula-icon.ph-chats-teardrop:before {\n content: '\\e180';\n}\n.sula-icon.ph-check:before {\n content: '\\e182';\n}\n.sula-icon.ph-check-circle:before {\n content: '\\e184';\n}\n.sula-icon.ph-check-fat:before {\n content: '\\eba6';\n}\n.sula-icon.ph-check-square:before {\n content: '\\e186';\n}\n.sula-icon.ph-check-square-offset:before {\n content: '\\e188';\n}\n.sula-icon.ph-checkerboard:before {\n content: '\\e8c4';\n}\n.sula-icon.ph-checks:before {\n content: '\\e53a';\n}\n.sula-icon.ph-cheers:before {\n content: '\\ea4a';\n}\n.sula-icon.ph-cheese:before {\n content: '\\e9fe';\n}\n.sula-icon.ph-chef-hat:before {\n content: '\\ed8e';\n}\n.sula-icon.ph-cherries:before {\n content: '\\e830';\n}\n.sula-icon.ph-church:before {\n content: '\\ecea';\n}\n.sula-icon.ph-cigarette:before {\n content: '\\ed90';\n}\n.sula-icon.ph-cigarette-slash:before {\n content: '\\ed92';\n}\n.sula-icon.ph-circle:before {\n content: '\\e18a';\n}\n.sula-icon.ph-circle-dashed:before {\n content: '\\e602';\n}\n.sula-icon.ph-circle-half:before {\n content: '\\e18c';\n}\n.sula-icon.ph-circle-half-tilt:before {\n content: '\\e18e';\n}\n.sula-icon.ph-circle-notch:before {\n content: '\\eb44';\n}\n.sula-icon.ph-circles-four:before {\n content: '\\e190';\n}\n.sula-icon.ph-circles-three:before {\n content: '\\e192';\n}\n.sula-icon.ph-circles-three-plus:before {\n content: '\\e194';\n}\n.sula-icon.ph-circuitry:before {\n content: '\\e9c2';\n}\n.sula-icon.ph-city:before {\n content: '\\ea6a';\n}\n.sula-icon.ph-clipboard:before {\n content: '\\e196';\n}\n.sula-icon.ph-clipboard-text:before {\n content: '\\e198';\n}\n.sula-icon.ph-clock:before {\n content: '\\e19a';\n}\n.sula-icon.ph-clock-afternoon:before {\n content: '\\e19c';\n}\n.sula-icon.ph-clock-clockwise:before {\n content: '\\e19e';\n}\n.sula-icon.ph-clock-countdown:before {\n content: '\\ed2c';\n}\n.sula-icon.ph-clock-counter-clockwise:before {\n content: '\\e1a0';\n}\n.sula-icon.ph-clock-user:before {\n content: '\\edec';\n}\n.sula-icon.ph-closed-captioning:before {\n content: '\\e1a4';\n}\n.sula-icon.ph-cloud:before {\n content: '\\e1aa';\n}\n.sula-icon.ph-cloud-arrow-down:before {\n content: '\\e1ac';\n}\n.sula-icon.ph-cloud-arrow-up:before {\n content: '\\e1ae';\n}\n.sula-icon.ph-cloud-check:before {\n content: '\\e1b0';\n}\n.sula-icon.ph-cloud-fog:before {\n content: '\\e53c';\n}\n.sula-icon.ph-cloud-lightning:before {\n content: '\\e1b2';\n}\n.sula-icon.ph-cloud-moon:before {\n content: '\\e53e';\n}\n.sula-icon.ph-cloud-rain:before {\n content: '\\e1b4';\n}\n.sula-icon.ph-cloud-slash:before {\n content: '\\e1b6';\n}\n.sula-icon.ph-cloud-snow:before {\n content: '\\e1b8';\n}\n.sula-icon.ph-cloud-sun:before {\n content: '\\e540';\n}\n.sula-icon.ph-cloud-warning:before {\n content: '\\ea98';\n}\n.sula-icon.ph-cloud-x:before {\n content: '\\ea96';\n}\n.sula-icon.ph-clover:before {\n content: '\\edc8';\n}\n.sula-icon.ph-club:before {\n content: '\\e1ba';\n}\n.sula-icon.ph-coat-hanger:before {\n content: '\\e7fe';\n}\n.sula-icon.ph-coda-logo:before {\n content: '\\e7ce';\n}\n.sula-icon.ph-code:before {\n content: '\\e1bc';\n}\n.sula-icon.ph-code-block:before {\n content: '\\eafe';\n}\n.sula-icon.ph-code-simple:before {\n content: '\\e1be';\n}\n.sula-icon.ph-codepen-logo:before {\n content: '\\e978';\n}\n.sula-icon.ph-codesandbox-logo:before {\n content: '\\ea06';\n}\n.sula-icon.ph-coffee:before {\n content: '\\e1c2';\n}\n.sula-icon.ph-coffee-bean:before {\n content: '\\e1c0';\n}\n.sula-icon.ph-coin:before {\n content: '\\e60e';\n}\n.sula-icon.ph-coin-vertical:before {\n content: '\\eb48';\n}\n.sula-icon.ph-coins:before {\n content: '\\e78e';\n}\n.sula-icon.ph-columns:before {\n content: '\\e546';\n}\n.sula-icon.ph-columns-plus-left:before {\n content: '\\e544';\n}\n.sula-icon.ph-columns-plus-right:before {\n content: '\\e542';\n}\n.sula-icon.ph-command:before {\n content: '\\e1c4';\n}\n.sula-icon.ph-compass:before {\n content: '\\e1c8';\n}\n.sula-icon.ph-compass-rose:before {\n content: '\\e1c6';\n}\n.sula-icon.ph-compass-tool:before {\n content: '\\ea0e';\n}\n.sula-icon.ph-computer-tower:before {\n content: '\\e548';\n}\n.sula-icon.ph-confetti:before {\n content: '\\e81a';\n}\n.sula-icon.ph-contactless-payment:before {\n content: '\\ed42';\n}\n.sula-icon.ph-control:before {\n content: '\\eca6';\n}\n.sula-icon.ph-cookie:before {\n content: '\\e6ca';\n}\n.sula-icon.ph-cooking-pot:before {\n content: '\\e764';\n}\n.sula-icon.ph-copy:before {\n content: '\\e1ca';\n}\n.sula-icon.ph-copy-simple:before {\n content: '\\e1cc';\n}\n.sula-icon.ph-copyleft:before {\n content: '\\e86a';\n}\n.sula-icon.ph-copyright:before {\n content: '\\e54a';\n}\n.sula-icon.ph-corners-in:before {\n content: '\\e1ce';\n}\n.sula-icon.ph-corners-out:before {\n content: '\\e1d0';\n}\n.sula-icon.ph-couch:before {\n content: '\\e7f6';\n}\n.sula-icon.ph-court-basketball:before {\n content: '\\ee36';\n}\n.sula-icon.ph-cow:before {\n content: '\\eabe';\n}\n.sula-icon.ph-cowboy-hat:before {\n content: '\\ed12';\n}\n.sula-icon.ph-cpu:before {\n content: '\\e610';\n}\n.sula-icon.ph-crane:before {\n content: '\\ed48';\n}\n.sula-icon.ph-crane-tower:before {\n content: '\\ed49';\n}\n.sula-icon.ph-credit-card:before {\n content: '\\e1d2';\n}\n.sula-icon.ph-cricket:before {\n content: '\\ee12';\n}\n.sula-icon.ph-crop:before {\n content: '\\e1d4';\n}\n.sula-icon.ph-cross:before {\n content: '\\e8a0';\n}\n.sula-icon.ph-crosshair:before {\n content: '\\e1d6';\n}\n.sula-icon.ph-crosshair-simple:before {\n content: '\\e1d8';\n}\n.sula-icon.ph-crown:before {\n content: '\\e614';\n}\n.sula-icon.ph-crown-cross:before {\n content: '\\ee5e';\n}\n.sula-icon.ph-crown-simple:before {\n content: '\\e616';\n}\n.sula-icon.ph-cube:before {\n content: '\\e1da';\n}\n.sula-icon.ph-cube-focus:before {\n content: '\\ed0a';\n}\n.sula-icon.ph-cube-transparent:before {\n content: '\\ec7c';\n}\n.sula-icon.ph-currency-btc:before {\n content: '\\e618';\n}\n.sula-icon.ph-currency-circle-dollar:before {\n content: '\\e54c';\n}\n.sula-icon.ph-currency-cny:before {\n content: '\\e54e';\n}\n.sula-icon.ph-currency-dollar:before {\n content: '\\e550';\n}\n.sula-icon.ph-currency-dollar-simple:before {\n content: '\\e552';\n}\n.sula-icon.ph-currency-eth:before {\n content: '\\eada';\n}\n.sula-icon.ph-currency-eur:before {\n content: '\\e554';\n}\n.sula-icon.ph-currency-gbp:before {\n content: '\\e556';\n}\n.sula-icon.ph-currency-inr:before {\n content: '\\e558';\n}\n.sula-icon.ph-currency-jpy:before {\n content: '\\e55a';\n}\n.sula-icon.ph-currency-krw:before {\n content: '\\e55c';\n}\n.sula-icon.ph-currency-kzt:before {\n content: '\\ec4c';\n}\n.sula-icon.ph-currency-ngn:before {\n content: '\\eb52';\n}\n.sula-icon.ph-currency-rub:before {\n content: '\\e55e';\n}\n.sula-icon.ph-cursor:before {\n content: '\\e1dc';\n}\n.sula-icon.ph-cursor-click:before {\n content: '\\e7c8';\n}\n.sula-icon.ph-cursor-text:before {\n content: '\\e7d8';\n}\n.sula-icon.ph-cylinder:before {\n content: '\\e8fc';\n}\n.sula-icon.ph-database:before {\n content: '\\e1de';\n}\n.sula-icon.ph-desk:before {\n content: '\\ed16';\n}\n.sula-icon.ph-desktop:before {\n content: '\\e560';\n}\n.sula-icon.ph-desktop-tower:before {\n content: '\\e562';\n}\n.sula-icon.ph-detective:before {\n content: '\\e83e';\n}\n.sula-icon.ph-dev-to-logo:before {\n content: '\\ed0e';\n}\n.sula-icon.ph-device-mobile:before {\n content: '\\e1e0';\n}\n.sula-icon.ph-device-mobile-camera:before {\n content: '\\e1e2';\n}\n.sula-icon.ph-device-mobile-slash:before {\n content: '\\ee46';\n}\n.sula-icon.ph-device-mobile-speaker:before {\n content: '\\e1e4';\n}\n.sula-icon.ph-device-rotate:before {\n content: '\\edf2';\n}\n.sula-icon.ph-device-tablet:before {\n content: '\\e1e6';\n}\n.sula-icon.ph-device-tablet-camera:before {\n content: '\\e1e8';\n}\n.sula-icon.ph-device-tablet-speaker:before {\n content: '\\e1ea';\n}\n.sula-icon.ph-devices:before {\n content: '\\eba4';\n}\n.sula-icon.ph-diamond:before {\n content: '\\e1ec';\n}\n.sula-icon.ph-diamonds-four:before {\n content: '\\e8f4';\n}\n.sula-icon.ph-dice-five:before {\n content: '\\e1ee';\n}\n.sula-icon.ph-dice-four:before {\n content: '\\e1f0';\n}\n.sula-icon.ph-dice-one:before {\n content: '\\e1f2';\n}\n.sula-icon.ph-dice-six:before {\n content: '\\e1f4';\n}\n.sula-icon.ph-dice-three:before {\n content: '\\e1f6';\n}\n.sula-icon.ph-dice-two:before {\n content: '\\e1f8';\n}\n.sula-icon.ph-disc:before {\n content: '\\e564';\n}\n.sula-icon.ph-disco-ball:before {\n content: '\\ed98';\n}\n.sula-icon.ph-discord-logo:before {\n content: '\\e61a';\n}\n.sula-icon.ph-divide:before {\n content: '\\e1fa';\n}\n.sula-icon.ph-dna:before {\n content: '\\e924';\n}\n.sula-icon.ph-dog:before {\n content: '\\e74a';\n}\n.sula-icon.ph-door:before {\n content: '\\e61c';\n}\n.sula-icon.ph-door-open:before {\n content: '\\e7e6';\n}\n.sula-icon.ph-dot:before {\n content: '\\ecde';\n}\n.sula-icon.ph-dot-outline:before {\n content: '\\ece0';\n}\n.sula-icon.ph-dots-nine:before {\n content: '\\e1fc';\n}\n.sula-icon.ph-dots-six:before {\n content: '\\e794';\n}\n.sula-icon.ph-dots-six-vertical:before {\n content: '\\eae2';\n}\n.sula-icon.ph-dots-three:before {\n content: '\\e1fe';\n}\n.sula-icon.ph-dots-three-circle:before {\n content: '\\e200';\n}\n.sula-icon.ph-dots-three-circle-vertical:before {\n content: '\\e202';\n}\n.sula-icon.ph-dots-three-outline:before {\n content: '\\e204';\n}\n.sula-icon.ph-dots-three-outline-vertical:before {\n content: '\\e206';\n}\n.sula-icon.ph-dots-three-vertical:before {\n content: '\\e208';\n}\n.sula-icon.ph-download:before {\n content: '\\e20a';\n}\n.sula-icon.ph-download-simple:before {\n content: '\\e20c';\n}\n.sula-icon.ph-dress:before {\n content: '\\ea7e';\n}\n.sula-icon.ph-dresser:before {\n content: '\\e94e';\n}\n.sula-icon.ph-dribbble-logo:before {\n content: '\\e20e';\n}\n.sula-icon.ph-drone:before {\n content: '\\ed74';\n}\n.sula-icon.ph-drop:before {\n content: '\\e210';\n}\n.sula-icon.ph-drop-half:before {\n content: '\\e566';\n}\n.sula-icon.ph-drop-half-bottom:before {\n content: '\\eb40';\n}\n.sula-icon.ph-drop-simple:before {\n content: '\\ee32';\n}\n.sula-icon.ph-drop-slash:before {\n content: '\\e954';\n}\n.sula-icon.ph-dropbox-logo:before {\n content: '\\e7d0';\n}\n.sula-icon.ph-ear:before {\n content: '\\e70c';\n}\n.sula-icon.ph-ear-slash:before {\n content: '\\e70e';\n}\n.sula-icon.ph-egg:before {\n content: '\\e812';\n}\n.sula-icon.ph-egg-crack:before {\n content: '\\eb64';\n}\n.sula-icon.ph-eject:before {\n content: '\\e212';\n}\n.sula-icon.ph-eject-simple:before {\n content: '\\e6ae';\n}\n.sula-icon.ph-elevator:before {\n content: '\\ecc0';\n}\n.sula-icon.ph-empty:before {\n content: '\\edbc';\n}\n.sula-icon.ph-engine:before {\n content: '\\ea80';\n}\n.sula-icon.ph-envelope:before {\n content: '\\e214';\n}\n.sula-icon.ph-envelope-open:before {\n content: '\\e216';\n}\n.sula-icon.ph-envelope-simple:before {\n content: '\\e218';\n}\n.sula-icon.ph-envelope-simple-open:before {\n content: '\\e21a';\n}\n.sula-icon.ph-equalizer:before {\n content: '\\ebbc';\n}\n.sula-icon.ph-equals:before {\n content: '\\e21c';\n}\n.sula-icon.ph-eraser:before {\n content: '\\e21e';\n}\n.sula-icon.ph-escalator-down:before {\n content: '\\ecba';\n}\n.sula-icon.ph-escalator-up:before {\n content: '\\ecbc';\n}\n.sula-icon.ph-exam:before {\n content: '\\e742';\n}\n.sula-icon.ph-exclamation-mark:before {\n content: '\\ee44';\n}\n.sula-icon.ph-exclude:before {\n content: '\\e882';\n}\n.sula-icon.ph-exclude-square:before {\n content: '\\e880';\n}\n.sula-icon.ph-export:before {\n content: '\\eaf0';\n}\n.sula-icon.ph-eye:before {\n content: '\\e220';\n}\n.sula-icon.ph-eye-closed:before {\n content: '\\e222';\n}\n.sula-icon.ph-eye-slash:before {\n content: '\\e224';\n}\n.sula-icon.ph-eyedropper:before {\n content: '\\e568';\n}\n.sula-icon.ph-eyedropper-sample:before {\n content: '\\eac4';\n}\n.sula-icon.ph-eyeglasses:before {\n content: '\\e7ba';\n}\n.sula-icon.ph-eyes:before {\n content: '\\ee5c';\n}\n.sula-icon.ph-face-mask:before {\n content: '\\e56a';\n}\n.sula-icon.ph-facebook-logo:before {\n content: '\\e226';\n}\n.sula-icon.ph-factory:before {\n content: '\\e760';\n}\n.sula-icon.ph-faders:before {\n content: '\\e228';\n}\n.sula-icon.ph-faders-horizontal:before {\n content: '\\e22a';\n}\n.sula-icon.ph-fallout-shelter:before {\n content: '\\e9de';\n}\n.sula-icon.ph-fan:before {\n content: '\\e9f2';\n}\n.sula-icon.ph-farm:before {\n content: '\\ec70';\n}\n.sula-icon.ph-fast-forward:before {\n content: '\\e6a6';\n}\n.sula-icon.ph-fast-forward-circle:before {\n content: '\\e22c';\n}\n.sula-icon.ph-feather:before {\n content: '\\e9c0';\n}\n.sula-icon.ph-fediverse-logo:before {\n content: '\\ed66';\n}\n.sula-icon.ph-figma-logo:before {\n content: '\\e22e';\n}\n.sula-icon.ph-file:before {\n content: '\\e230';\n}\n.sula-icon.ph-file-archive:before {\n content: '\\eb2a';\n}\n.sula-icon.ph-file-arrow-down:before {\n content: '\\e232';\n}\n.sula-icon.ph-file-arrow-up:before {\n content: '\\e61e';\n}\n.sula-icon.ph-file-audio:before {\n content: '\\ea20';\n}\n.sula-icon.ph-file-c:before {\n content: '\\eb32';\n}\n.sula-icon.ph-file-c-sharp:before {\n content: '\\eb30';\n}\n.sula-icon.ph-file-cloud:before {\n content: '\\e95e';\n}\n.sula-icon.ph-file-code:before {\n content: '\\e914';\n}\n.sula-icon.ph-file-cpp:before {\n content: '\\eb2e';\n}\n.sula-icon.ph-file-css:before {\n content: '\\eb34';\n}\n.sula-icon.ph-file-csv:before {\n content: '\\eb1c';\n}\n.sula-icon.ph-file-dashed:before {\n content: '\\e704';\n}\n.sula-icon.ph-file-dotted:before {\n content: '\\e704';\n}\n.sula-icon.ph-file-doc:before {\n content: '\\eb1e';\n}\n.sula-icon.ph-file-html:before {\n content: '\\eb38';\n}\n.sula-icon.ph-file-image:before {\n content: '\\ea24';\n}\n.sula-icon.ph-file-ini:before {\n content: '\\eb33';\n}\n.sula-icon.ph-file-jpg:before {\n content: '\\eb1a';\n}\n.sula-icon.ph-file-js:before {\n content: '\\eb24';\n}\n.sula-icon.ph-file-jsx:before {\n content: '\\eb3a';\n}\n.sula-icon.ph-file-lock:before {\n content: '\\e95c';\n}\n.sula-icon.ph-file-magnifying-glass:before {\n content: '\\e238';\n}\n.sula-icon.ph-file-search:before {\n content: '\\e238';\n}\n.sula-icon.ph-file-md:before {\n content: '\\ed50';\n}\n.sula-icon.ph-file-minus:before {\n content: '\\e234';\n}\n.sula-icon.ph-file-pdf:before {\n content: '\\e702';\n}\n.sula-icon.ph-file-plus:before {\n content: '\\e236';\n}\n.sula-icon.ph-file-png:before {\n content: '\\eb18';\n}\n.sula-icon.ph-file-ppt:before {\n content: '\\eb20';\n}\n.sula-icon.ph-file-py:before {\n content: '\\eb2c';\n}\n.sula-icon.ph-file-rs:before {\n content: '\\eb28';\n}\n.sula-icon.ph-file-sql:before {\n content: '\\ed4e';\n}\n.sula-icon.ph-file-svg:before {\n content: '\\ed08';\n}\n.sula-icon.ph-file-text:before {\n content: '\\e23a';\n}\n.sula-icon.ph-file-ts:before {\n content: '\\eb26';\n}\n.sula-icon.ph-file-tsx:before {\n content: '\\eb3c';\n}\n.sula-icon.ph-file-txt:before {\n content: '\\eb35';\n}\n.sula-icon.ph-file-video:before {\n content: '\\ea22';\n}\n.sula-icon.ph-file-vue:before {\n content: '\\eb3e';\n}\n.sula-icon.ph-file-x:before {\n content: '\\e23c';\n}\n.sula-icon.ph-file-xls:before {\n content: '\\eb22';\n}\n.sula-icon.ph-file-zip:before {\n content: '\\e958';\n}\n.sula-icon.ph-files:before {\n content: '\\e710';\n}\n.sula-icon.ph-film-reel:before {\n content: '\\e8c0';\n}\n.sula-icon.ph-film-script:before {\n content: '\\eb50';\n}\n.sula-icon.ph-film-slate:before {\n content: '\\e8c2';\n}\n.sula-icon.ph-film-strip:before {\n content: '\\e792';\n}\n.sula-icon.ph-fingerprint:before {\n content: '\\e23e';\n}\n.sula-icon.ph-fingerprint-simple:before {\n content: '\\e240';\n}\n.sula-icon.ph-finn-the-human:before {\n content: '\\e56c';\n}\n.sula-icon.ph-fire:before {\n content: '\\e242';\n}\n.sula-icon.ph-fire-extinguisher:before {\n content: '\\e9e8';\n}\n.sula-icon.ph-fire-simple:before {\n content: '\\e620';\n}\n.sula-icon.ph-fire-truck:before {\n content: '\\e574';\n}\n.sula-icon.ph-first-aid:before {\n content: '\\e56e';\n}\n.sula-icon.ph-first-aid-kit:before {\n content: '\\e570';\n}\n.sula-icon.ph-fish:before {\n content: '\\e728';\n}\n.sula-icon.ph-fish-simple:before {\n content: '\\e72a';\n}\n.sula-icon.ph-flag:before {\n content: '\\e244';\n}\n.sula-icon.ph-flag-banner:before {\n content: '\\e622';\n}\n.sula-icon.ph-flag-banner-fold:before {\n content: '\\ecf2';\n}\n.sula-icon.ph-flag-checkered:before {\n content: '\\ea38';\n}\n.sula-icon.ph-flag-pennant:before {\n content: '\\ecf0';\n}\n.sula-icon.ph-flame:before {\n content: '\\e624';\n}\n.sula-icon.ph-flashlight:before {\n content: '\\e246';\n}\n.sula-icon.ph-flask:before {\n content: '\\e79e';\n}\n.sula-icon.ph-flip-horizontal:before {\n content: '\\ed6a';\n}\n.sula-icon.ph-flip-vertical:before {\n content: '\\ed6c';\n}\n.sula-icon.ph-floppy-disk:before {\n content: '\\e248';\n}\n.sula-icon.ph-floppy-disk-back:before {\n content: '\\eaf4';\n}\n.sula-icon.ph-flow-arrow:before {\n content: '\\e6ec';\n}\n.sula-icon.ph-flower:before {\n content: '\\e75e';\n}\n.sula-icon.ph-flower-lotus:before {\n content: '\\e6cc';\n}\n.sula-icon.ph-flower-tulip:before {\n content: '\\eacc';\n}\n.sula-icon.ph-flying-saucer:before {\n content: '\\eb4a';\n}\n.sula-icon.ph-folder:before {\n content: '\\e24a';\n}\n.sula-icon.ph-folder-notch:before {\n content: '\\e24a';\n}\n.sula-icon.ph-folder-dashed:before {\n content: '\\e8f8';\n}\n.sula-icon.ph-folder-dotted:before {\n content: '\\e8f8';\n}\n.sula-icon.ph-folder-lock:before {\n content: '\\ea3c';\n}\n.sula-icon.ph-folder-minus:before {\n content: '\\e254';\n}\n.sula-icon.ph-folder-notch-minus:before {\n content: '\\e254';\n}\n.sula-icon.ph-folder-open:before {\n content: '\\e256';\n}\n.sula-icon.ph-folder-notch-open:before {\n content: '\\e256';\n}\n.sula-icon.ph-folder-plus:before {\n content: '\\e258';\n}\n.sula-icon.ph-folder-notch-plus:before {\n content: '\\e258';\n}\n.sula-icon.ph-folder-simple:before {\n content: '\\e25a';\n}\n.sula-icon.ph-folder-simple-dashed:before {\n content: '\\ec2a';\n}\n.sula-icon.ph-folder-simple-dotted:before {\n content: '\\ec2a';\n}\n.sula-icon.ph-folder-simple-lock:before {\n content: '\\eb5e';\n}\n.sula-icon.ph-folder-simple-minus:before {\n content: '\\e25c';\n}\n.sula-icon.ph-folder-simple-plus:before {\n content: '\\e25e';\n}\n.sula-icon.ph-folder-simple-star:before {\n content: '\\ec2e';\n}\n.sula-icon.ph-folder-simple-user:before {\n content: '\\eb60';\n}\n.sula-icon.ph-folder-star:before {\n content: '\\ea86';\n}\n.sula-icon.ph-folder-user:before {\n content: '\\eb46';\n}\n.sula-icon.ph-folders:before {\n content: '\\e260';\n}\n.sula-icon.ph-football:before {\n content: '\\e718';\n}\n.sula-icon.ph-football-helmet:before {\n content: '\\ee4c';\n}\n.sula-icon.ph-footprints:before {\n content: '\\ea88';\n}\n.sula-icon.ph-fork-knife:before {\n content: '\\e262';\n}\n.sula-icon.ph-four-k:before {\n content: '\\ea5c';\n}\n.sula-icon.ph-frame-corners:before {\n content: '\\e626';\n}\n.sula-icon.ph-framer-logo:before {\n content: '\\e264';\n}\n.sula-icon.ph-function:before {\n content: '\\ebe4';\n}\n.sula-icon.ph-funnel:before {\n content: '\\e266';\n}\n.sula-icon.ph-funnel-simple:before {\n content: '\\e268';\n}\n.sula-icon.ph-funnel-simple-x:before {\n content: '\\e26a';\n}\n.sula-icon.ph-funnel-x:before {\n content: '\\e26c';\n}\n.sula-icon.ph-game-controller:before {\n content: '\\e26e';\n}\n.sula-icon.ph-garage:before {\n content: '\\ecd6';\n}\n.sula-icon.ph-gas-can:before {\n content: '\\e8ce';\n}\n.sula-icon.ph-gas-pump:before {\n content: '\\e768';\n}\n.sula-icon.ph-gauge:before {\n content: '\\e628';\n}\n.sula-icon.ph-gavel:before {\n content: '\\ea32';\n}\n.sula-icon.ph-gear:before {\n content: '\\e270';\n}\n.sula-icon.ph-gear-fine:before {\n content: '\\e87c';\n}\n.sula-icon.ph-gear-six:before {\n content: '\\e272';\n}\n.sula-icon.ph-gender-female:before {\n content: '\\e6e0';\n}\n.sula-icon.ph-gender-intersex:before {\n content: '\\e6e6';\n}\n.sula-icon.ph-gender-male:before {\n content: '\\e6e2';\n}\n.sula-icon.ph-gender-neuter:before {\n content: '\\e6ea';\n}\n.sula-icon.ph-gender-nonbinary:before {\n content: '\\e6e4';\n}\n.sula-icon.ph-gender-transgender:before {\n content: '\\e6e8';\n}\n.sula-icon.ph-ghost:before {\n content: '\\e62a';\n}\n.sula-icon.ph-gif:before {\n content: '\\e274';\n}\n.sula-icon.ph-gift:before {\n content: '\\e276';\n}\n.sula-icon.ph-git-branch:before {\n content: '\\e278';\n}\n.sula-icon.ph-git-commit:before {\n content: '\\e27a';\n}\n.sula-icon.ph-git-diff:before {\n content: '\\e27c';\n}\n.sula-icon.ph-git-fork:before {\n content: '\\e27e';\n}\n.sula-icon.ph-git-merge:before {\n content: '\\e280';\n}\n.sula-icon.ph-git-pull-request:before {\n content: '\\e282';\n}\n.sula-icon.ph-github-logo:before {\n content: '\\e576';\n}\n.sula-icon.ph-gitlab-logo:before {\n content: '\\e694';\n}\n.sula-icon.ph-gitlab-logo-simple:before {\n content: '\\e696';\n}\n.sula-icon.ph-globe:before {\n content: '\\e288';\n}\n.sula-icon.ph-globe-hemisphere-east:before {\n content: '\\e28a';\n}\n.sula-icon.ph-globe-hemisphere-west:before {\n content: '\\e28c';\n}\n.sula-icon.ph-globe-simple:before {\n content: '\\e28e';\n}\n.sula-icon.ph-globe-simple-x:before {\n content: '\\e284';\n}\n.sula-icon.ph-globe-stand:before {\n content: '\\e290';\n}\n.sula-icon.ph-globe-x:before {\n content: '\\e286';\n}\n.sula-icon.ph-goggles:before {\n content: '\\ecb4';\n}\n.sula-icon.ph-golf:before {\n content: '\\ea3e';\n}\n.sula-icon.ph-goodreads-logo:before {\n content: '\\ed10';\n}\n.sula-icon.ph-google-cardboard-logo:before {\n content: '\\e7b6';\n}\n.sula-icon.ph-google-chrome-logo:before {\n content: '\\e976';\n}\n.sula-icon.ph-google-drive-logo:before {\n content: '\\e8f6';\n}\n.sula-icon.ph-google-logo:before {\n content: '\\e292';\n}\n.sula-icon.ph-google-photos-logo:before {\n content: '\\eb92';\n}\n.sula-icon.ph-google-play-logo:before {\n content: '\\e294';\n}\n.sula-icon.ph-google-podcasts-logo:before {\n content: '\\eb94';\n}\n.sula-icon.ph-gps:before {\n content: '\\edd8';\n}\n.sula-icon.ph-gps-fix:before {\n content: '\\edd6';\n}\n.sula-icon.ph-gps-slash:before {\n content: '\\edd4';\n}\n.sula-icon.ph-gradient:before {\n content: '\\eb42';\n}\n.sula-icon.ph-graduation-cap:before {\n content: '\\e62c';\n}\n.sula-icon.ph-grains:before {\n content: '\\ec68';\n}\n.sula-icon.ph-grains-slash:before {\n content: '\\ec6a';\n}\n.sula-icon.ph-graph:before {\n content: '\\eb58';\n}\n.sula-icon.ph-graphics-card:before {\n content: '\\e612';\n}\n.sula-icon.ph-greater-than:before {\n content: '\\edc4';\n}\n.sula-icon.ph-greater-than-or-equal:before {\n content: '\\eda2';\n}\n.sula-icon.ph-grid-four:before {\n content: '\\e296';\n}\n.sula-icon.ph-grid-nine:before {\n content: '\\ec8c';\n}\n.sula-icon.ph-guitar:before {\n content: '\\ea8a';\n}\n.sula-icon.ph-hair-dryer:before {\n content: '\\ea66';\n}\n.sula-icon.ph-hamburger:before {\n content: '\\e790';\n}\n.sula-icon.ph-hammer:before {\n content: '\\e80e';\n}\n.sula-icon.ph-hand:before {\n content: '\\e298';\n}\n.sula-icon.ph-hand-arrow-down:before {\n content: '\\ea4e';\n}\n.sula-icon.ph-hand-arrow-up:before {\n content: '\\ee5a';\n}\n.sula-icon.ph-hand-coins:before {\n content: '\\ea8c';\n}\n.sula-icon.ph-hand-deposit:before {\n content: '\\ee82';\n}\n.sula-icon.ph-hand-eye:before {\n content: '\\ea4c';\n}\n.sula-icon.ph-hand-fist:before {\n content: '\\e57a';\n}\n.sula-icon.ph-hand-grabbing:before {\n content: '\\e57c';\n}\n.sula-icon.ph-hand-heart:before {\n content: '\\e810';\n}\n.sula-icon.ph-hand-palm:before {\n content: '\\e57e';\n}\n.sula-icon.ph-hand-peace:before {\n content: '\\e7cc';\n}\n.sula-icon.ph-hand-pointing:before {\n content: '\\e29a';\n}\n.sula-icon.ph-hand-soap:before {\n content: '\\e630';\n}\n.sula-icon.ph-hand-swipe-left:before {\n content: '\\ec94';\n}\n.sula-icon.ph-hand-swipe-right:before {\n content: '\\ec92';\n}\n.sula-icon.ph-hand-tap:before {\n content: '\\ec90';\n}\n.sula-icon.ph-hand-waving:before {\n content: '\\e580';\n}\n.sula-icon.ph-hand-withdraw:before {\n content: '\\ee80';\n}\n.sula-icon.ph-handbag:before {\n content: '\\e29c';\n}\n.sula-icon.ph-handbag-simple:before {\n content: '\\e62e';\n}\n.sula-icon.ph-hands-clapping:before {\n content: '\\e6a0';\n}\n.sula-icon.ph-hands-praying:before {\n content: '\\ecc8';\n}\n.sula-icon.ph-handshake:before {\n content: '\\e582';\n}\n.sula-icon.ph-hard-drive:before {\n content: '\\e29e';\n}\n.sula-icon.ph-hard-drives:before {\n content: '\\e2a0';\n}\n.sula-icon.ph-hard-hat:before {\n content: '\\ed46';\n}\n.sula-icon.ph-hash:before {\n content: '\\e2a2';\n}\n.sula-icon.ph-hash-straight:before {\n content: '\\e2a4';\n}\n.sula-icon.ph-head-circuit:before {\n content: '\\e7d4';\n}\n.sula-icon.ph-headlights:before {\n content: '\\e6fe';\n}\n.sula-icon.ph-headphones:before {\n content: '\\e2a6';\n}\n.sula-icon.ph-headset:before {\n content: '\\e584';\n}\n.sula-icon.ph-heart:before {\n content: '\\e2a8';\n}\n.sula-icon.ph-heart-break:before {\n content: '\\ebe8';\n}\n.sula-icon.ph-heart-half:before {\n content: '\\ec48';\n}\n.sula-icon.ph-heart-straight:before {\n content: '\\e2aa';\n}\n.sula-icon.ph-heart-straight-break:before {\n content: '\\eb98';\n}\n.sula-icon.ph-heartbeat:before {\n content: '\\e2ac';\n}\n.sula-icon.ph-hexagon:before {\n content: '\\e2ae';\n}\n.sula-icon.ph-high-definition:before {\n content: '\\ea8e';\n}\n.sula-icon.ph-high-heel:before {\n content: '\\e8e8';\n}\n.sula-icon.ph-highlighter:before {\n content: '\\ec76';\n}\n.sula-icon.ph-highlighter-circle:before {\n content: '\\e632';\n}\n.sula-icon.ph-hockey:before {\n content: '\\ec86';\n}\n.sula-icon.ph-hoodie:before {\n content: '\\ecd0';\n}\n.sula-icon.ph-horse:before {\n content: '\\e2b0';\n}\n.sula-icon.ph-hospital:before {\n content: '\\e844';\n}\n.sula-icon.ph-hourglass:before {\n content: '\\e2b2';\n}\n.sula-icon.ph-hourglass-high:before {\n content: '\\e2b4';\n}\n.sula-icon.ph-hourglass-low:before {\n content: '\\e2b6';\n}\n.sula-icon.ph-hourglass-medium:before {\n content: '\\e2b8';\n}\n.sula-icon.ph-hourglass-simple:before {\n content: '\\e2ba';\n}\n.sula-icon.ph-hourglass-simple-high:before {\n content: '\\e2bc';\n}\n.sula-icon.ph-hourglass-simple-low:before {\n content: '\\e2be';\n}\n.sula-icon.ph-hourglass-simple-medium:before {\n content: '\\e2c0';\n}\n.sula-icon.ph-house:before {\n content: '\\e2c2';\n}\n.sula-icon.ph-house-line:before {\n content: '\\e2c4';\n}\n.sula-icon.ph-house-simple:before {\n content: '\\e2c6';\n}\n.sula-icon.ph-hurricane:before {\n content: '\\e88e';\n}\n.sula-icon.ph-ice-cream:before {\n content: '\\e804';\n}\n.sula-icon.ph-identification-badge:before {\n content: '\\e6f6';\n}\n.sula-icon.ph-identification-card:before {\n content: '\\e2c8';\n}\n.sula-icon.ph-image:before {\n content: '\\e2ca';\n}\n.sula-icon.ph-image-broken:before {\n content: '\\e7a8';\n}\n.sula-icon.ph-image-square:before {\n content: '\\e2cc';\n}\n.sula-icon.ph-images:before {\n content: '\\e836';\n}\n.sula-icon.ph-images-square:before {\n content: '\\e834';\n}\n.sula-icon.ph-infinity:before {\n content: '\\e634';\n}\n.sula-icon.ph-lemniscate:before {\n content: '\\e634';\n}\n.sula-icon.ph-info:before {\n content: '\\e2ce';\n}\n.sula-icon.ph-instagram-logo:before {\n content: '\\e2d0';\n}\n.sula-icon.ph-intersect:before {\n content: '\\e2d2';\n}\n.sula-icon.ph-intersect-square:before {\n content: '\\e87a';\n}\n.sula-icon.ph-intersect-three:before {\n content: '\\ecc4';\n}\n.sula-icon.ph-intersection:before {\n content: '\\edba';\n}\n.sula-icon.ph-invoice:before {\n content: '\\ee42';\n}\n.sula-icon.ph-island:before {\n content: '\\ee06';\n}\n.sula-icon.ph-jar:before {\n content: '\\e7e0';\n}\n.sula-icon.ph-jar-label:before {\n content: '\\e7e1';\n}\n.sula-icon.ph-jeep:before {\n content: '\\e2d4';\n}\n.sula-icon.ph-joystick:before {\n content: '\\ea5e';\n}\n.sula-icon.ph-kanban:before {\n content: '\\eb54';\n}\n.sula-icon.ph-key:before {\n content: '\\e2d6';\n}\n.sula-icon.ph-key-return:before {\n content: '\\e782';\n}\n.sula-icon.ph-keyboard:before {\n content: '\\e2d8';\n}\n.sula-icon.ph-keyhole:before {\n content: '\\ea78';\n}\n.sula-icon.ph-knife:before {\n content: '\\e636';\n}\n.sula-icon.ph-ladder:before {\n content: '\\e9e4';\n}\n.sula-icon.ph-ladder-simple:before {\n content: '\\ec26';\n}\n.sula-icon.ph-lamp:before {\n content: '\\e638';\n}\n.sula-icon.ph-lamp-pendant:before {\n content: '\\ee2e';\n}\n.sula-icon.ph-laptop:before {\n content: '\\e586';\n}\n.sula-icon.ph-lasso:before {\n content: '\\edc6';\n}\n.sula-icon.ph-lastfm-logo:before {\n content: '\\e842';\n}\n.sula-icon.ph-layout:before {\n content: '\\e6d6';\n}\n.sula-icon.ph-leaf:before {\n content: '\\e2da';\n}\n.sula-icon.ph-lectern:before {\n content: '\\e95a';\n}\n.sula-icon.ph-lego:before {\n content: '\\e8c6';\n}\n.sula-icon.ph-lego-smiley:before {\n content: '\\e8c7';\n}\n.sula-icon.ph-less-than:before {\n content: '\\edac';\n}\n.sula-icon.ph-less-than-or-equal:before {\n content: '\\eda4';\n}\n.sula-icon.ph-letter-circle-h:before {\n content: '\\ebf8';\n}\n.sula-icon.ph-letter-circle-p:before {\n content: '\\ec08';\n}\n.sula-icon.ph-letter-circle-v:before {\n content: '\\ec14';\n}\n.sula-icon.ph-lifebuoy:before {\n content: '\\e63a';\n}\n.sula-icon.ph-lightbulb:before {\n content: '\\e2dc';\n}\n.sula-icon.ph-lightbulb-filament:before {\n content: '\\e63c';\n}\n.sula-icon.ph-lighthouse:before {\n content: '\\e9f6';\n}\n.sula-icon.ph-lightning:before {\n content: '\\e2de';\n}\n.sula-icon.ph-lightning-a:before {\n content: '\\ea84';\n}\n.sula-icon.ph-lightning-slash:before {\n content: '\\e2e0';\n}\n.sula-icon.ph-line-segment:before {\n content: '\\e6d2';\n}\n.sula-icon.ph-line-segments:before {\n content: '\\e6d4';\n}\n.sula-icon.ph-line-vertical:before {\n content: '\\ed70';\n}\n.sula-icon.ph-link:before {\n content: '\\e2e2';\n}\n.sula-icon.ph-link-break:before {\n content: '\\e2e4';\n}\n.sula-icon.ph-link-simple:before {\n content: '\\e2e6';\n}\n.sula-icon.ph-link-simple-break:before {\n content: '\\e2e8';\n}\n.sula-icon.ph-link-simple-horizontal:before {\n content: '\\e2ea';\n}\n.sula-icon.ph-link-simple-horizontal-break:before {\n content: '\\e2ec';\n}\n.sula-icon.ph-linkedin-logo:before {\n content: '\\e2ee';\n}\n.sula-icon.ph-linktree-logo:before {\n content: '\\edee';\n}\n.sula-icon.ph-linux-logo:before {\n content: '\\eb02';\n}\n.sula-icon.ph-list:before {\n content: '\\e2f0';\n}\n.sula-icon.ph-list-bullets:before {\n content: '\\e2f2';\n}\n.sula-icon.ph-list-checks:before {\n content: '\\eadc';\n}\n.sula-icon.ph-list-dashes:before {\n content: '\\e2f4';\n}\n.sula-icon.ph-list-heart:before {\n content: '\\ebde';\n}\n.sula-icon.ph-list-magnifying-glass:before {\n content: '\\ebe0';\n}\n.sula-icon.ph-list-numbers:before {\n content: '\\e2f6';\n}\n.sula-icon.ph-list-plus:before {\n content: '\\e2f8';\n}\n.sula-icon.ph-list-star:before {\n content: '\\ebdc';\n}\n.sula-icon.ph-lock:before {\n content: '\\e2fa';\n}\n.sula-icon.ph-lock-key:before {\n content: '\\e2fe';\n}\n.sula-icon.ph-lock-key-open:before {\n content: '\\e300';\n}\n.sula-icon.ph-lock-laminated:before {\n content: '\\e302';\n}\n.sula-icon.ph-lock-laminated-open:before {\n content: '\\e304';\n}\n.sula-icon.ph-lock-open:before {\n content: '\\e306';\n}\n.sula-icon.ph-lock-simple:before {\n content: '\\e308';\n}\n.sula-icon.ph-lock-simple-open:before {\n content: '\\e30a';\n}\n.sula-icon.ph-lockers:before {\n content: '\\ecb8';\n}\n.sula-icon.ph-log:before {\n content: '\\ed82';\n}\n.sula-icon.ph-magic-wand:before {\n content: '\\e6b6';\n}\n.sula-icon.ph-magnet:before {\n content: '\\e680';\n}\n.sula-icon.ph-magnet-straight:before {\n content: '\\e682';\n}\n.sula-icon.ph-magnifying-glass:before {\n content: '\\e30c';\n}\n.sula-icon.ph-magnifying-glass-minus:before {\n content: '\\e30e';\n}\n.sula-icon.ph-magnifying-glass-plus:before {\n content: '\\e310';\n}\n.sula-icon.ph-mailbox:before {\n content: '\\ec1e';\n}\n.sula-icon.ph-map-pin:before {\n content: '\\e316';\n}\n.sula-icon.ph-map-pin-area:before {\n content: '\\ee3a';\n}\n.sula-icon.ph-map-pin-line:before {\n content: '\\e318';\n}\n.sula-icon.ph-map-pin-plus:before {\n content: '\\e314';\n}\n.sula-icon.ph-map-pin-simple:before {\n content: '\\ee3e';\n}\n.sula-icon.ph-map-pin-simple-area:before {\n content: '\\ee3c';\n}\n.sula-icon.ph-map-pin-simple-line:before {\n content: '\\ee38';\n}\n.sula-icon.ph-map-trifold:before {\n content: '\\e31a';\n}\n.sula-icon.ph-markdown-logo:before {\n content: '\\e508';\n}\n.sula-icon.ph-marker-circle:before {\n content: '\\e640';\n}\n.sula-icon.ph-martini:before {\n content: '\\e31c';\n}\n.sula-icon.ph-mask-happy:before {\n content: '\\e9f4';\n}\n.sula-icon.ph-mask-sad:before {\n content: '\\eb9e';\n}\n.sula-icon.ph-mastodon-logo:before {\n content: '\\ed68';\n}\n.sula-icon.ph-math-operations:before {\n content: '\\e31e';\n}\n.sula-icon.ph-matrix-logo:before {\n content: '\\ed64';\n}\n.sula-icon.ph-medal:before {\n content: '\\e320';\n}\n.sula-icon.ph-medal-military:before {\n content: '\\ecfc';\n}\n.sula-icon.ph-medium-logo:before {\n content: '\\e322';\n}\n.sula-icon.ph-megaphone:before {\n content: '\\e324';\n}\n.sula-icon.ph-megaphone-simple:before {\n content: '\\e642';\n}\n.sula-icon.ph-member-of:before {\n content: '\\edc2';\n}\n.sula-icon.ph-memory:before {\n content: '\\e9c4';\n}\n.sula-icon.ph-messenger-logo:before {\n content: '\\e6d8';\n}\n.sula-icon.ph-meta-logo:before {\n content: '\\ed02';\n}\n.sula-icon.ph-meteor:before {\n content: '\\e9ba';\n}\n.sula-icon.ph-metronome:before {\n content: '\\ec8e';\n}\n.sula-icon.ph-microphone:before {\n content: '\\e326';\n}\n.sula-icon.ph-microphone-slash:before {\n content: '\\e328';\n}\n.sula-icon.ph-microphone-stage:before {\n content: '\\e75c';\n}\n.sula-icon.ph-microscope:before {\n content: '\\ec7a';\n}\n.sula-icon.ph-microsoft-excel-logo:before {\n content: '\\eb6c';\n}\n.sula-icon.ph-microsoft-outlook-logo:before {\n content: '\\eb70';\n}\n.sula-icon.ph-microsoft-powerpoint-logo:before {\n content: '\\eace';\n}\n.sula-icon.ph-microsoft-teams-logo:before {\n content: '\\eb66';\n}\n.sula-icon.ph-microsoft-word-logo:before {\n content: '\\eb6a';\n}\n.sula-icon.ph-minus:before {\n content: '\\e32a';\n}\n.sula-icon.ph-minus-circle:before {\n content: '\\e32c';\n}\n.sula-icon.ph-minus-square:before {\n content: '\\ed4c';\n}\n.sula-icon.ph-money:before {\n content: '\\e588';\n}\n.sula-icon.ph-money-wavy:before {\n content: '\\ee68';\n}\n.sula-icon.ph-monitor:before {\n content: '\\e32e';\n}\n.sula-icon.ph-monitor-arrow-up:before {\n content: '\\e58a';\n}\n.sula-icon.ph-monitor-play:before {\n content: '\\e58c';\n}\n.sula-icon.ph-moon:before {\n content: '\\e330';\n}\n.sula-icon.ph-moon-stars:before {\n content: '\\e58e';\n}\n.sula-icon.ph-moped:before {\n content: '\\e824';\n}\n.sula-icon.ph-moped-front:before {\n content: '\\e822';\n}\n.sula-icon.ph-mosque:before {\n content: '\\ecee';\n}\n.sula-icon.ph-motorcycle:before {\n content: '\\e80a';\n}\n.sula-icon.ph-mountains:before {\n content: '\\e7ae';\n}\n.sula-icon.ph-mouse:before {\n content: '\\e33a';\n}\n.sula-icon.ph-mouse-left-click:before {\n content: '\\e334';\n}\n.sula-icon.ph-mouse-middle-click:before {\n content: '\\e338';\n}\n.sula-icon.ph-mouse-right-click:before {\n content: '\\e336';\n}\n.sula-icon.ph-mouse-scroll:before {\n content: '\\e332';\n}\n.sula-icon.ph-mouse-simple:before {\n content: '\\e644';\n}\n.sula-icon.ph-music-note:before {\n content: '\\e33c';\n}\n.sula-icon.ph-music-note-simple:before {\n content: '\\e33e';\n}\n.sula-icon.ph-music-notes:before {\n content: '\\e340';\n}\n.sula-icon.ph-music-notes-minus:before {\n content: '\\ee0c';\n}\n.sula-icon.ph-music-notes-plus:before {\n content: '\\eb7c';\n}\n.sula-icon.ph-music-notes-simple:before {\n content: '\\e342';\n}\n.sula-icon.ph-navigation-arrow:before {\n content: '\\eade';\n}\n.sula-icon.ph-needle:before {\n content: '\\e82e';\n}\n.sula-icon.ph-network:before {\n content: '\\edde';\n}\n.sula-icon.ph-network-slash:before {\n content: '\\eddc';\n}\n.sula-icon.ph-network-x:before {\n content: '\\edda';\n}\n.sula-icon.ph-newspaper:before {\n content: '\\e344';\n}\n.sula-icon.ph-newspaper-clipping:before {\n content: '\\e346';\n}\n.sula-icon.ph-not-equals:before {\n content: '\\eda6';\n}\n.sula-icon.ph-not-member-of:before {\n content: '\\edae';\n}\n.sula-icon.ph-not-subset-of:before {\n content: '\\edb0';\n}\n.sula-icon.ph-not-superset-of:before {\n content: '\\edb2';\n}\n.sula-icon.ph-notches:before {\n content: '\\ed3a';\n}\n.sula-icon.ph-note:before {\n content: '\\e348';\n}\n.sula-icon.ph-note-blank:before {\n content: '\\e34a';\n}\n.sula-icon.ph-note-pencil:before {\n content: '\\e34c';\n}\n.sula-icon.ph-notebook:before {\n content: '\\e34e';\n}\n.sula-icon.ph-notepad:before {\n content: '\\e63e';\n}\n.sula-icon.ph-notification:before {\n content: '\\e6fa';\n}\n.sula-icon.ph-notion-logo:before {\n content: '\\e9a0';\n}\n.sula-icon.ph-nuclear-plant:before {\n content: '\\ed7c';\n}\n.sula-icon.ph-number-circle-eight:before {\n content: '\\e352';\n}\n.sula-icon.ph-number-circle-five:before {\n content: '\\e358';\n}\n.sula-icon.ph-number-circle-four:before {\n content: '\\e35e';\n}\n.sula-icon.ph-number-circle-nine:before {\n content: '\\e364';\n}\n.sula-icon.ph-number-circle-one:before {\n content: '\\e36a';\n}\n.sula-icon.ph-number-circle-seven:before {\n content: '\\e370';\n}\n.sula-icon.ph-number-circle-six:before {\n content: '\\e376';\n}\n.sula-icon.ph-number-circle-three:before {\n content: '\\e37c';\n}\n.sula-icon.ph-number-circle-two:before {\n content: '\\e382';\n}\n.sula-icon.ph-number-circle-zero:before {\n content: '\\e388';\n}\n.sula-icon.ph-number-eight:before {\n content: '\\e350';\n}\n.sula-icon.ph-number-five:before {\n content: '\\e356';\n}\n.sula-icon.ph-number-four:before {\n content: '\\e35c';\n}\n.sula-icon.ph-number-nine:before {\n content: '\\e362';\n}\n.sula-icon.ph-number-one:before {\n content: '\\e368';\n}\n.sula-icon.ph-number-seven:before {\n content: '\\e36e';\n}\n.sula-icon.ph-number-six:before {\n content: '\\e374';\n}\n.sula-icon.ph-number-square-eight:before {\n content: '\\e354';\n}\n.sula-icon.ph-number-square-five:before {\n content: '\\e35a';\n}\n.sula-icon.ph-number-square-four:before {\n content: '\\e360';\n}\n.sula-icon.ph-number-square-nine:before {\n content: '\\e366';\n}\n.sula-icon.ph-number-square-one:before {\n content: '\\e36c';\n}\n.sula-icon.ph-number-square-seven:before {\n content: '\\e372';\n}\n.sula-icon.ph-number-square-six:before {\n content: '\\e378';\n}\n.sula-icon.ph-number-square-three:before {\n content: '\\e37e';\n}\n.sula-icon.ph-number-square-two:before {\n content: '\\e384';\n}\n.sula-icon.ph-number-square-zero:before {\n content: '\\e38a';\n}\n.sula-icon.ph-number-three:before {\n content: '\\e37a';\n}\n.sula-icon.ph-number-two:before {\n content: '\\e380';\n}\n.sula-icon.ph-number-zero:before {\n content: '\\e386';\n}\n.sula-icon.ph-numpad:before {\n content: '\\e3c8';\n}\n.sula-icon.ph-nut:before {\n content: '\\e38c';\n}\n.sula-icon.ph-ny-times-logo:before {\n content: '\\e646';\n}\n.sula-icon.ph-octagon:before {\n content: '\\e38e';\n}\n.sula-icon.ph-office-chair:before {\n content: '\\ea46';\n}\n.sula-icon.ph-onigiri:before {\n content: '\\ee2c';\n}\n.sula-icon.ph-open-ai-logo:before {\n content: '\\e7d2';\n}\n.sula-icon.ph-option:before {\n content: '\\e8a8';\n}\n.sula-icon.ph-orange:before {\n content: '\\ee40';\n}\n.sula-icon.ph-orange-slice:before {\n content: '\\ed36';\n}\n.sula-icon.ph-oven:before {\n content: '\\ed8c';\n}\n.sula-icon.ph-package:before {\n content: '\\e390';\n}\n.sula-icon.ph-paint-brush:before {\n content: '\\e6f0';\n}\n.sula-icon.ph-paint-brush-broad:before {\n content: '\\e590';\n}\n.sula-icon.ph-paint-brush-household:before {\n content: '\\e6f2';\n}\n.sula-icon.ph-paint-bucket:before {\n content: '\\e392';\n}\n.sula-icon.ph-paint-roller:before {\n content: '\\e6f4';\n}\n.sula-icon.ph-palette:before {\n content: '\\e6c8';\n}\n.sula-icon.ph-panorama:before {\n content: '\\eaa2';\n}\n.sula-icon.ph-pants:before {\n content: '\\ec88';\n}\n.sula-icon.ph-paper-plane:before {\n content: '\\e394';\n}\n.sula-icon.ph-paper-plane-right:before {\n content: '\\e396';\n}\n.sula-icon.ph-paper-plane-tilt:before {\n content: '\\e398';\n}\n.sula-icon.ph-paperclip:before {\n content: '\\e39a';\n}\n.sula-icon.ph-paperclip-horizontal:before {\n content: '\\e592';\n}\n.sula-icon.ph-parachute:before {\n content: '\\ea7c';\n}\n.sula-icon.ph-paragraph:before {\n content: '\\e960';\n}\n.sula-icon.ph-parallelogram:before {\n content: '\\ecc6';\n}\n.sula-icon.ph-park:before {\n content: '\\ecb2';\n}\n.sula-icon.ph-password:before {\n content: '\\e752';\n}\n.sula-icon.ph-path:before {\n content: '\\e39c';\n}\n.sula-icon.ph-patreon-logo:before {\n content: '\\e98a';\n}\n.sula-icon.ph-pause:before {\n content: '\\e39e';\n}\n.sula-icon.ph-pause-circle:before {\n content: '\\e3a0';\n}\n.sula-icon.ph-paw-print:before {\n content: '\\e648';\n}\n.sula-icon.ph-paypal-logo:before {\n content: '\\e98c';\n}\n.sula-icon.ph-peace:before {\n content: '\\e3a2';\n}\n.sula-icon.ph-pen:before {\n content: '\\e3aa';\n}\n.sula-icon.ph-pen-nib:before {\n content: '\\e3ac';\n}\n.sula-icon.ph-pen-nib-straight:before {\n content: '\\e64a';\n}\n.sula-icon.ph-pencil:before {\n content: '\\e3ae';\n}\n.sula-icon.ph-pencil-circle:before {\n content: '\\e3b0';\n}\n.sula-icon.ph-pencil-line:before {\n content: '\\e3b2';\n}\n.sula-icon.ph-pencil-ruler:before {\n content: '\\e906';\n}\n.sula-icon.ph-pencil-simple:before {\n content: '\\e3b4';\n}\n.sula-icon.ph-pencil-simple-line:before {\n content: '\\ebc6';\n}\n.sula-icon.ph-pencil-simple-slash:before {\n content: '\\ecf6';\n}\n.sula-icon.ph-pencil-slash:before {\n content: '\\ecf8';\n}\n.sula-icon.ph-pentagon:before {\n content: '\\ec7e';\n}\n.sula-icon.ph-pentagram:before {\n content: '\\ec5c';\n}\n.sula-icon.ph-pepper:before {\n content: '\\e94a';\n}\n.sula-icon.ph-percent:before {\n content: '\\e3b6';\n}\n.sula-icon.ph-person:before {\n content: '\\e3a8';\n}\n.sula-icon.ph-person-arms-spread:before {\n content: '\\ecfe';\n}\n.sula-icon.ph-person-simple:before {\n content: '\\e72e';\n}\n.sula-icon.ph-person-simple-bike:before {\n content: '\\e734';\n}\n.sula-icon.ph-person-simple-circle:before {\n content: '\\ee58';\n}\n.sula-icon.ph-person-simple-hike:before {\n content: '\\ed54';\n}\n.sula-icon.ph-person-simple-run:before {\n content: '\\e730';\n}\n.sula-icon.ph-person-simple-ski:before {\n content: '\\e71c';\n}\n.sula-icon.ph-person-simple-snowboard:before {\n content: '\\e71e';\n}\n.sula-icon.ph-person-simple-swim:before {\n content: '\\e736';\n}\n.sula-icon.ph-person-simple-tai-chi:before {\n content: '\\ed5c';\n}\n.sula-icon.ph-person-simple-throw:before {\n content: '\\e732';\n}\n.sula-icon.ph-person-simple-walk:before {\n content: '\\e73a';\n}\n.sula-icon.ph-perspective:before {\n content: '\\ebe6';\n}\n.sula-icon.ph-phone:before {\n content: '\\e3b8';\n}\n.sula-icon.ph-phone-call:before {\n content: '\\e3ba';\n}\n.sula-icon.ph-phone-disconnect:before {\n content: '\\e3bc';\n}\n.sula-icon.ph-phone-incoming:before {\n content: '\\e3be';\n}\n.sula-icon.ph-phone-list:before {\n content: '\\e3cc';\n}\n.sula-icon.ph-phone-outgoing:before {\n content: '\\e3c0';\n}\n.sula-icon.ph-phone-pause:before {\n content: '\\e3ca';\n}\n.sula-icon.ph-phone-plus:before {\n content: '\\ec56';\n}\n.sula-icon.ph-phone-slash:before {\n content: '\\e3c2';\n}\n.sula-icon.ph-phone-transfer:before {\n content: '\\e3c6';\n}\n.sula-icon.ph-phone-x:before {\n content: '\\e3c4';\n}\n.sula-icon.ph-phosphor-logo:before {\n content: '\\e3ce';\n}\n.sula-icon.ph-pi:before {\n content: '\\ec80';\n}\n.sula-icon.ph-piano-keys:before {\n content: '\\e9c8';\n}\n.sula-icon.ph-picnic-table:before {\n content: '\\ee26';\n}\n.sula-icon.ph-picture-in-picture:before {\n content: '\\e64c';\n}\n.sula-icon.ph-piggy-bank:before {\n content: '\\ea04';\n}\n.sula-icon.ph-pill:before {\n content: '\\e700';\n}\n.sula-icon.ph-ping-pong:before {\n content: '\\ea42';\n}\n.sula-icon.ph-pint-glass:before {\n content: '\\edd0';\n}\n.sula-icon.ph-pinterest-logo:before {\n content: '\\e64e';\n}\n.sula-icon.ph-pinwheel:before {\n content: '\\eb9c';\n}\n.sula-icon.ph-pipe:before {\n content: '\\ed86';\n}\n.sula-icon.ph-pipe-wrench:before {\n content: '\\ed88';\n}\n.sula-icon.ph-pix-logo:before {\n content: '\\ecc2';\n}\n.sula-icon.ph-pizza:before {\n content: '\\e796';\n}\n.sula-icon.ph-placeholder:before {\n content: '\\e650';\n}\n.sula-icon.ph-planet:before {\n content: '\\e652';\n}\n.sula-icon.ph-plant:before {\n content: '\\ebae';\n}\n.sula-icon.ph-play:before {\n content: '\\e3d0';\n}\n.sula-icon.ph-play-circle:before {\n content: '\\e3d2';\n}\n.sula-icon.ph-play-pause:before {\n content: '\\e8be';\n}\n.sula-icon.ph-playlist:before {\n content: '\\e6aa';\n}\n.sula-icon.ph-plug:before {\n content: '\\e946';\n}\n.sula-icon.ph-plug-charging:before {\n content: '\\eb5c';\n}\n.sula-icon.ph-plugs:before {\n content: '\\eb56';\n}\n.sula-icon.ph-plugs-connected:before {\n content: '\\eb5a';\n}\n.sula-icon.ph-plus:before {\n content: '\\e3d4';\n}\n.sula-icon.ph-plus-circle:before {\n content: '\\e3d6';\n}\n.sula-icon.ph-plus-minus:before {\n content: '\\e3d8';\n}\n.sula-icon.ph-plus-square:before {\n content: '\\ed4a';\n}\n.sula-icon.ph-poker-chip:before {\n content: '\\e594';\n}\n.sula-icon.ph-police-car:before {\n content: '\\ec4a';\n}\n.sula-icon.ph-polygon:before {\n content: '\\e6d0';\n}\n.sula-icon.ph-popcorn:before {\n content: '\\eb4e';\n}\n.sula-icon.ph-popsicle:before {\n content: '\\ebbe';\n}\n.sula-icon.ph-potted-plant:before {\n content: '\\ec22';\n}\n.sula-icon.ph-power:before {\n content: '\\e3da';\n}\n.sula-icon.ph-prescription:before {\n content: '\\e7a2';\n}\n.sula-icon.ph-presentation:before {\n content: '\\e654';\n}\n.sula-icon.ph-presentation-chart:before {\n content: '\\e656';\n}\n.sula-icon.ph-printer:before {\n content: '\\e3dc';\n}\n.sula-icon.ph-prohibit:before {\n content: '\\e3de';\n}\n.sula-icon.ph-prohibit-inset:before {\n content: '\\e3e0';\n}\n.sula-icon.ph-projector-screen:before {\n content: '\\e658';\n}\n.sula-icon.ph-projector-screen-chart:before {\n content: '\\e65a';\n}\n.sula-icon.ph-pulse:before {\n content: '\\e000';\n}\n.sula-icon.ph-activity:before {\n content: '\\e000';\n}\n.sula-icon.ph-push-pin:before {\n content: '\\e3e2';\n}\n.sula-icon.ph-push-pin-simple:before {\n content: '\\e65c';\n}\n.sula-icon.ph-push-pin-simple-slash:before {\n content: '\\e65e';\n}\n.sula-icon.ph-push-pin-slash:before {\n content: '\\e3e4';\n}\n.sula-icon.ph-puzzle-piece:before {\n content: '\\e596';\n}\n.sula-icon.ph-qr-code:before {\n content: '\\e3e6';\n}\n.sula-icon.ph-question:before {\n content: '\\e3e8';\n}\n.sula-icon.ph-question-mark:before {\n content: '\\e3e9';\n}\n.sula-icon.ph-queue:before {\n content: '\\e6ac';\n}\n.sula-icon.ph-quotes:before {\n content: '\\e660';\n}\n.sula-icon.ph-rabbit:before {\n content: '\\eac2';\n}\n.sula-icon.ph-racquet:before {\n content: '\\ee02';\n}\n.sula-icon.ph-radical:before {\n content: '\\e3ea';\n}\n.sula-icon.ph-radio:before {\n content: '\\e77e';\n}\n.sula-icon.ph-radio-button:before {\n content: '\\eb08';\n}\n.sula-icon.ph-radioactive:before {\n content: '\\e9dc';\n}\n.sula-icon.ph-rainbow:before {\n content: '\\e598';\n}\n.sula-icon.ph-rainbow-cloud:before {\n content: '\\e59a';\n}\n.sula-icon.ph-ranking:before {\n content: '\\ed62';\n}\n.sula-icon.ph-read-cv-logo:before {\n content: '\\ed0c';\n}\n.sula-icon.ph-receipt:before {\n content: '\\e3ec';\n}\n.sula-icon.ph-receipt-x:before {\n content: '\\ed40';\n}\n.sula-icon.ph-record:before {\n content: '\\e3ee';\n}\n.sula-icon.ph-rectangle:before {\n content: '\\e3f0';\n}\n.sula-icon.ph-rectangle-dashed:before {\n content: '\\e3f2';\n}\n.sula-icon.ph-recycle:before {\n content: '\\e75a';\n}\n.sula-icon.ph-reddit-logo:before {\n content: '\\e59c';\n}\n.sula-icon.ph-repeat:before {\n content: '\\e3f6';\n}\n.sula-icon.ph-repeat-once:before {\n content: '\\e3f8';\n}\n.sula-icon.ph-replit-logo:before {\n content: '\\eb8a';\n}\n.sula-icon.ph-resize:before {\n content: '\\ed6e';\n}\n.sula-icon.ph-rewind:before {\n content: '\\e6a8';\n}\n.sula-icon.ph-rewind-circle:before {\n content: '\\e3fa';\n}\n.sula-icon.ph-road-horizon:before {\n content: '\\e838';\n}\n.sula-icon.ph-robot:before {\n content: '\\e762';\n}\n.sula-icon.ph-rocket:before {\n content: '\\e3fc';\n}\n.sula-icon.ph-rocket-launch:before {\n content: '\\e3fe';\n}\n.sula-icon.ph-rows:before {\n content: '\\e5a2';\n}\n.sula-icon.ph-rows-plus-bottom:before {\n content: '\\e59e';\n}\n.sula-icon.ph-rows-plus-top:before {\n content: '\\e5a0';\n}\n.sula-icon.ph-rss:before {\n content: '\\e400';\n}\n.sula-icon.ph-rss-simple:before {\n content: '\\e402';\n}\n.sula-icon.ph-rug:before {\n content: '\\ea1a';\n}\n.sula-icon.ph-ruler:before {\n content: '\\e6b8';\n}\n.sula-icon.ph-sailboat:before {\n content: '\\e78a';\n}\n.sula-icon.ph-scales:before {\n content: '\\e750';\n}\n.sula-icon.ph-scan:before {\n content: '\\ebb6';\n}\n.sula-icon.ph-scan-smiley:before {\n content: '\\ebb4';\n}\n.sula-icon.ph-scissors:before {\n content: '\\eae0';\n}\n.sula-icon.ph-scooter:before {\n content: '\\e820';\n}\n.sula-icon.ph-screencast:before {\n content: '\\e404';\n}\n.sula-icon.ph-screwdriver:before {\n content: '\\e86e';\n}\n.sula-icon.ph-scribble:before {\n content: '\\e806';\n}\n.sula-icon.ph-scribble-loop:before {\n content: '\\e662';\n}\n.sula-icon.ph-scroll:before {\n content: '\\eb7a';\n}\n.sula-icon.ph-seal:before {\n content: '\\e604';\n}\n.sula-icon.ph-circle-wavy:before {\n content: '\\e604';\n}\n.sula-icon.ph-seal-check:before {\n content: '\\e606';\n}\n.sula-icon.ph-circle-wavy-check:before {\n content: '\\e606';\n}\n.sula-icon.ph-seal-percent:before {\n content: '\\e60a';\n}\n.sula-icon.ph-seal-question:before {\n content: '\\e608';\n}\n.sula-icon.ph-circle-wavy-question:before {\n content: '\\e608';\n}\n.sula-icon.ph-seal-warning:before {\n content: '\\e60c';\n}\n.sula-icon.ph-circle-wavy-warning:before {\n content: '\\e60c';\n}\n.sula-icon.ph-seat:before {\n content: '\\eb8e';\n}\n.sula-icon.ph-seatbelt:before {\n content: '\\edfe';\n}\n.sula-icon.ph-security-camera:before {\n content: '\\eca4';\n}\n.sula-icon.ph-selection:before {\n content: '\\e69a';\n}\n.sula-icon.ph-selection-all:before {\n content: '\\e746';\n}\n.sula-icon.ph-selection-background:before {\n content: '\\eaf8';\n}\n.sula-icon.ph-selection-foreground:before {\n content: '\\eaf6';\n}\n.sula-icon.ph-selection-inverse:before {\n content: '\\e744';\n}\n.sula-icon.ph-selection-plus:before {\n content: '\\e69c';\n}\n.sula-icon.ph-selection-slash:before {\n content: '\\e69e';\n}\n.sula-icon.ph-shapes:before {\n content: '\\ec5e';\n}\n.sula-icon.ph-share:before {\n content: '\\e406';\n}\n.sula-icon.ph-share-fat:before {\n content: '\\ed52';\n}\n.sula-icon.ph-share-network:before {\n content: '\\e408';\n}\n.sula-icon.ph-shield:before {\n content: '\\e40a';\n}\n.sula-icon.ph-shield-check:before {\n content: '\\e40c';\n}\n.sula-icon.ph-shield-checkered:before {\n content: '\\e708';\n}\n.sula-icon.ph-shield-chevron:before {\n content: '\\e40e';\n}\n.sula-icon.ph-shield-plus:before {\n content: '\\e706';\n}\n.sula-icon.ph-shield-slash:before {\n content: '\\e410';\n}\n.sula-icon.ph-shield-star:before {\n content: '\\ec34';\n}\n.sula-icon.ph-shield-warning:before {\n content: '\\e412';\n}\n.sula-icon.ph-shipping-container:before {\n content: '\\e78c';\n}\n.sula-icon.ph-shirt-folded:before {\n content: '\\ea92';\n}\n.sula-icon.ph-shooting-star:before {\n content: '\\ecfa';\n}\n.sula-icon.ph-shopping-bag:before {\n content: '\\e416';\n}\n.sula-icon.ph-shopping-bag-open:before {\n content: '\\e418';\n}\n.sula-icon.ph-shopping-cart:before {\n content: '\\e41e';\n}\n.sula-icon.ph-shopping-cart-simple:before {\n content: '\\e420';\n}\n.sula-icon.ph-shovel:before {\n content: '\\e9e6';\n}\n.sula-icon.ph-shower:before {\n content: '\\e776';\n}\n.sula-icon.ph-shrimp:before {\n content: '\\eab4';\n}\n.sula-icon.ph-shuffle:before {\n content: '\\e422';\n}\n.sula-icon.ph-shuffle-angular:before {\n content: '\\e424';\n}\n.sula-icon.ph-shuffle-simple:before {\n content: '\\e426';\n}\n.sula-icon.ph-sidebar:before {\n content: '\\eab6';\n}\n.sula-icon.ph-sidebar-simple:before {\n content: '\\ec24';\n}\n.sula-icon.ph-sigma:before {\n content: '\\eab8';\n}\n.sula-icon.ph-sign-in:before {\n content: '\\e428';\n}\n.sula-icon.ph-sign-out:before {\n content: '\\e42a';\n}\n.sula-icon.ph-signature:before {\n content: '\\ebac';\n}\n.sula-icon.ph-signpost:before {\n content: '\\e89c';\n}\n.sula-icon.ph-sim-card:before {\n content: '\\e664';\n}\n.sula-icon.ph-siren:before {\n content: '\\e9b8';\n}\n.sula-icon.ph-sketch-logo:before {\n content: '\\e42c';\n}\n.sula-icon.ph-skip-back:before {\n content: '\\e5a4';\n}\n.sula-icon.ph-skip-back-circle:before {\n content: '\\e42e';\n}\n.sula-icon.ph-skip-forward:before {\n content: '\\e5a6';\n}\n.sula-icon.ph-skip-forward-circle:before {\n content: '\\e430';\n}\n.sula-icon.ph-skull:before {\n content: '\\e916';\n}\n.sula-icon.ph-skype-logo:before {\n content: '\\e8dc';\n}\n.sula-icon.ph-slack-logo:before {\n content: '\\e5a8';\n}\n.sula-icon.ph-sliders:before {\n content: '\\e432';\n}\n.sula-icon.ph-sliders-horizontal:before {\n content: '\\e434';\n}\n.sula-icon.ph-slideshow:before {\n content: '\\ed32';\n}\n.sula-icon.ph-smiley:before {\n content: '\\e436';\n}\n.sula-icon.ph-smiley-angry:before {\n content: '\\ec62';\n}\n.sula-icon.ph-smiley-blank:before {\n content: '\\e438';\n}\n.sula-icon.ph-smiley-meh:before {\n content: '\\e43a';\n}\n.sula-icon.ph-smiley-melting:before {\n content: '\\ee56';\n}\n.sula-icon.ph-smiley-nervous:before {\n content: '\\e43c';\n}\n.sula-icon.ph-smiley-sad:before {\n content: '\\e43e';\n}\n.sula-icon.ph-smiley-sticker:before {\n content: '\\e440';\n}\n.sula-icon.ph-smiley-wink:before {\n content: '\\e666';\n}\n.sula-icon.ph-smiley-x-eyes:before {\n content: '\\e442';\n}\n.sula-icon.ph-snapchat-logo:before {\n content: '\\e668';\n}\n.sula-icon.ph-sneaker:before {\n content: '\\e80c';\n}\n.sula-icon.ph-sneaker-move:before {\n content: '\\ed60';\n}\n.sula-icon.ph-snowflake:before {\n content: '\\e5aa';\n}\n.sula-icon.ph-soccer-ball:before {\n content: '\\e716';\n}\n.sula-icon.ph-sock:before {\n content: '\\ecce';\n}\n.sula-icon.ph-solar-panel:before {\n content: '\\ed7a';\n}\n.sula-icon.ph-solar-roof:before {\n content: '\\ed7b';\n}\n.sula-icon.ph-sort-ascending:before {\n content: '\\e444';\n}\n.sula-icon.ph-sort-descending:before {\n content: '\\e446';\n}\n.sula-icon.ph-soundcloud-logo:before {\n content: '\\e8de';\n}\n.sula-icon.ph-spade:before {\n content: '\\e448';\n}\n.sula-icon.ph-sparkle:before {\n content: '\\e6a2';\n}\n.sula-icon.ph-speaker-hifi:before {\n content: '\\ea08';\n}\n.sula-icon.ph-speaker-high:before {\n content: '\\e44a';\n}\n.sula-icon.ph-speaker-low:before {\n content: '\\e44c';\n}\n.sula-icon.ph-speaker-none:before {\n content: '\\e44e';\n}\n.sula-icon.ph-speaker-simple-high:before {\n content: '\\e450';\n}\n.sula-icon.ph-speaker-simple-low:before {\n content: '\\e452';\n}\n.sula-icon.ph-speaker-simple-none:before {\n content: '\\e454';\n}\n.sula-icon.ph-speaker-simple-slash:before {\n content: '\\e456';\n}\n.sula-icon.ph-speaker-simple-x:before {\n content: '\\e458';\n}\n.sula-icon.ph-speaker-slash:before {\n content: '\\e45a';\n}\n.sula-icon.ph-speaker-x:before {\n content: '\\e45c';\n}\n.sula-icon.ph-speedometer:before {\n content: '\\ee74';\n}\n.sula-icon.ph-sphere:before {\n content: '\\ee66';\n}\n.sula-icon.ph-spinner:before {\n content: '\\e66a';\n}\n.sula-icon.ph-spinner-ball:before {\n content: '\\ee28';\n}\n.sula-icon.ph-spinner-gap:before {\n content: '\\e66c';\n}\n.sula-icon.ph-spiral:before {\n content: '\\e9fa';\n}\n.sula-icon.ph-split-horizontal:before {\n content: '\\e872';\n}\n.sula-icon.ph-split-vertical:before {\n content: '\\e876';\n}\n.sula-icon.ph-spotify-logo:before {\n content: '\\e66e';\n}\n.sula-icon.ph-spray-bottle:before {\n content: '\\e7e4';\n}\n.sula-icon.ph-square:before {\n content: '\\e45e';\n}\n.sula-icon.ph-square-half:before {\n content: '\\e462';\n}\n.sula-icon.ph-square-half-bottom:before {\n content: '\\eb16';\n}\n.sula-icon.ph-square-logo:before {\n content: '\\e690';\n}\n.sula-icon.ph-square-split-horizontal:before {\n content: '\\e870';\n}\n.sula-icon.ph-square-split-vertical:before {\n content: '\\e874';\n}\n.sula-icon.ph-squares-four:before {\n content: '\\e464';\n}\n.sula-icon.ph-stack:before {\n content: '\\e466';\n}\n.sula-icon.ph-stack-minus:before {\n content: '\\edf4';\n}\n.sula-icon.ph-stack-overflow-logo:before {\n content: '\\eb78';\n}\n.sula-icon.ph-stack-plus:before {\n content: '\\edf6';\n}\n.sula-icon.ph-stack-simple:before {\n content: '\\e468';\n}\n.sula-icon.ph-stairs:before {\n content: '\\e8ec';\n}\n.sula-icon.ph-stamp:before {\n content: '\\ea48';\n}\n.sula-icon.ph-standard-definition:before {\n content: '\\ea90';\n}\n.sula-icon.ph-star:before {\n content: '\\e46a';\n}\n.sula-icon.ph-star-and-crescent:before {\n content: '\\ecf4';\n}\n.sula-icon.ph-star-four:before {\n content: '\\e6a4';\n}\n.sula-icon.ph-star-half:before {\n content: '\\e70a';\n}\n.sula-icon.ph-star-of-david:before {\n content: '\\e89e';\n}\n.sula-icon.ph-steam-logo:before {\n content: '\\ead4';\n}\n.sula-icon.ph-steering-wheel:before {\n content: '\\e9ac';\n}\n.sula-icon.ph-steps:before {\n content: '\\ecbe';\n}\n.sula-icon.ph-stethoscope:before {\n content: '\\e7ea';\n}\n.sula-icon.ph-sticker:before {\n content: '\\e5ac';\n}\n.sula-icon.ph-stool:before {\n content: '\\ea44';\n}\n.sula-icon.ph-stop:before {\n content: '\\e46c';\n}\n.sula-icon.ph-stop-circle:before {\n content: '\\e46e';\n}\n.sula-icon.ph-storefront:before {\n content: '\\e470';\n}\n.sula-icon.ph-strategy:before {\n content: '\\ea3a';\n}\n.sula-icon.ph-stripe-logo:before {\n content: '\\e698';\n}\n.sula-icon.ph-student:before {\n content: '\\e73e';\n}\n.sula-icon.ph-subset-of:before {\n content: '\\edc0';\n}\n.sula-icon.ph-subset-proper-of:before {\n content: '\\edb6';\n}\n.sula-icon.ph-subtitles:before {\n content: '\\e1a8';\n}\n.sula-icon.ph-subtitles-slash:before {\n content: '\\e1a6';\n}\n.sula-icon.ph-subtract:before {\n content: '\\ebd6';\n}\n.sula-icon.ph-subtract-square:before {\n content: '\\ebd4';\n}\n.sula-icon.ph-subway:before {\n content: '\\e498';\n}\n.sula-icon.ph-suitcase:before {\n content: '\\e5ae';\n}\n.sula-icon.ph-suitcase-rolling:before {\n content: '\\e9b0';\n}\n.sula-icon.ph-suitcase-simple:before {\n content: '\\e5b0';\n}\n.sula-icon.ph-sun:before {\n content: '\\e472';\n}\n.sula-icon.ph-sun-dim:before {\n content: '\\e474';\n}\n.sula-icon.ph-sun-horizon:before {\n content: '\\e5b6';\n}\n.sula-icon.ph-sunglasses:before {\n content: '\\e816';\n}\n.sula-icon.ph-superset-of:before {\n content: '\\edb8';\n}\n.sula-icon.ph-superset-proper-of:before {\n content: '\\edb4';\n}\n.sula-icon.ph-swap:before {\n content: '\\e83c';\n}\n.sula-icon.ph-swatches:before {\n content: '\\e5b8';\n}\n.sula-icon.ph-swimming-pool:before {\n content: '\\ecb6';\n}\n.sula-icon.ph-sword:before {\n content: '\\e5ba';\n}\n.sula-icon.ph-synagogue:before {\n content: '\\ecec';\n}\n.sula-icon.ph-syringe:before {\n content: '\\e968';\n}\n.sula-icon.ph-t-shirt:before {\n content: '\\e670';\n}\n.sula-icon.ph-table:before {\n content: '\\e476';\n}\n.sula-icon.ph-tabs:before {\n content: '\\e778';\n}\n.sula-icon.ph-tag:before {\n content: '\\e478';\n}\n.sula-icon.ph-tag-chevron:before {\n content: '\\e672';\n}\n.sula-icon.ph-tag-simple:before {\n content: '\\e47a';\n}\n.sula-icon.ph-target:before {\n content: '\\e47c';\n}\n.sula-icon.ph-taxi:before {\n content: '\\e902';\n}\n.sula-icon.ph-tea-bag:before {\n content: '\\e8e6';\n}\n.sula-icon.ph-telegram-logo:before {\n content: '\\e5bc';\n}\n.sula-icon.ph-television:before {\n content: '\\e754';\n}\n.sula-icon.ph-television-simple:before {\n content: '\\eae6';\n}\n.sula-icon.ph-tennis-ball:before {\n content: '\\e720';\n}\n.sula-icon.ph-tent:before {\n content: '\\e8ba';\n}\n.sula-icon.ph-terminal:before {\n content: '\\e47e';\n}\n.sula-icon.ph-terminal-window:before {\n content: '\\eae8';\n}\n.sula-icon.ph-test-tube:before {\n content: '\\e7a0';\n}\n.sula-icon.ph-text-a-underline:before {\n content: '\\ed34';\n}\n.sula-icon.ph-text-aa:before {\n content: '\\e6ee';\n}\n.sula-icon.ph-text-align-center:before {\n content: '\\e480';\n}\n.sula-icon.ph-text-align-justify:before {\n content: '\\e482';\n}\n.sula-icon.ph-text-align-left:before {\n content: '\\e484';\n}\n.sula-icon.ph-text-align-right:before {\n content: '\\e486';\n}\n.sula-icon.ph-text-b:before {\n content: '\\e5be';\n}\n.sula-icon.ph-text-bolder:before {\n content: '\\e5be';\n}\n.sula-icon.ph-text-columns:before {\n content: '\\ec96';\n}\n.sula-icon.ph-text-h:before {\n content: '\\e6ba';\n}\n.sula-icon.ph-text-h-five:before {\n content: '\\e6c4';\n}\n.sula-icon.ph-text-h-four:before {\n content: '\\e6c2';\n}\n.sula-icon.ph-text-h-one:before {\n content: '\\e6bc';\n}\n.sula-icon.ph-text-h-six:before {\n content: '\\e6c6';\n}\n.sula-icon.ph-text-h-three:before {\n content: '\\e6c0';\n}\n.sula-icon.ph-text-h-two:before {\n content: '\\e6be';\n}\n.sula-icon.ph-text-indent:before {\n content: '\\ea1e';\n}\n.sula-icon.ph-text-italic:before {\n content: '\\e5c0';\n}\n.sula-icon.ph-text-outdent:before {\n content: '\\ea1c';\n}\n.sula-icon.ph-text-strikethrough:before {\n content: '\\e5c2';\n}\n.sula-icon.ph-text-subscript:before {\n content: '\\ec98';\n}\n.sula-icon.ph-text-superscript:before {\n content: '\\ec9a';\n}\n.sula-icon.ph-text-t:before {\n content: '\\e48a';\n}\n.sula-icon.ph-text-t-slash:before {\n content: '\\e488';\n}\n.sula-icon.ph-text-underline:before {\n content: '\\e5c4';\n}\n.sula-icon.ph-textbox:before {\n content: '\\eb0a';\n}\n.sula-icon.ph-thermometer:before {\n content: '\\e5c6';\n}\n.sula-icon.ph-thermometer-cold:before {\n content: '\\e5c8';\n}\n.sula-icon.ph-thermometer-hot:before {\n content: '\\e5ca';\n}\n.sula-icon.ph-thermometer-simple:before {\n content: '\\e5cc';\n}\n.sula-icon.ph-threads-logo:before {\n content: '\\ed9e';\n}\n.sula-icon.ph-three-d:before {\n content: '\\ea5a';\n}\n.sula-icon.ph-thumbs-down:before {\n content: '\\e48c';\n}\n.sula-icon.ph-thumbs-up:before {\n content: '\\e48e';\n}\n.sula-icon.ph-ticket:before {\n content: '\\e490';\n}\n.sula-icon.ph-tidal-logo:before {\n content: '\\ed1c';\n}\n.sula-icon.ph-tiktok-logo:before {\n content: '\\eaf2';\n}\n.sula-icon.ph-tilde:before {\n content: '\\eda8';\n}\n.sula-icon.ph-timer:before {\n content: '\\e492';\n}\n.sula-icon.ph-tip-jar:before {\n content: '\\e7e2';\n}\n.sula-icon.ph-tipi:before {\n content: '\\ed30';\n}\n.sula-icon.ph-tire:before {\n content: '\\edd2';\n}\n.sula-icon.ph-toggle-left:before {\n content: '\\e674';\n}\n.sula-icon.ph-toggle-right:before {\n content: '\\e676';\n}\n.sula-icon.ph-toilet:before {\n content: '\\e79a';\n}\n.sula-icon.ph-toilet-paper:before {\n content: '\\e79c';\n}\n.sula-icon.ph-toolbox:before {\n content: '\\eca0';\n}\n.sula-icon.ph-tooth:before {\n content: '\\e9cc';\n}\n.sula-icon.ph-tornado:before {\n content: '\\e88c';\n}\n.sula-icon.ph-tote:before {\n content: '\\e494';\n}\n.sula-icon.ph-tote-simple:before {\n content: '\\e678';\n}\n.sula-icon.ph-towel:before {\n content: '\\ede6';\n}\n.sula-icon.ph-tractor:before {\n content: '\\ec6e';\n}\n.sula-icon.ph-trademark:before {\n content: '\\e9f0';\n}\n.sula-icon.ph-trademark-registered:before {\n content: '\\e3f4';\n}\n.sula-icon.ph-traffic-cone:before {\n content: '\\e9a8';\n}\n.sula-icon.ph-traffic-sign:before {\n content: '\\e67a';\n}\n.sula-icon.ph-traffic-signal:before {\n content: '\\e9aa';\n}\n.sula-icon.ph-train:before {\n content: '\\e496';\n}\n.sula-icon.ph-train-regional:before {\n content: '\\e49e';\n}\n.sula-icon.ph-train-simple:before {\n content: '\\e4a0';\n}\n.sula-icon.ph-tram:before {\n content: '\\e9ec';\n}\n.sula-icon.ph-translate:before {\n content: '\\e4a2';\n}\n.sula-icon.ph-trash:before {\n content: '\\e4a6';\n}\n.sula-icon.ph-trash-simple:before {\n content: '\\e4a8';\n}\n.sula-icon.ph-tray:before {\n content: '\\e4aa';\n}\n.sula-icon.ph-tray-arrow-down:before {\n content: '\\e010';\n}\n.sula-icon.ph-archive-tray:before {\n content: '\\e010';\n}\n.sula-icon.ph-tray-arrow-up:before {\n content: '\\ee52';\n}\n.sula-icon.ph-treasure-chest:before {\n content: '\\ede2';\n}\n.sula-icon.ph-tree:before {\n content: '\\e6da';\n}\n.sula-icon.ph-tree-evergreen:before {\n content: '\\e6dc';\n}\n.sula-icon.ph-tree-palm:before {\n content: '\\e91a';\n}\n.sula-icon.ph-tree-structure:before {\n content: '\\e67c';\n}\n.sula-icon.ph-tree-view:before {\n content: '\\ee48';\n}\n.sula-icon.ph-trend-down:before {\n content: '\\e4ac';\n}\n.sula-icon.ph-trend-up:before {\n content: '\\e4ae';\n}\n.sula-icon.ph-triangle:before {\n content: '\\e4b0';\n}\n.sula-icon.ph-triangle-dashed:before {\n content: '\\e4b2';\n}\n.sula-icon.ph-trolley:before {\n content: '\\e5b2';\n}\n.sula-icon.ph-trolley-suitcase:before {\n content: '\\e5b4';\n}\n.sula-icon.ph-trophy:before {\n content: '\\e67e';\n}\n.sula-icon.ph-truck:before {\n content: '\\e4b4';\n}\n.sula-icon.ph-truck-trailer:before {\n content: '\\e4b6';\n}\n.sula-icon.ph-tumblr-logo:before {\n content: '\\e8d4';\n}\n.sula-icon.ph-twitch-logo:before {\n content: '\\e5ce';\n}\n.sula-icon.ph-twitter-logo:before {\n content: '\\e4ba';\n}\n.sula-icon.ph-umbrella:before {\n content: '\\e684';\n}\n.sula-icon.ph-umbrella-simple:before {\n content: '\\e686';\n}\n.sula-icon.ph-union:before {\n content: '\\edbe';\n}\n.sula-icon.ph-unite:before {\n content: '\\e87e';\n}\n.sula-icon.ph-unite-square:before {\n content: '\\e878';\n}\n.sula-icon.ph-upload:before {\n content: '\\e4be';\n}\n.sula-icon.ph-upload-simple:before {\n content: '\\e4c0';\n}\n.sula-icon.ph-usb:before {\n content: '\\e956';\n}\n.sula-icon.ph-user:before {\n content: '\\e4c2';\n}\n.sula-icon.ph-user-check:before {\n content: '\\eafa';\n}\n.sula-icon.ph-user-circle:before {\n content: '\\e4c4';\n}\n.sula-icon.ph-user-circle-check:before {\n content: '\\ec38';\n}\n.sula-icon.ph-user-circle-dashed:before {\n content: '\\ec36';\n}\n.sula-icon.ph-user-circle-gear:before {\n content: '\\e4c6';\n}\n.sula-icon.ph-user-circle-minus:before {\n content: '\\e4c8';\n}\n.sula-icon.ph-user-circle-plus:before {\n content: '\\e4ca';\n}\n.sula-icon.ph-user-focus:before {\n content: '\\e6fc';\n}\n.sula-icon.ph-user-gear:before {\n content: '\\e4cc';\n}\n.sula-icon.ph-user-list:before {\n content: '\\e73c';\n}\n.sula-icon.ph-user-minus:before {\n content: '\\e4ce';\n}\n.sula-icon.ph-user-plus:before {\n content: '\\e4d0';\n}\n.sula-icon.ph-user-rectangle:before {\n content: '\\e4d2';\n}\n.sula-icon.ph-user-sound:before {\n content: '\\eca8';\n}\n.sula-icon.ph-user-square:before {\n content: '\\e4d4';\n}\n.sula-icon.ph-user-switch:before {\n content: '\\e756';\n}\n.sula-icon.ph-users:before {\n content: '\\e4d6';\n}\n.sula-icon.ph-users-four:before {\n content: '\\e68c';\n}\n.sula-icon.ph-users-three:before {\n content: '\\e68e';\n}\n.sula-icon.ph-van:before {\n content: '\\e826';\n}\n.sula-icon.ph-vault:before {\n content: '\\e76e';\n}\n.sula-icon.ph-vector-three:before {\n content: '\\ee62';\n}\n.sula-icon.ph-vector-two:before {\n content: '\\ee64';\n}\n.sula-icon.ph-vibrate:before {\n content: '\\e4d8';\n}\n.sula-icon.ph-video:before {\n content: '\\e740';\n}\n.sula-icon.ph-video-camera:before {\n content: '\\e4da';\n}\n.sula-icon.ph-video-camera-slash:before {\n content: '\\e4dc';\n}\n.sula-icon.ph-video-conference:before {\n content: '\\edce';\n}\n.sula-icon.ph-vignette:before {\n content: '\\eba2';\n}\n.sula-icon.ph-vinyl-record:before {\n content: '\\ecac';\n}\n.sula-icon.ph-virtual-reality:before {\n content: '\\e7b8';\n}\n.sula-icon.ph-virus:before {\n content: '\\e7d6';\n}\n.sula-icon.ph-visor:before {\n content: '\\ee2a';\n}\n.sula-icon.ph-voicemail:before {\n content: '\\e4de';\n}\n.sula-icon.ph-volleyball:before {\n content: '\\e726';\n}\n.sula-icon.ph-wall:before {\n content: '\\e688';\n}\n.sula-icon.ph-wallet:before {\n content: '\\e68a';\n}\n.sula-icon.ph-warehouse:before {\n content: '\\ecd4';\n}\n.sula-icon.ph-warning:before {\n content: '\\e4e0';\n}\n.sula-icon.ph-warning-circle:before {\n content: '\\e4e2';\n}\n.sula-icon.ph-warning-diamond:before {\n content: '\\e7fc';\n}\n.sula-icon.ph-warning-octagon:before {\n content: '\\e4e4';\n}\n.sula-icon.ph-washing-machine:before {\n content: '\\ede8';\n}\n.sula-icon.ph-watch:before {\n content: '\\e4e6';\n}\n.sula-icon.ph-wave-sawtooth:before {\n content: '\\ea9c';\n}\n.sula-icon.ph-wave-sine:before {\n content: '\\ea9a';\n}\n.sula-icon.ph-wave-square:before {\n content: '\\ea9e';\n}\n.sula-icon.ph-wave-triangle:before {\n content: '\\eaa0';\n}\n.sula-icon.ph-waveform:before {\n content: '\\e802';\n}\n.sula-icon.ph-waveform-slash:before {\n content: '\\e800';\n}\n.sula-icon.ph-waves:before {\n content: '\\e6de';\n}\n.sula-icon.ph-webcam:before {\n content: '\\e9b2';\n}\n.sula-icon.ph-webcam-slash:before {\n content: '\\ecdc';\n}\n.sula-icon.ph-webhooks-logo:before {\n content: '\\ecae';\n}\n.sula-icon.ph-wechat-logo:before {\n content: '\\e8d2';\n}\n.sula-icon.ph-whatsapp-logo:before {\n content: '\\e5d0';\n}\n.sula-icon.ph-wheelchair:before {\n content: '\\e4e8';\n}\n.sula-icon.ph-wheelchair-motion:before {\n content: '\\e89a';\n}\n.sula-icon.ph-wifi-high:before {\n content: '\\e4ea';\n}\n.sula-icon.ph-wifi-low:before {\n content: '\\e4ec';\n}\n.sula-icon.ph-wifi-medium:before {\n content: '\\e4ee';\n}\n.sula-icon.ph-wifi-none:before {\n content: '\\e4f0';\n}\n.sula-icon.ph-wifi-slash:before {\n content: '\\e4f2';\n}\n.sula-icon.ph-wifi-x:before {\n content: '\\e4f4';\n}\n.sula-icon.ph-wind:before {\n content: '\\e5d2';\n}\n.sula-icon.ph-windmill:before {\n content: '\\e9f8';\n}\n.sula-icon.ph-windows-logo:before {\n content: '\\e692';\n}\n.sula-icon.ph-wine:before {\n content: '\\e6b2';\n}\n.sula-icon.ph-wrench:before {\n content: '\\e5d4';\n}\n.sula-icon.ph-x:before {\n content: '\\e4f6';\n}\n.sula-icon.ph-x-circle:before {\n content: '\\e4f8';\n}\n.sula-icon.ph-x-logo:before {\n content: '\\e4bc';\n}\n.sula-icon.ph-x-square:before {\n content: '\\e4fa';\n}\n.sula-icon.ph-yarn:before {\n content: '\\ed9a';\n}\n.sula-icon.ph-yin-yang:before {\n content: '\\e92a';\n}\n.sula-icon.ph-youtube-logo:before {\n content: '\\e4fc';\n}\n\n.ph-duotone.ph-acorn:before {\n content: '\\eb9a';\n opacity: 0.2;\n}\n.ph-duotone.ph-acorn:after {\n content: '\\eb9b';\n margin-left: -1em;\n}\n.ph-duotone.ph-address-book:before {\n content: '\\e6f8';\n opacity: 0.2;\n}\n.ph-duotone.ph-address-book:after {\n content: '\\e6f9';\n margin-left: -1em;\n}\n.ph-duotone.ph-address-book-tabs:before {\n content: '\\ee4e';\n opacity: 0.2;\n}\n.ph-duotone.ph-address-book-tabs:after {\n content: '\\ee4f';\n margin-left: -1em;\n}\n.ph-duotone.ph-air-traffic-control:before {\n content: '\\ecd8';\n opacity: 0.2;\n}\n.ph-duotone.ph-air-traffic-control:after {\n content: '\\ecd9';\n margin-left: -1em;\n}\n.ph-duotone.ph-airplane:before {\n content: '\\e002';\n opacity: 0.2;\n}\n.ph-duotone.ph-airplane:after {\n content: '\\e003';\n margin-left: -1em;\n}\n.ph-duotone.ph-airplane-in-flight:before {\n content: '\\e4fe';\n opacity: 0.2;\n}\n.ph-duotone.ph-airplane-in-flight:after {\n content: '\\e4ff';\n margin-left: -1em;\n}\n.ph-duotone.ph-airplane-landing:before {\n content: '\\e502';\n opacity: 0.2;\n}\n.ph-duotone.ph-airplane-landing:after {\n content: '\\e503';\n margin-left: -1em;\n}\n.ph-duotone.ph-airplane-takeoff:before {\n content: '\\e504';\n opacity: 0.2;\n}\n.ph-duotone.ph-airplane-takeoff:after {\n content: '\\e505';\n margin-left: -1em;\n}\n.ph-duotone.ph-airplane-taxiing:before {\n content: '\\e500';\n opacity: 0.2;\n}\n.ph-duotone.ph-airplane-taxiing:after {\n content: '\\e501';\n margin-left: -1em;\n}\n.ph-duotone.ph-airplane-tilt:before {\n content: '\\e5d6';\n opacity: 0.2;\n}\n.ph-duotone.ph-airplane-tilt:after {\n content: '\\e5d7';\n margin-left: -1em;\n}\n.ph-duotone.ph-airplay:before {\n content: '\\e004';\n opacity: 0.2;\n}\n.ph-duotone.ph-airplay:after {\n content: '\\e005';\n margin-left: -1em;\n}\n.ph-duotone.ph-alarm:before {\n content: '\\e006';\n opacity: 0.2;\n}\n.ph-duotone.ph-alarm:after {\n content: '\\e007';\n margin-left: -1em;\n}\n.ph-duotone.ph-alien:before {\n content: '\\e8a6';\n opacity: 0.2;\n}\n.ph-duotone.ph-alien:after {\n content: '\\e8a7';\n margin-left: -1em;\n}\n.ph-duotone.ph-align-bottom:before {\n content: '\\e506';\n opacity: 0.2;\n}\n.ph-duotone.ph-align-bottom:after {\n content: '\\e507';\n margin-left: -1em;\n}\n.ph-duotone.ph-align-bottom-simple:before {\n content: '\\eb0c';\n opacity: 0.2;\n}\n.ph-duotone.ph-align-bottom-simple:after {\n content: '\\eb0d';\n margin-left: -1em;\n}\n.ph-duotone.ph-align-center-horizontal:before {\n content: '\\e50a';\n opacity: 0.2;\n}\n.ph-duotone.ph-align-center-horizontal:after {\n content: '\\e50b';\n margin-left: -1em;\n}\n.ph-duotone.ph-align-center-horizontal-simple:before {\n content: '\\eb0e';\n opacity: 0.2;\n}\n.ph-duotone.ph-align-center-horizontal-simple:after {\n content: '\\eb0f';\n margin-left: -1em;\n}\n.ph-duotone.ph-align-center-vertical:before {\n content: '\\e50c';\n opacity: 0.2;\n}\n.ph-duotone.ph-align-center-vertical:after {\n content: '\\e50d';\n margin-left: -1em;\n}\n.ph-duotone.ph-align-center-vertical-simple:before {\n content: '\\eb10';\n opacity: 0.2;\n}\n.ph-duotone.ph-align-center-vertical-simple:after {\n content: '\\eb11';\n margin-left: -1em;\n}\n.ph-duotone.ph-align-left:before {\n content: '\\e50e';\n opacity: 0.2;\n}\n.ph-duotone.ph-align-left:after {\n content: '\\e50f';\n margin-left: -1em;\n}\n.ph-duotone.ph-align-left-simple:before {\n content: '\\eaee';\n opacity: 0.2;\n}\n.ph-duotone.ph-align-left-simple:after {\n content: '\\eaef';\n margin-left: -1em;\n}\n.ph-duotone.ph-align-right:before {\n content: '\\e510';\n opacity: 0.2;\n}\n.ph-duotone.ph-align-right:after {\n content: '\\e511';\n margin-left: -1em;\n}\n.ph-duotone.ph-align-right-simple:before {\n content: '\\eb12';\n opacity: 0.2;\n}\n.ph-duotone.ph-align-right-simple:after {\n content: '\\eb13';\n margin-left: -1em;\n}\n.ph-duotone.ph-align-top:before {\n content: '\\e512';\n opacity: 0.2;\n}\n.ph-duotone.ph-align-top:after {\n content: '\\e513';\n margin-left: -1em;\n}\n.ph-duotone.ph-align-top-simple:before {\n content: '\\eb14';\n opacity: 0.2;\n}\n.ph-duotone.ph-align-top-simple:after {\n content: '\\eb15';\n margin-left: -1em;\n}\n.ph-duotone.ph-amazon-logo:before {\n content: '\\e96c';\n opacity: 0.2;\n}\n.ph-duotone.ph-amazon-logo:after {\n content: '\\e96d';\n margin-left: -1em;\n}\n.ph-duotone.ph-ambulance:before {\n content: '\\e572';\n opacity: 0.2;\n}\n.ph-duotone.ph-ambulance:after {\n content: '\\e573';\n margin-left: -1em;\n}\n.ph-duotone.ph-anchor:before {\n content: '\\e514';\n opacity: 0.2;\n}\n.ph-duotone.ph-anchor:after {\n content: '\\e515';\n margin-left: -1em;\n}\n.ph-duotone.ph-anchor-simple:before {\n content: '\\e5d8';\n opacity: 0.2;\n}\n.ph-duotone.ph-anchor-simple:after {\n content: '\\e5d9';\n margin-left: -1em;\n}\n.ph-duotone.ph-android-logo:before {\n content: '\\e008';\n opacity: 0.2;\n}\n.ph-duotone.ph-android-logo:after {\n content: '\\e009';\n margin-left: -1em;\n}\n.ph-duotone.ph-angle:before {\n content: '\\e7bc';\n opacity: 0.2;\n}\n.ph-duotone.ph-angle:after {\n content: '\\e7bd';\n margin-left: -1em;\n}\n.ph-duotone.ph-angular-logo:before {\n content: '\\eb80';\n opacity: 0.2;\n}\n.ph-duotone.ph-angular-logo:after {\n content: '\\eb81';\n margin-left: -1em;\n}\n.ph-duotone.ph-aperture:before {\n content: '\\e00a';\n opacity: 0.2;\n}\n.ph-duotone.ph-aperture:after {\n content: '\\e00b';\n margin-left: -1em;\n}\n.ph-duotone.ph-app-store-logo:before {\n content: '\\e974';\n opacity: 0.2;\n}\n.ph-duotone.ph-app-store-logo:after {\n content: '\\e975';\n margin-left: -1em;\n}\n.ph-duotone.ph-app-window:before {\n content: '\\e5da';\n opacity: 0.2;\n}\n.ph-duotone.ph-app-window:after {\n content: '\\e5db';\n margin-left: -1em;\n}\n.ph-duotone.ph-apple-logo:before {\n content: '\\e516';\n opacity: 0.2;\n}\n.ph-duotone.ph-apple-logo:after {\n content: '\\e517';\n margin-left: -1em;\n}\n.ph-duotone.ph-apple-podcasts-logo:before {\n content: '\\eb96';\n opacity: 0.2;\n}\n.ph-duotone.ph-apple-podcasts-logo:after {\n content: '\\eb97';\n margin-left: -1em;\n}\n.ph-duotone.ph-approximate-equals:before {\n content: '\\edaa';\n opacity: 0.2;\n}\n.ph-duotone.ph-approximate-equals:after {\n content: '\\edab';\n margin-left: -1em;\n}\n.ph-duotone.ph-archive:before {\n content: '\\e00c';\n opacity: 0.2;\n}\n.ph-duotone.ph-archive:after {\n content: '\\e00d';\n margin-left: -1em;\n}\n.ph-duotone.ph-armchair:before {\n content: '\\e012';\n opacity: 0.2;\n}\n.ph-duotone.ph-armchair:after {\n content: '\\e013';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-arc-left:before {\n content: '\\e014';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-arc-left:after {\n content: '\\e015';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-arc-right:before {\n content: '\\e016';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-arc-right:after {\n content: '\\e017';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-bend-double-up-left:before {\n content: '\\e03a';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-bend-double-up-left:after {\n content: '\\e03b';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-bend-double-up-right:before {\n content: '\\e03c';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-bend-double-up-right:after {\n content: '\\e03d';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-bend-down-left:before {\n content: '\\e018';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-bend-down-left:after {\n content: '\\e019';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-bend-down-right:before {\n content: '\\e01a';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-bend-down-right:after {\n content: '\\e01b';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-bend-left-down:before {\n content: '\\e01c';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-bend-left-down:after {\n content: '\\e01d';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-bend-left-up:before {\n content: '\\e01e';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-bend-left-up:after {\n content: '\\e01f';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-bend-right-down:before {\n content: '\\e020';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-bend-right-down:after {\n content: '\\e021';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-bend-right-up:before {\n content: '\\e022';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-bend-right-up:after {\n content: '\\e023';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-bend-up-left:before {\n content: '\\e024';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-bend-up-left:after {\n content: '\\e025';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-bend-up-right:before {\n content: '\\e026';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-bend-up-right:after {\n content: '\\e027';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-circle-down:before {\n content: '\\e028';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-circle-down:after {\n content: '\\e029';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-circle-down-left:before {\n content: '\\e02a';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-circle-down-left:after {\n content: '\\e02b';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-circle-down-right:before {\n content: '\\e02c';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-circle-down-right:after {\n content: '\\e02d';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-circle-left:before {\n content: '\\e05a';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-circle-left:after {\n content: '\\e05b';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-circle-right:before {\n content: '\\e02e';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-circle-right:after {\n content: '\\e02f';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-circle-up:before {\n content: '\\e030';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-circle-up:after {\n content: '\\e031';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-circle-up-left:before {\n content: '\\e032';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-circle-up-left:after {\n content: '\\e033';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-circle-up-right:before {\n content: '\\e034';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-circle-up-right:after {\n content: '\\e035';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-clockwise:before {\n content: '\\e036';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-clockwise:after {\n content: '\\e037';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-counter-clockwise:before {\n content: '\\e038';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-counter-clockwise:after {\n content: '\\e039';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-down:before {\n content: '\\e03e';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-down:after {\n content: '\\e03f';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-down-left:before {\n content: '\\e040';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-down-left:after {\n content: '\\e041';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-down-right:before {\n content: '\\e042';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-down-right:after {\n content: '\\e043';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-elbow-down-left:before {\n content: '\\e044';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-elbow-down-left:after {\n content: '\\e045';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-elbow-down-right:before {\n content: '\\e046';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-elbow-down-right:after {\n content: '\\e047';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-elbow-left:before {\n content: '\\e048';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-elbow-left:after {\n content: '\\e049';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-elbow-left-down:before {\n content: '\\e04a';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-elbow-left-down:after {\n content: '\\e04b';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-elbow-left-up:before {\n content: '\\e04c';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-elbow-left-up:after {\n content: '\\e04d';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-elbow-right:before {\n content: '\\e04e';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-elbow-right:after {\n content: '\\e04f';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-elbow-right-down:before {\n content: '\\e050';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-elbow-right-down:after {\n content: '\\e051';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-elbow-right-up:before {\n content: '\\e052';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-elbow-right-up:after {\n content: '\\e053';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-elbow-up-left:before {\n content: '\\e054';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-elbow-up-left:after {\n content: '\\e055';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-elbow-up-right:before {\n content: '\\e056';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-elbow-up-right:after {\n content: '\\e057';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-fat-down:before {\n content: '\\e518';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-fat-down:after {\n content: '\\e519';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-fat-left:before {\n content: '\\e51a';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-fat-left:after {\n content: '\\e51b';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-fat-line-down:before {\n content: '\\e51c';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-fat-line-down:after {\n content: '\\e51d';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-fat-line-left:before {\n content: '\\e51e';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-fat-line-left:after {\n content: '\\e51f';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-fat-line-right:before {\n content: '\\e520';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-fat-line-right:after {\n content: '\\e521';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-fat-line-up:before {\n content: '\\e522';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-fat-line-up:after {\n content: '\\e523';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-fat-lines-down:before {\n content: '\\e524';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-fat-lines-down:after {\n content: '\\e525';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-fat-lines-left:before {\n content: '\\e526';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-fat-lines-left:after {\n content: '\\e527';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-fat-lines-right:before {\n content: '\\e528';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-fat-lines-right:after {\n content: '\\e529';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-fat-lines-up:before {\n content: '\\e52a';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-fat-lines-up:after {\n content: '\\e52b';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-fat-right:before {\n content: '\\e52c';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-fat-right:after {\n content: '\\e52d';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-fat-up:before {\n content: '\\e52e';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-fat-up:after {\n content: '\\e52f';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-left:before {\n content: '\\e058';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-left:after {\n content: '\\e059';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-line-down:before {\n content: '\\e05c';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-line-down:after {\n content: '\\e05d';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-line-down-left:before {\n content: '\\e05e';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-line-down-left:after {\n content: '\\e05f';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-line-down-right:before {\n content: '\\e060';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-line-down-right:after {\n content: '\\e061';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-line-left:before {\n content: '\\e062';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-line-left:after {\n content: '\\e063';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-line-right:before {\n content: '\\e064';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-line-right:after {\n content: '\\e065';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-line-up:before {\n content: '\\e066';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-line-up:after {\n content: '\\e067';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-line-up-left:before {\n content: '\\e068';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-line-up-left:after {\n content: '\\e069';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-line-up-right:before {\n content: '\\e06a';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-line-up-right:after {\n content: '\\e06b';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-right:before {\n content: '\\e06c';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-right:after {\n content: '\\e06d';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-square-down:before {\n content: '\\e06e';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-square-down:after {\n content: '\\e06f';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-square-down-left:before {\n content: '\\e070';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-square-down-left:after {\n content: '\\e071';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-square-down-right:before {\n content: '\\e072';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-square-down-right:after {\n content: '\\e073';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-square-in:before {\n content: '\\e5dc';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-square-in:after {\n content: '\\e5dd';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-square-left:before {\n content: '\\e074';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-square-left:after {\n content: '\\e075';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-square-out:before {\n content: '\\e5de';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-square-out:after {\n content: '\\e5df';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-square-right:before {\n content: '\\e076';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-square-right:after {\n content: '\\e077';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-square-up:before {\n content: '\\e078';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-square-up:after {\n content: '\\e079';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-square-up-left:before {\n content: '\\e07a';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-square-up-left:after {\n content: '\\e07b';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-square-up-right:before {\n content: '\\e07c';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-square-up-right:after {\n content: '\\e07d';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-u-down-left:before {\n content: '\\e07e';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-u-down-left:after {\n content: '\\e07f';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-u-down-right:before {\n content: '\\e080';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-u-down-right:after {\n content: '\\e081';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-u-left-down:before {\n content: '\\e082';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-u-left-down:after {\n content: '\\e083';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-u-left-up:before {\n content: '\\e084';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-u-left-up:after {\n content: '\\e085';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-u-right-down:before {\n content: '\\e086';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-u-right-down:after {\n content: '\\e087';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-u-right-up:before {\n content: '\\e088';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-u-right-up:after {\n content: '\\e089';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-u-up-left:before {\n content: '\\e08a';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-u-up-left:after {\n content: '\\e08b';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-u-up-right:before {\n content: '\\e08c';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-u-up-right:after {\n content: '\\e08d';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-up:before {\n content: '\\e08e';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-up:after {\n content: '\\e08f';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-up-left:before {\n content: '\\e090';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-up-left:after {\n content: '\\e091';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrow-up-right:before {\n content: '\\e092';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrow-up-right:after {\n content: '\\e093';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrows-clockwise:before {\n content: '\\e094';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrows-clockwise:after {\n content: '\\e095';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrows-counter-clockwise:before {\n content: '\\e096';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrows-counter-clockwise:after {\n content: '\\e097';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrows-down-up:before {\n content: '\\e098';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrows-down-up:after {\n content: '\\e099';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrows-horizontal:before {\n content: '\\eb06';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrows-horizontal:after {\n content: '\\eb07';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrows-in:before {\n content: '\\e09a';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrows-in:after {\n content: '\\e09b';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrows-in-cardinal:before {\n content: '\\e09c';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrows-in-cardinal:after {\n content: '\\e09d';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrows-in-line-horizontal:before {\n content: '\\e530';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrows-in-line-horizontal:after {\n content: '\\e531';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrows-in-line-vertical:before {\n content: '\\e532';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrows-in-line-vertical:after {\n content: '\\e533';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrows-in-simple:before {\n content: '\\e09e';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrows-in-simple:after {\n content: '\\e09f';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrows-left-right:before {\n content: '\\e0a0';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrows-left-right:after {\n content: '\\e0a1';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrows-merge:before {\n content: '\\ed3e';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrows-merge:after {\n content: '\\ed3f';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrows-out:before {\n content: '\\e0a2';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrows-out:after {\n content: '\\e0a3';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrows-out-cardinal:before {\n content: '\\e0a4';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrows-out-cardinal:after {\n content: '\\e0a5';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrows-out-line-horizontal:before {\n content: '\\e534';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrows-out-line-horizontal:after {\n content: '\\e535';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrows-out-line-vertical:before {\n content: '\\e536';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrows-out-line-vertical:after {\n content: '\\e537';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrows-out-simple:before {\n content: '\\e0a6';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrows-out-simple:after {\n content: '\\e0a7';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrows-split:before {\n content: '\\ed3c';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrows-split:after {\n content: '\\ed3d';\n margin-left: -1em;\n}\n.ph-duotone.ph-arrows-vertical:before {\n content: '\\eb04';\n opacity: 0.2;\n}\n.ph-duotone.ph-arrows-vertical:after {\n content: '\\eb05';\n margin-left: -1em;\n}\n.ph-duotone.ph-article:before {\n content: '\\e0a8';\n opacity: 0.2;\n}\n.ph-duotone.ph-article:after {\n content: '\\e0a9';\n margin-left: -1em;\n}\n.ph-duotone.ph-article-medium:before {\n content: '\\e5e0';\n opacity: 0.2;\n}\n.ph-duotone.ph-article-medium:after {\n content: '\\e5e1';\n margin-left: -1em;\n}\n.ph-duotone.ph-article-ny-times:before {\n content: '\\e5e2';\n opacity: 0.2;\n}\n.ph-duotone.ph-article-ny-times:after {\n content: '\\e5e3';\n margin-left: -1em;\n}\n.ph-duotone.ph-asclepius:before {\n content: '\\ee34';\n opacity: 0.2;\n}\n.ph-duotone.ph-asclepius:after {\n content: '\\ee35';\n margin-left: -1em;\n}\n.ph-duotone.ph-asterisk:before {\n content: '\\e0aa';\n opacity: 0.2;\n}\n.ph-duotone.ph-asterisk:after {\n content: '\\e0ab';\n margin-left: -1em;\n}\n.ph-duotone.ph-asterisk-simple:before {\n content: '\\e832';\n opacity: 0.2;\n}\n.ph-duotone.ph-asterisk-simple:after {\n content: '\\e833';\n margin-left: -1em;\n}\n.ph-duotone.ph-at:before {\n content: '\\e0ac';\n opacity: 0.2;\n}\n.ph-duotone.ph-at:after {\n content: '\\e0ad';\n margin-left: -1em;\n}\n.ph-duotone.ph-atom:before {\n content: '\\e5e4';\n opacity: 0.2;\n}\n.ph-duotone.ph-atom:after {\n content: '\\e5e5';\n margin-left: -1em;\n}\n.ph-duotone.ph-avocado:before {\n content: '\\ee04';\n opacity: 0.2;\n}\n.ph-duotone.ph-avocado:after {\n content: '\\ee05';\n margin-left: -1em;\n}\n.ph-duotone.ph-axe:before {\n content: '\\e9fc';\n opacity: 0.2;\n}\n.ph-duotone.ph-axe:after {\n content: '\\e9fd';\n margin-left: -1em;\n}\n.ph-duotone.ph-baby:before {\n content: '\\e774';\n opacity: 0.2;\n}\n.ph-duotone.ph-baby:after {\n content: '\\e775';\n margin-left: -1em;\n}\n.ph-duotone.ph-baby-carriage:before {\n content: '\\e818';\n opacity: 0.2;\n}\n.ph-duotone.ph-baby-carriage:after {\n content: '\\e819';\n margin-left: -1em;\n}\n.ph-duotone.ph-backpack:before {\n content: '\\e922';\n opacity: 0.2;\n}\n.ph-duotone.ph-backpack:after {\n content: '\\e923';\n margin-left: -1em;\n}\n.ph-duotone.ph-backspace:before {\n content: '\\e0ae';\n opacity: 0.2;\n}\n.ph-duotone.ph-backspace:after {\n content: '\\e0af';\n margin-left: -1em;\n}\n.ph-duotone.ph-bag:before {\n content: '\\e0b0';\n opacity: 0.2;\n}\n.ph-duotone.ph-bag:after {\n content: '\\e0b1';\n margin-left: -1em;\n}\n.ph-duotone.ph-bag-simple:before {\n content: '\\e5e6';\n opacity: 0.2;\n}\n.ph-duotone.ph-bag-simple:after {\n content: '\\e5e7';\n margin-left: -1em;\n}\n.ph-duotone.ph-balloon:before {\n content: '\\e76c';\n opacity: 0.2;\n}\n.ph-duotone.ph-balloon:after {\n content: '\\e76d';\n margin-left: -1em;\n}\n.ph-duotone.ph-bandaids:before {\n content: '\\e0b2';\n opacity: 0.2;\n}\n.ph-duotone.ph-bandaids:after {\n content: '\\e0b3';\n margin-left: -1em;\n}\n.ph-duotone.ph-bank:before {\n content: '\\e0b4';\n opacity: 0.2;\n}\n.ph-duotone.ph-bank:after {\n content: '\\e0b5';\n margin-left: -1em;\n}\n.ph-duotone.ph-barbell:before {\n content: '\\e0b6';\n opacity: 0.2;\n}\n.ph-duotone.ph-barbell:after {\n content: '\\e0b7';\n margin-left: -1em;\n}\n.ph-duotone.ph-barcode:before {\n content: '\\e0b8';\n opacity: 0.2;\n}\n.ph-duotone.ph-barcode:after {\n content: '\\e0b9';\n margin-left: -1em;\n}\n.ph-duotone.ph-barn:before {\n content: '\\ec72';\n opacity: 0.2;\n}\n.ph-duotone.ph-barn:after {\n content: '\\ec73';\n margin-left: -1em;\n}\n.ph-duotone.ph-barricade:before {\n content: '\\e948';\n opacity: 0.2;\n}\n.ph-duotone.ph-barricade:after {\n content: '\\e949';\n margin-left: -1em;\n}\n.ph-duotone.ph-baseball:before {\n content: '\\e71a';\n opacity: 0.2;\n}\n.ph-duotone.ph-baseball:after {\n content: '\\e71b';\n margin-left: -1em;\n}\n.ph-duotone.ph-baseball-cap:before {\n content: '\\ea28';\n opacity: 0.2;\n}\n.ph-duotone.ph-baseball-cap:after {\n content: '\\ea29';\n margin-left: -1em;\n}\n.ph-duotone.ph-baseball-helmet:before {\n content: '\\ee4a';\n opacity: 0.2;\n}\n.ph-duotone.ph-baseball-helmet:after {\n content: '\\ee4b';\n margin-left: -1em;\n}\n.ph-duotone.ph-basket:before {\n content: '\\e964';\n opacity: 0.2;\n}\n.ph-duotone.ph-basket:after {\n content: '\\e965';\n margin-left: -1em;\n}\n.ph-duotone.ph-basketball:before {\n content: '\\e724';\n opacity: 0.2;\n}\n.ph-duotone.ph-basketball:after {\n content: '\\e725';\n margin-left: -1em;\n}\n.ph-duotone.ph-bathtub:before {\n content: '\\e81e';\n opacity: 0.2;\n}\n.ph-duotone.ph-bathtub:after {\n content: '\\e81f';\n margin-left: -1em;\n}\n.ph-duotone.ph-battery-charging:before {\n content: '\\e0ba';\n opacity: 0.2;\n}\n.ph-duotone.ph-battery-charging:after {\n content: '\\e0bb';\n margin-left: -1em;\n}\n.ph-duotone.ph-battery-charging-vertical:before {\n content: '\\e0bc';\n opacity: 0.2;\n}\n.ph-duotone.ph-battery-charging-vertical:after {\n content: '\\e0bd';\n margin-left: -1em;\n}\n.ph-duotone.ph-battery-empty:before {\n content: '\\e0be';\n opacity: 0.2;\n}\n.ph-duotone.ph-battery-empty:after {\n content: '\\e0bf';\n margin-left: -1em;\n}\n.ph-duotone.ph-battery-full:before {\n content: '\\e0c0';\n opacity: 0.2;\n}\n.ph-duotone.ph-battery-full:after {\n content: '\\e0c1';\n margin-left: -1em;\n}\n.ph-duotone.ph-battery-high:before {\n content: '\\e0c2';\n opacity: 0.2;\n}\n.ph-duotone.ph-battery-high:after {\n content: '\\e0c3';\n margin-left: -1em;\n}\n.ph-duotone.ph-battery-low:before {\n content: '\\e0c4';\n opacity: 0.2;\n}\n.ph-duotone.ph-battery-low:after {\n content: '\\e0c5';\n margin-left: -1em;\n}\n.ph-duotone.ph-battery-medium:before {\n content: '\\e0c6';\n opacity: 0.2;\n}\n.ph-duotone.ph-battery-medium:after {\n content: '\\e0c7';\n margin-left: -1em;\n}\n.ph-duotone.ph-battery-plus:before {\n content: '\\e808';\n opacity: 0.2;\n}\n.ph-duotone.ph-battery-plus:after {\n content: '\\e809';\n margin-left: -1em;\n}\n.ph-duotone.ph-battery-plus-vertical:before {\n content: '\\ec50';\n opacity: 0.2;\n}\n.ph-duotone.ph-battery-plus-vertical:after {\n content: '\\ec51';\n margin-left: -1em;\n}\n.ph-duotone.ph-battery-vertical-empty:before {\n content: '\\e7c6';\n opacity: 0.2;\n}\n.ph-duotone.ph-battery-vertical-empty:after {\n content: '\\e7c7';\n margin-left: -1em;\n}\n.ph-duotone.ph-battery-vertical-full:before {\n content: '\\e7c4';\n opacity: 0.2;\n}\n.ph-duotone.ph-battery-vertical-full:after {\n content: '\\e7c5';\n margin-left: -1em;\n}\n.ph-duotone.ph-battery-vertical-high:before {\n content: '\\e7c2';\n opacity: 0.2;\n}\n.ph-duotone.ph-battery-vertical-high:after {\n content: '\\e7c3';\n margin-left: -1em;\n}\n.ph-duotone.ph-battery-vertical-low:before {\n content: '\\e7be';\n opacity: 0.2;\n}\n.ph-duotone.ph-battery-vertical-low:after {\n content: '\\e7bf';\n margin-left: -1em;\n}\n.ph-duotone.ph-battery-vertical-medium:before {\n content: '\\e7c0';\n opacity: 0.2;\n}\n.ph-duotone.ph-battery-vertical-medium:after {\n content: '\\e7c1';\n margin-left: -1em;\n}\n.ph-duotone.ph-battery-warning:before {\n content: '\\e0c8';\n opacity: 0.2;\n}\n.ph-duotone.ph-battery-warning:after {\n content: '\\e0c9';\n margin-left: -1em;\n}\n.ph-duotone.ph-battery-warning-vertical:before {\n content: '\\e0ca';\n opacity: 0.2;\n}\n.ph-duotone.ph-battery-warning-vertical:after {\n content: '\\e0cb';\n margin-left: -1em;\n}\n.ph-duotone.ph-beach-ball:before {\n content: '\\ed24';\n opacity: 0.2;\n}\n.ph-duotone.ph-beach-ball:after {\n content: '\\ed25';\n margin-left: -1em;\n}\n.ph-duotone.ph-beanie:before {\n content: '\\ea2a';\n opacity: 0.2;\n}\n.ph-duotone.ph-beanie:after {\n content: '\\ea2b';\n margin-left: -1em;\n}\n.ph-duotone.ph-bed:before {\n content: '\\e0cc';\n opacity: 0.2;\n}\n.ph-duotone.ph-bed:after {\n content: '\\e0cd';\n margin-left: -1em;\n}\n.ph-duotone.ph-beer-bottle:before {\n content: '\\e7b0';\n opacity: 0.2;\n}\n.ph-duotone.ph-beer-bottle:after {\n content: '\\e7b1';\n margin-left: -1em;\n}\n.ph-duotone.ph-beer-stein:before {\n content: '\\eb62';\n opacity: 0.2;\n}\n.ph-duotone.ph-beer-stein:after {\n content: '\\eb63';\n margin-left: -1em;\n}\n.ph-duotone.ph-behance-logo:before {\n content: '\\e7f4';\n opacity: 0.2;\n}\n.ph-duotone.ph-behance-logo:after {\n content: '\\e7f5';\n margin-left: -1em;\n}\n.ph-duotone.ph-bell:before {\n content: '\\e0ce';\n opacity: 0.2;\n}\n.ph-duotone.ph-bell:after {\n content: '\\e0cf';\n margin-left: -1em;\n}\n.ph-duotone.ph-bell-ringing:before {\n content: '\\e5e8';\n opacity: 0.2;\n}\n.ph-duotone.ph-bell-ringing:after {\n content: '\\e5e9';\n margin-left: -1em;\n}\n.ph-duotone.ph-bell-simple:before {\n content: '\\e0d0';\n opacity: 0.2;\n}\n.ph-duotone.ph-bell-simple:after {\n content: '\\e0d1';\n margin-left: -1em;\n}\n.ph-duotone.ph-bell-simple-ringing:before {\n content: '\\e5ea';\n opacity: 0.2;\n}\n.ph-duotone.ph-bell-simple-ringing:after {\n content: '\\e5eb';\n margin-left: -1em;\n}\n.ph-duotone.ph-bell-simple-slash:before {\n content: '\\e0d2';\n opacity: 0.2;\n}\n.ph-duotone.ph-bell-simple-slash:after {\n content: '\\e0d3';\n margin-left: -1em;\n}\n.ph-duotone.ph-bell-simple-z:before {\n content: '\\e5ec';\n opacity: 0.2;\n}\n.ph-duotone.ph-bell-simple-z:after {\n content: '\\e5ed';\n margin-left: -1em;\n}\n.ph-duotone.ph-bell-slash:before {\n content: '\\e0d4';\n opacity: 0.2;\n}\n.ph-duotone.ph-bell-slash:after {\n content: '\\e0d5';\n margin-left: -1em;\n}\n.ph-duotone.ph-bell-z:before {\n content: '\\e5ee';\n opacity: 0.2;\n}\n.ph-duotone.ph-bell-z:after {\n content: '\\e5ef';\n margin-left: -1em;\n}\n.ph-duotone.ph-belt:before {\n content: '\\ea2c';\n opacity: 0.2;\n}\n.ph-duotone.ph-belt:after {\n content: '\\ea2d';\n margin-left: -1em;\n}\n.ph-duotone.ph-bezier-curve:before {\n content: '\\eb00';\n opacity: 0.2;\n}\n.ph-duotone.ph-bezier-curve:after {\n content: '\\eb01';\n margin-left: -1em;\n}\n.ph-duotone.ph-bicycle:before {\n content: '\\e0d6';\n opacity: 0.2;\n}\n.ph-duotone.ph-bicycle:after {\n content: '\\e0d7';\n margin-left: -1em;\n}\n.ph-duotone.ph-binary:before {\n content: '\\ee60';\n opacity: 0.2;\n}\n.ph-duotone.ph-binary:after {\n content: '\\ee61';\n margin-left: -1em;\n}\n.ph-duotone.ph-binoculars:before {\n content: '\\ea64';\n opacity: 0.2;\n}\n.ph-duotone.ph-binoculars:after {\n content: '\\ea65';\n margin-left: -1em;\n}\n.ph-duotone.ph-biohazard:before {\n content: '\\e9e0';\n opacity: 0.2;\n}\n.ph-duotone.ph-biohazard:after {\n content: '\\e9e1';\n margin-left: -1em;\n}\n.ph-duotone.ph-bird:before {\n content: '\\e72c';\n opacity: 0.2;\n}\n.ph-duotone.ph-bird:after {\n content: '\\e72d';\n margin-left: -1em;\n}\n.ph-duotone.ph-blueprint:before {\n content: '\\eda0';\n opacity: 0.2;\n}\n.ph-duotone.ph-blueprint:after {\n content: '\\eda1';\n margin-left: -1em;\n}\n.ph-duotone.ph-bluetooth:before {\n content: '\\e0da';\n opacity: 0.2;\n}\n.ph-duotone.ph-bluetooth:after {\n content: '\\e0db';\n margin-left: -1em;\n}\n.ph-duotone.ph-bluetooth-connected:before {\n content: '\\e0dc';\n opacity: 0.2;\n}\n.ph-duotone.ph-bluetooth-connected:after {\n content: '\\e0dd';\n margin-left: -1em;\n}\n.ph-duotone.ph-bluetooth-slash:before {\n content: '\\e0de';\n opacity: 0.2;\n}\n.ph-duotone.ph-bluetooth-slash:after {\n content: '\\e0df';\n margin-left: -1em;\n}\n.ph-duotone.ph-bluetooth-x:before {\n content: '\\e0e0';\n opacity: 0.2;\n}\n.ph-duotone.ph-bluetooth-x:after {\n content: '\\e0e1';\n margin-left: -1em;\n}\n.ph-duotone.ph-boat:before {\n content: '\\e786';\n opacity: 0.2;\n}\n.ph-duotone.ph-boat:after {\n content: '\\e787';\n margin-left: -1em;\n}\n.ph-duotone.ph-bomb:before {\n content: '\\ee0a';\n opacity: 0.2;\n}\n.ph-duotone.ph-bomb:after {\n content: '\\ee0b';\n margin-left: -1em;\n}\n.ph-duotone.ph-bone:before {\n content: '\\e7f2';\n opacity: 0.2;\n}\n.ph-duotone.ph-bone:after {\n content: '\\e7f3';\n margin-left: -1em;\n}\n.ph-duotone.ph-book:before {\n content: '\\e0e2';\n opacity: 0.2;\n}\n.ph-duotone.ph-book:after {\n content: '\\e0e3';\n margin-left: -1em;\n}\n.ph-duotone.ph-book-bookmark:before {\n content: '\\e0e4';\n opacity: 0.2;\n}\n.ph-duotone.ph-book-bookmark:after {\n content: '\\e0e5';\n margin-left: -1em;\n}\n.ph-duotone.ph-book-open:before {\n content: '\\e0e6';\n opacity: 0.2;\n}\n.ph-duotone.ph-book-open:after {\n content: '\\e0e7';\n margin-left: -1em;\n}\n.ph-duotone.ph-book-open-text:before {\n content: '\\e8f2';\n opacity: 0.2;\n}\n.ph-duotone.ph-book-open-text:after {\n content: '\\e8f3';\n margin-left: -1em;\n}\n.ph-duotone.ph-book-open-user:before {\n content: '\\ede0';\n opacity: 0.2;\n}\n.ph-duotone.ph-book-open-user:after {\n content: '\\ede1';\n margin-left: -1em;\n}\n.ph-duotone.ph-bookmark:before {\n content: '\\e0e8';\n opacity: 0.2;\n}\n.ph-duotone.ph-bookmark:after {\n content: '\\e0e9';\n margin-left: -1em;\n}\n.ph-duotone.ph-bookmark-simple:before {\n content: '\\e0ea';\n opacity: 0.2;\n}\n.ph-duotone.ph-bookmark-simple:after {\n content: '\\e0eb';\n margin-left: -1em;\n}\n.ph-duotone.ph-bookmarks:before {\n content: '\\e0ec';\n opacity: 0.2;\n}\n.ph-duotone.ph-bookmarks:after {\n content: '\\e0ed';\n margin-left: -1em;\n}\n.ph-duotone.ph-bookmarks-simple:before {\n content: '\\e5f0';\n opacity: 0.2;\n}\n.ph-duotone.ph-bookmarks-simple:after {\n content: '\\e5f1';\n margin-left: -1em;\n}\n.ph-duotone.ph-books:before {\n content: '\\e758';\n opacity: 0.2;\n}\n.ph-duotone.ph-books:after {\n content: '\\e759';\n margin-left: -1em;\n}\n.ph-duotone.ph-boot:before {\n content: '\\ecca';\n opacity: 0.2;\n}\n.ph-duotone.ph-boot:after {\n content: '\\eccb';\n margin-left: -1em;\n}\n.ph-duotone.ph-boules:before {\n content: '\\e722';\n opacity: 0.2;\n}\n.ph-duotone.ph-boules:after {\n content: '\\e723';\n margin-left: -1em;\n}\n.ph-duotone.ph-bounding-box:before {\n content: '\\e6ce';\n opacity: 0.2;\n}\n.ph-duotone.ph-bounding-box:after {\n content: '\\e6cf';\n margin-left: -1em;\n}\n.ph-duotone.ph-bowl-food:before {\n content: '\\eaa4';\n opacity: 0.2;\n}\n.ph-duotone.ph-bowl-food:after {\n content: '\\eaa5';\n margin-left: -1em;\n}\n.ph-duotone.ph-bowl-steam:before {\n content: '\\e8e4';\n opacity: 0.2;\n}\n.ph-duotone.ph-bowl-steam:after {\n content: '\\e8e5';\n margin-left: -1em;\n}\n.ph-duotone.ph-bowling-ball:before {\n content: '\\ea34';\n opacity: 0.2;\n}\n.ph-duotone.ph-bowling-ball:after {\n content: '\\ea35';\n margin-left: -1em;\n}\n.ph-duotone.ph-box-arrow-down:before {\n content: '\\e00e';\n opacity: 0.2;\n}\n.ph-duotone.ph-box-arrow-down:after {\n content: '\\e00f';\n margin-left: -1em;\n}\n.ph-duotone.ph-box-arrow-up:before {\n content: '\\ee54';\n opacity: 0.2;\n}\n.ph-duotone.ph-box-arrow-up:after {\n content: '\\ee55';\n margin-left: -1em;\n}\n.ph-duotone.ph-boxing-glove:before {\n content: '\\ea36';\n opacity: 0.2;\n}\n.ph-duotone.ph-boxing-glove:after {\n content: '\\ea37';\n margin-left: -1em;\n}\n.ph-duotone.ph-brackets-angle:before {\n content: '\\e862';\n opacity: 0.2;\n}\n.ph-duotone.ph-brackets-angle:after {\n content: '\\e863';\n margin-left: -1em;\n}\n.ph-duotone.ph-brackets-curly:before {\n content: '\\e860';\n opacity: 0.2;\n}\n.ph-duotone.ph-brackets-curly:after {\n content: '\\e861';\n margin-left: -1em;\n}\n.ph-duotone.ph-brackets-round:before {\n content: '\\e864';\n opacity: 0.2;\n}\n.ph-duotone.ph-brackets-round:after {\n content: '\\e865';\n margin-left: -1em;\n}\n.ph-duotone.ph-brackets-square:before {\n content: '\\e85e';\n opacity: 0.2;\n}\n.ph-duotone.ph-brackets-square:after {\n content: '\\e85f';\n margin-left: -1em;\n}\n.ph-duotone.ph-brain:before {\n content: '\\e74e';\n opacity: 0.2;\n}\n.ph-duotone.ph-brain:after {\n content: '\\e74f';\n margin-left: -1em;\n}\n.ph-duotone.ph-brandy:before {\n content: '\\e6b4';\n opacity: 0.2;\n}\n.ph-duotone.ph-brandy:after {\n content: '\\e6b5';\n margin-left: -1em;\n}\n.ph-duotone.ph-bread:before {\n content: '\\e81c';\n opacity: 0.2;\n}\n.ph-duotone.ph-bread:after {\n content: '\\e81d';\n margin-left: -1em;\n}\n.ph-duotone.ph-bridge:before {\n content: '\\ea68';\n opacity: 0.2;\n}\n.ph-duotone.ph-bridge:after {\n content: '\\ea69';\n margin-left: -1em;\n}\n.ph-duotone.ph-briefcase:before {\n content: '\\e0ee';\n opacity: 0.2;\n}\n.ph-duotone.ph-briefcase:after {\n content: '\\e0ef';\n margin-left: -1em;\n}\n.ph-duotone.ph-briefcase-metal:before {\n content: '\\e5f2';\n opacity: 0.2;\n}\n.ph-duotone.ph-briefcase-metal:after {\n content: '\\e5f3';\n margin-left: -1em;\n}\n.ph-duotone.ph-broadcast:before {\n content: '\\e0f2';\n opacity: 0.2;\n}\n.ph-duotone.ph-broadcast:after {\n content: '\\e0f3';\n margin-left: -1em;\n}\n.ph-duotone.ph-broom:before {\n content: '\\ec54';\n opacity: 0.2;\n}\n.ph-duotone.ph-broom:after {\n content: '\\ec55';\n margin-left: -1em;\n}\n.ph-duotone.ph-browser:before {\n content: '\\e0f4';\n opacity: 0.2;\n}\n.ph-duotone.ph-browser:after {\n content: '\\e0f5';\n margin-left: -1em;\n}\n.ph-duotone.ph-browsers:before {\n content: '\\e0f6';\n opacity: 0.2;\n}\n.ph-duotone.ph-browsers:after {\n content: '\\e0f7';\n margin-left: -1em;\n}\n.ph-duotone.ph-bug:before {\n content: '\\e5f4';\n opacity: 0.2;\n}\n.ph-duotone.ph-bug:after {\n content: '\\e5f5';\n margin-left: -1em;\n}\n.ph-duotone.ph-bug-beetle:before {\n content: '\\e5f6';\n opacity: 0.2;\n}\n.ph-duotone.ph-bug-beetle:after {\n content: '\\e5f7';\n margin-left: -1em;\n}\n.ph-duotone.ph-bug-droid:before {\n content: '\\e5f8';\n opacity: 0.2;\n}\n.ph-duotone.ph-bug-droid:after {\n content: '\\e5f9';\n margin-left: -1em;\n}\n.ph-duotone.ph-building:before {\n content: '\\e100';\n opacity: 0.2;\n}\n.ph-duotone.ph-building:after {\n content: '\\e101';\n margin-left: -1em;\n}\n.ph-duotone.ph-building-apartment:before {\n content: '\\e0fe';\n opacity: 0.2;\n}\n.ph-duotone.ph-building-apartment:after {\n content: '\\e103';\n margin-left: -1em;\n}\n.ph-duotone.ph-building-office:before {\n content: '\\e0ff';\n opacity: 0.2;\n}\n.ph-duotone.ph-building-office:after {\n content: '\\e104';\n margin-left: -1em;\n}\n.ph-duotone.ph-buildings:before {\n content: '\\e102';\n opacity: 0.2;\n}\n.ph-duotone.ph-buildings:after {\n content: '\\e105';\n margin-left: -1em;\n}\n.ph-duotone.ph-bulldozer:before {\n content: '\\ec6c';\n opacity: 0.2;\n}\n.ph-duotone.ph-bulldozer:after {\n content: '\\ec6d';\n margin-left: -1em;\n}\n.ph-duotone.ph-bus:before {\n content: '\\e106';\n opacity: 0.2;\n}\n.ph-duotone.ph-bus:after {\n content: '\\e107';\n margin-left: -1em;\n}\n.ph-duotone.ph-butterfly:before {\n content: '\\ea6e';\n opacity: 0.2;\n}\n.ph-duotone.ph-butterfly:after {\n content: '\\ea6f';\n margin-left: -1em;\n}\n.ph-duotone.ph-cable-car:before {\n content: '\\e49c';\n opacity: 0.2;\n}\n.ph-duotone.ph-cable-car:after {\n content: '\\e49d';\n margin-left: -1em;\n}\n.ph-duotone.ph-cactus:before {\n content: '\\e918';\n opacity: 0.2;\n}\n.ph-duotone.ph-cactus:after {\n content: '\\e919';\n margin-left: -1em;\n}\n.ph-duotone.ph-cake:before {\n content: '\\e780';\n opacity: 0.2;\n}\n.ph-duotone.ph-cake:after {\n content: '\\e781';\n margin-left: -1em;\n}\n.ph-duotone.ph-calculator:before {\n content: '\\e538';\n opacity: 0.2;\n}\n.ph-duotone.ph-calculator:after {\n content: '\\e539';\n margin-left: -1em;\n}\n.ph-duotone.ph-calendar:before {\n content: '\\e108';\n opacity: 0.2;\n}\n.ph-duotone.ph-calendar:after {\n content: '\\e109';\n margin-left: -1em;\n}\n.ph-duotone.ph-calendar-blank:before {\n content: '\\e10a';\n opacity: 0.2;\n}\n.ph-duotone.ph-calendar-blank:after {\n content: '\\e10b';\n margin-left: -1em;\n}\n.ph-duotone.ph-calendar-check:before {\n content: '\\e712';\n opacity: 0.2;\n}\n.ph-duotone.ph-calendar-check:after {\n content: '\\e713';\n margin-left: -1em;\n}\n.ph-duotone.ph-calendar-dot:before {\n content: '\\e7b2';\n opacity: 0.2;\n}\n.ph-duotone.ph-calendar-dot:after {\n content: '\\e7b3';\n margin-left: -1em;\n}\n.ph-duotone.ph-calendar-dots:before {\n content: '\\e7b4';\n opacity: 0.2;\n}\n.ph-duotone.ph-calendar-dots:after {\n content: '\\e7b5';\n margin-left: -1em;\n}\n.ph-duotone.ph-calendar-heart:before {\n content: '\\e8b0';\n opacity: 0.2;\n}\n.ph-duotone.ph-calendar-heart:after {\n content: '\\e8b1';\n margin-left: -1em;\n}\n.ph-duotone.ph-calendar-minus:before {\n content: '\\ea14';\n opacity: 0.2;\n}\n.ph-duotone.ph-calendar-minus:after {\n content: '\\ea15';\n margin-left: -1em;\n}\n.ph-duotone.ph-calendar-plus:before {\n content: '\\e714';\n opacity: 0.2;\n}\n.ph-duotone.ph-calendar-plus:after {\n content: '\\e715';\n margin-left: -1em;\n}\n.ph-duotone.ph-calendar-slash:before {\n content: '\\ea12';\n opacity: 0.2;\n}\n.ph-duotone.ph-calendar-slash:after {\n content: '\\ea13';\n margin-left: -1em;\n}\n.ph-duotone.ph-calendar-star:before {\n content: '\\e8b2';\n opacity: 0.2;\n}\n.ph-duotone.ph-calendar-star:after {\n content: '\\e8b3';\n margin-left: -1em;\n}\n.ph-duotone.ph-calendar-x:before {\n content: '\\e10c';\n opacity: 0.2;\n}\n.ph-duotone.ph-calendar-x:after {\n content: '\\e10d';\n margin-left: -1em;\n}\n.ph-duotone.ph-call-bell:before {\n content: '\\e7de';\n opacity: 0.2;\n}\n.ph-duotone.ph-call-bell:after {\n content: '\\e7df';\n margin-left: -1em;\n}\n.ph-duotone.ph-camera:before {\n content: '\\e10e';\n opacity: 0.2;\n}\n.ph-duotone.ph-camera:after {\n content: '\\e10f';\n margin-left: -1em;\n}\n.ph-duotone.ph-camera-plus:before {\n content: '\\ec58';\n opacity: 0.2;\n}\n.ph-duotone.ph-camera-plus:after {\n content: '\\ec59';\n margin-left: -1em;\n}\n.ph-duotone.ph-camera-rotate:before {\n content: '\\e7a4';\n opacity: 0.2;\n}\n.ph-duotone.ph-camera-rotate:after {\n content: '\\e7a5';\n margin-left: -1em;\n}\n.ph-duotone.ph-camera-slash:before {\n content: '\\e110';\n opacity: 0.2;\n}\n.ph-duotone.ph-camera-slash:after {\n content: '\\e111';\n margin-left: -1em;\n}\n.ph-duotone.ph-campfire:before {\n content: '\\e9d8';\n opacity: 0.2;\n}\n.ph-duotone.ph-campfire:after {\n content: '\\e9d9';\n margin-left: -1em;\n}\n.ph-duotone.ph-car:before {\n content: '\\e112';\n opacity: 0.2;\n}\n.ph-duotone.ph-car:after {\n content: '\\e113';\n margin-left: -1em;\n}\n.ph-duotone.ph-car-battery:before {\n content: '\\ee30';\n opacity: 0.2;\n}\n.ph-duotone.ph-car-battery:after {\n content: '\\ee31';\n margin-left: -1em;\n}\n.ph-duotone.ph-car-profile:before {\n content: '\\e8cc';\n opacity: 0.2;\n}\n.ph-duotone.ph-car-profile:after {\n content: '\\e8cd';\n margin-left: -1em;\n}\n.ph-duotone.ph-car-simple:before {\n content: '\\e114';\n opacity: 0.2;\n}\n.ph-duotone.ph-car-simple:after {\n content: '\\e115';\n margin-left: -1em;\n}\n.ph-duotone.ph-cardholder:before {\n content: '\\e5fa';\n opacity: 0.2;\n}\n.ph-duotone.ph-cardholder:after {\n content: '\\e5fb';\n margin-left: -1em;\n}\n.ph-duotone.ph-cards:before {\n content: '\\e0f8';\n opacity: 0.2;\n}\n.ph-duotone.ph-cards:after {\n content: '\\e0f9';\n margin-left: -1em;\n}\n.ph-duotone.ph-cards-three:before {\n content: '\\ee50';\n opacity: 0.2;\n}\n.ph-duotone.ph-cards-three:after {\n content: '\\ee51';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-circle-double-down:before {\n content: '\\e116';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-circle-double-down:after {\n content: '\\e117';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-circle-double-left:before {\n content: '\\e118';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-circle-double-left:after {\n content: '\\e119';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-circle-double-right:before {\n content: '\\e11a';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-circle-double-right:after {\n content: '\\e11b';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-circle-double-up:before {\n content: '\\e11c';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-circle-double-up:after {\n content: '\\e11d';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-circle-down:before {\n content: '\\e11e';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-circle-down:after {\n content: '\\e11f';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-circle-left:before {\n content: '\\e120';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-circle-left:after {\n content: '\\e121';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-circle-right:before {\n content: '\\e122';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-circle-right:after {\n content: '\\e123';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-circle-up:before {\n content: '\\e124';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-circle-up:after {\n content: '\\e125';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-circle-up-down:before {\n content: '\\e13e';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-circle-up-down:after {\n content: '\\e13f';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-double-down:before {\n content: '\\e126';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-double-down:after {\n content: '\\e127';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-double-left:before {\n content: '\\e128';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-double-left:after {\n content: '\\e129';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-double-right:before {\n content: '\\e12a';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-double-right:after {\n content: '\\e12b';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-double-up:before {\n content: '\\e12c';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-double-up:after {\n content: '\\e12d';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-down:before {\n content: '\\e136';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-down:after {\n content: '\\e137';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-left:before {\n content: '\\e138';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-left:after {\n content: '\\e139';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-line-down:before {\n content: '\\e134';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-line-down:after {\n content: '\\e135';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-line-left:before {\n content: '\\e132';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-line-left:after {\n content: '\\e133';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-line-right:before {\n content: '\\e130';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-line-right:after {\n content: '\\e131';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-line-up:before {\n content: '\\e12e';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-line-up:after {\n content: '\\e12f';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-right:before {\n content: '\\e13a';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-right:after {\n content: '\\e13b';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-up:before {\n content: '\\e13c';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-up:after {\n content: '\\e13d';\n margin-left: -1em;\n}\n.ph-duotone.ph-caret-up-down:before {\n content: '\\e140';\n opacity: 0.2;\n}\n.ph-duotone.ph-caret-up-down:after {\n content: '\\e141';\n margin-left: -1em;\n}\n.ph-duotone.ph-carrot:before {\n content: '\\ed38';\n opacity: 0.2;\n}\n.ph-duotone.ph-carrot:after {\n content: '\\ed39';\n margin-left: -1em;\n}\n.ph-duotone.ph-cash-register:before {\n content: '\\ed80';\n opacity: 0.2;\n}\n.ph-duotone.ph-cash-register:after {\n content: '\\ed81';\n margin-left: -1em;\n}\n.ph-duotone.ph-cassette-tape:before {\n content: '\\ed2e';\n opacity: 0.2;\n}\n.ph-duotone.ph-cassette-tape:after {\n content: '\\ed2f';\n margin-left: -1em;\n}\n.ph-duotone.ph-castle-turret:before {\n content: '\\e9d0';\n opacity: 0.2;\n}\n.ph-duotone.ph-castle-turret:after {\n content: '\\e9d1';\n margin-left: -1em;\n}\n.ph-duotone.ph-cat:before {\n content: '\\e748';\n opacity: 0.2;\n}\n.ph-duotone.ph-cat:after {\n content: '\\e749';\n margin-left: -1em;\n}\n.ph-duotone.ph-cell-signal-full:before {\n content: '\\e142';\n opacity: 0.2;\n}\n.ph-duotone.ph-cell-signal-full:after {\n content: '\\e143';\n margin-left: -1em;\n}\n.ph-duotone.ph-cell-signal-high:before {\n content: '\\e144';\n opacity: 0.2;\n}\n.ph-duotone.ph-cell-signal-high:after {\n content: '\\e145';\n margin-left: -1em;\n}\n.ph-duotone.ph-cell-signal-low:before {\n content: '\\e146';\n opacity: 0.2;\n}\n.ph-duotone.ph-cell-signal-low:after {\n content: '\\e147';\n margin-left: -1em;\n}\n.ph-duotone.ph-cell-signal-medium:before {\n content: '\\e148';\n opacity: 0.2;\n}\n.ph-duotone.ph-cell-signal-medium:after {\n content: '\\e149';\n margin-left: -1em;\n}\n.ph-duotone.ph-cell-signal-none:before {\n content: '\\e14a';\n color: #444;\n}\n.ph-duotone.ph-cell-signal-slash:before {\n content: '\\e14c';\n opacity: 0.2;\n}\n.ph-duotone.ph-cell-signal-slash:after {\n content: '\\e14d';\n margin-left: -1em;\n}\n.ph-duotone.ph-cell-signal-x:before {\n content: '\\e14e';\n opacity: 0.2;\n}\n.ph-duotone.ph-cell-signal-x:after {\n content: '\\e14f';\n margin-left: -1em;\n}\n.ph-duotone.ph-cell-tower:before {\n content: '\\ebaa';\n opacity: 0.2;\n}\n.ph-duotone.ph-cell-tower:after {\n content: '\\ebab';\n margin-left: -1em;\n}\n.ph-duotone.ph-certificate:before {\n content: '\\e766';\n opacity: 0.2;\n}\n.ph-duotone.ph-certificate:after {\n content: '\\e767';\n margin-left: -1em;\n}\n.ph-duotone.ph-chair:before {\n content: '\\e950';\n opacity: 0.2;\n}\n.ph-duotone.ph-chair:after {\n content: '\\e951';\n margin-left: -1em;\n}\n.ph-duotone.ph-chalkboard:before {\n content: '\\e5fc';\n opacity: 0.2;\n}\n.ph-duotone.ph-chalkboard:after {\n content: '\\e5fd';\n margin-left: -1em;\n}\n.ph-duotone.ph-chalkboard-simple:before {\n content: '\\e5fe';\n opacity: 0.2;\n}\n.ph-duotone.ph-chalkboard-simple:after {\n content: '\\e5ff';\n margin-left: -1em;\n}\n.ph-duotone.ph-chalkboard-teacher:before {\n content: '\\e600';\n opacity: 0.2;\n}\n.ph-duotone.ph-chalkboard-teacher:after {\n content: '\\e601';\n margin-left: -1em;\n}\n.ph-duotone.ph-champagne:before {\n content: '\\eaca';\n opacity: 0.2;\n}\n.ph-duotone.ph-champagne:after {\n content: '\\eacb';\n margin-left: -1em;\n}\n.ph-duotone.ph-charging-station:before {\n content: '\\e8d0';\n opacity: 0.2;\n}\n.ph-duotone.ph-charging-station:after {\n content: '\\e8d1';\n margin-left: -1em;\n}\n.ph-duotone.ph-chart-bar:before {\n content: '\\e150';\n opacity: 0.2;\n}\n.ph-duotone.ph-chart-bar:after {\n content: '\\e151';\n margin-left: -1em;\n}\n.ph-duotone.ph-chart-bar-horizontal:before {\n content: '\\e152';\n opacity: 0.2;\n}\n.ph-duotone.ph-chart-bar-horizontal:after {\n content: '\\e153';\n margin-left: -1em;\n}\n.ph-duotone.ph-chart-donut:before {\n content: '\\eaa6';\n opacity: 0.2;\n}\n.ph-duotone.ph-chart-donut:after {\n content: '\\eaa7';\n margin-left: -1em;\n}\n.ph-duotone.ph-chart-line:before {\n content: '\\e154';\n opacity: 0.2;\n}\n.ph-duotone.ph-chart-line:after {\n content: '\\e155';\n margin-left: -1em;\n}\n.ph-duotone.ph-chart-line-down:before {\n content: '\\e8b6';\n opacity: 0.2;\n}\n.ph-duotone.ph-chart-line-down:after {\n content: '\\e8b7';\n margin-left: -1em;\n}\n.ph-duotone.ph-chart-line-up:before {\n content: '\\e156';\n opacity: 0.2;\n}\n.ph-duotone.ph-chart-line-up:after {\n content: '\\e157';\n margin-left: -1em;\n}\n.ph-duotone.ph-chart-pie:before {\n content: '\\e158';\n opacity: 0.2;\n}\n.ph-duotone.ph-chart-pie:after {\n content: '\\e159';\n margin-left: -1em;\n}\n.ph-duotone.ph-chart-pie-slice:before {\n content: '\\e15a';\n opacity: 0.2;\n}\n.ph-duotone.ph-chart-pie-slice:after {\n content: '\\e15b';\n margin-left: -1em;\n}\n.ph-duotone.ph-chart-polar:before {\n content: '\\eaa8';\n opacity: 0.2;\n}\n.ph-duotone.ph-chart-polar:after {\n content: '\\eaa9';\n margin-left: -1em;\n}\n.ph-duotone.ph-chart-scatter:before {\n content: '\\eaac';\n opacity: 0.2;\n}\n.ph-duotone.ph-chart-scatter:after {\n content: '\\eaad';\n margin-left: -1em;\n}\n.ph-duotone.ph-chat:before {\n content: '\\e15c';\n opacity: 0.2;\n}\n.ph-duotone.ph-chat:after {\n content: '\\e15d';\n margin-left: -1em;\n}\n.ph-duotone.ph-chat-centered:before {\n content: '\\e160';\n opacity: 0.2;\n}\n.ph-duotone.ph-chat-centered:after {\n content: '\\e161';\n margin-left: -1em;\n}\n.ph-duotone.ph-chat-centered-dots:before {\n content: '\\e164';\n opacity: 0.2;\n}\n.ph-duotone.ph-chat-centered-dots:after {\n content: '\\e165';\n margin-left: -1em;\n}\n.ph-duotone.ph-chat-centered-slash:before {\n content: '\\e162';\n opacity: 0.2;\n}\n.ph-duotone.ph-chat-centered-slash:after {\n content: '\\e163';\n margin-left: -1em;\n}\n.ph-duotone.ph-chat-centered-text:before {\n content: '\\e166';\n opacity: 0.2;\n}\n.ph-duotone.ph-chat-centered-text:after {\n content: '\\e167';\n margin-left: -1em;\n}\n.ph-duotone.ph-chat-circle:before {\n content: '\\e168';\n opacity: 0.2;\n}\n.ph-duotone.ph-chat-circle:after {\n content: '\\e169';\n margin-left: -1em;\n}\n.ph-duotone.ph-chat-circle-dots:before {\n content: '\\e16c';\n opacity: 0.2;\n}\n.ph-duotone.ph-chat-circle-dots:after {\n content: '\\e16d';\n margin-left: -1em;\n}\n.ph-duotone.ph-chat-circle-slash:before {\n content: '\\e16a';\n opacity: 0.2;\n}\n.ph-duotone.ph-chat-circle-slash:after {\n content: '\\e16b';\n margin-left: -1em;\n}\n.ph-duotone.ph-chat-circle-text:before {\n content: '\\e16e';\n opacity: 0.2;\n}\n.ph-duotone.ph-chat-circle-text:after {\n content: '\\e16f';\n margin-left: -1em;\n}\n.ph-duotone.ph-chat-dots:before {\n content: '\\e170';\n opacity: 0.2;\n}\n.ph-duotone.ph-chat-dots:after {\n content: '\\e171';\n margin-left: -1em;\n}\n.ph-duotone.ph-chat-slash:before {\n content: '\\e15e';\n opacity: 0.2;\n}\n.ph-duotone.ph-chat-slash:after {\n content: '\\e15f';\n margin-left: -1em;\n}\n.ph-duotone.ph-chat-teardrop:before {\n content: '\\e172';\n opacity: 0.2;\n}\n.ph-duotone.ph-chat-teardrop:after {\n content: '\\e173';\n margin-left: -1em;\n}\n.ph-duotone.ph-chat-teardrop-dots:before {\n content: '\\e176';\n opacity: 0.2;\n}\n.ph-duotone.ph-chat-teardrop-dots:after {\n content: '\\e177';\n margin-left: -1em;\n}\n.ph-duotone.ph-chat-teardrop-slash:before {\n content: '\\e174';\n opacity: 0.2;\n}\n.ph-duotone.ph-chat-teardrop-slash:after {\n content: '\\e175';\n margin-left: -1em;\n}\n.ph-duotone.ph-chat-teardrop-text:before {\n content: '\\e178';\n opacity: 0.2;\n}\n.ph-duotone.ph-chat-teardrop-text:after {\n content: '\\e179';\n margin-left: -1em;\n}\n.ph-duotone.ph-chat-text:before {\n content: '\\e17a';\n opacity: 0.2;\n}\n.ph-duotone.ph-chat-text:after {\n content: '\\e17b';\n margin-left: -1em;\n}\n.ph-duotone.ph-chats:before {\n content: '\\e17c';\n opacity: 0.2;\n}\n.ph-duotone.ph-chats:after {\n content: '\\e17d';\n margin-left: -1em;\n}\n.ph-duotone.ph-chats-circle:before {\n content: '\\e17e';\n opacity: 0.2;\n}\n.ph-duotone.ph-chats-circle:after {\n content: '\\e17f';\n margin-left: -1em;\n}\n.ph-duotone.ph-chats-teardrop:before {\n content: '\\e180';\n opacity: 0.2;\n}\n.ph-duotone.ph-chats-teardrop:after {\n content: '\\e181';\n margin-left: -1em;\n}\n.ph-duotone.ph-check:before {\n content: '\\e182';\n opacity: 0.2;\n}\n.ph-duotone.ph-check:after {\n content: '\\e183';\n margin-left: -1em;\n}\n.ph-duotone.ph-check-circle:before {\n content: '\\e184';\n opacity: 0.2;\n}\n.ph-duotone.ph-check-circle:after {\n content: '\\e185';\n margin-left: -1em;\n}\n.ph-duotone.ph-check-fat:before {\n content: '\\eba6';\n opacity: 0.2;\n}\n.ph-duotone.ph-check-fat:after {\n content: '\\eba7';\n margin-left: -1em;\n}\n.ph-duotone.ph-check-square:before {\n content: '\\e186';\n opacity: 0.2;\n}\n.ph-duotone.ph-check-square:after {\n content: '\\e187';\n margin-left: -1em;\n}\n.ph-duotone.ph-check-square-offset:before {\n content: '\\e188';\n opacity: 0.2;\n}\n.ph-duotone.ph-check-square-offset:after {\n content: '\\e189';\n margin-left: -1em;\n}\n.ph-duotone.ph-checkerboard:before {\n content: '\\e8c4';\n opacity: 0.2;\n}\n.ph-duotone.ph-checkerboard:after {\n content: '\\e8c5';\n margin-left: -1em;\n}\n.ph-duotone.ph-checks:before {\n content: '\\e53a';\n opacity: 0.2;\n}\n.ph-duotone.ph-checks:after {\n content: '\\e53b';\n margin-left: -1em;\n}\n.ph-duotone.ph-cheers:before {\n content: '\\ea4a';\n opacity: 0.2;\n}\n.ph-duotone.ph-cheers:after {\n content: '\\ea4b';\n margin-left: -1em;\n}\n.ph-duotone.ph-cheese:before {\n content: '\\e9fe';\n opacity: 0.2;\n}\n.ph-duotone.ph-cheese:after {\n content: '\\e9ff';\n margin-left: -1em;\n}\n.ph-duotone.ph-chef-hat:before {\n content: '\\ed8e';\n opacity: 0.2;\n}\n.ph-duotone.ph-chef-hat:after {\n content: '\\ed8f';\n margin-left: -1em;\n}\n.ph-duotone.ph-cherries:before {\n content: '\\e830';\n opacity: 0.2;\n}\n.ph-duotone.ph-cherries:after {\n content: '\\e831';\n margin-left: -1em;\n}\n.ph-duotone.ph-church:before {\n content: '\\ecea';\n opacity: 0.2;\n}\n.ph-duotone.ph-church:after {\n content: '\\eceb';\n margin-left: -1em;\n}\n.ph-duotone.ph-cigarette:before {\n content: '\\ed90';\n opacity: 0.2;\n}\n.ph-duotone.ph-cigarette:after {\n content: '\\ed91';\n margin-left: -1em;\n}\n.ph-duotone.ph-cigarette-slash:before {\n content: '\\ed92';\n opacity: 0.2;\n}\n.ph-duotone.ph-cigarette-slash:after {\n content: '\\ed93';\n margin-left: -1em;\n}\n.ph-duotone.ph-circle:before {\n content: '\\e18a';\n opacity: 0.2;\n}\n.ph-duotone.ph-circle:after {\n content: '\\e18b';\n margin-left: -1em;\n}\n.ph-duotone.ph-circle-dashed:before {\n content: '\\e602';\n opacity: 0.2;\n}\n.ph-duotone.ph-circle-dashed:after {\n content: '\\e603';\n margin-left: -1em;\n}\n.ph-duotone.ph-circle-half:before {\n content: '\\e18c';\n opacity: 0.2;\n}\n.ph-duotone.ph-circle-half:after {\n content: '\\e18d';\n margin-left: -1em;\n}\n.ph-duotone.ph-circle-half-tilt:before {\n content: '\\e18e';\n opacity: 0.2;\n}\n.ph-duotone.ph-circle-half-tilt:after {\n content: '\\e18f';\n margin-left: -1em;\n}\n.ph-duotone.ph-circle-notch:before {\n content: '\\eb44';\n opacity: 0.2;\n}\n.ph-duotone.ph-circle-notch:after {\n content: '\\eb45';\n margin-left: -1em;\n}\n.ph-duotone.ph-circles-four:before {\n content: '\\e190';\n opacity: 0.2;\n}\n.ph-duotone.ph-circles-four:after {\n content: '\\e191';\n margin-left: -1em;\n}\n.ph-duotone.ph-circles-three:before {\n content: '\\e192';\n opacity: 0.2;\n}\n.ph-duotone.ph-circles-three:after {\n content: '\\e193';\n margin-left: -1em;\n}\n.ph-duotone.ph-circles-three-plus:before {\n content: '\\e194';\n opacity: 0.2;\n}\n.ph-duotone.ph-circles-three-plus:after {\n content: '\\e195';\n margin-left: -1em;\n}\n.ph-duotone.ph-circuitry:before {\n content: '\\e9c2';\n opacity: 0.2;\n}\n.ph-duotone.ph-circuitry:after {\n content: '\\e9c3';\n margin-left: -1em;\n}\n.ph-duotone.ph-city:before {\n content: '\\ea6a';\n opacity: 0.2;\n}\n.ph-duotone.ph-city:after {\n content: '\\ea6b';\n margin-left: -1em;\n}\n.ph-duotone.ph-clipboard:before {\n content: '\\e196';\n opacity: 0.2;\n}\n.ph-duotone.ph-clipboard:after {\n content: '\\e197';\n margin-left: -1em;\n}\n.ph-duotone.ph-clipboard-text:before {\n content: '\\e198';\n opacity: 0.2;\n}\n.ph-duotone.ph-clipboard-text:after {\n content: '\\e199';\n margin-left: -1em;\n}\n.ph-duotone.ph-clock:before {\n content: '\\e19a';\n opacity: 0.2;\n}\n.ph-duotone.ph-clock:after {\n content: '\\e19b';\n margin-left: -1em;\n}\n.ph-duotone.ph-clock-afternoon:before {\n content: '\\e19c';\n opacity: 0.2;\n}\n.ph-duotone.ph-clock-afternoon:after {\n content: '\\e19d';\n margin-left: -1em;\n}\n.ph-duotone.ph-clock-clockwise:before {\n content: '\\e19e';\n opacity: 0.2;\n}\n.ph-duotone.ph-clock-clockwise:after {\n content: '\\e19f';\n margin-left: -1em;\n}\n.ph-duotone.ph-clock-countdown:before {\n content: '\\ed2c';\n opacity: 0.2;\n}\n.ph-duotone.ph-clock-countdown:after {\n content: '\\ed2d';\n margin-left: -1em;\n}\n.ph-duotone.ph-clock-counter-clockwise:before {\n content: '\\e1a0';\n opacity: 0.2;\n}\n.ph-duotone.ph-clock-counter-clockwise:after {\n content: '\\e1a1';\n margin-left: -1em;\n}\n.ph-duotone.ph-clock-user:before {\n content: '\\edec';\n opacity: 0.2;\n}\n.ph-duotone.ph-clock-user:after {\n content: '\\eded';\n margin-left: -1em;\n}\n.ph-duotone.ph-closed-captioning:before {\n content: '\\e1a4';\n opacity: 0.2;\n}\n.ph-duotone.ph-closed-captioning:after {\n content: '\\e1a5';\n margin-left: -1em;\n}\n.ph-duotone.ph-cloud:before {\n content: '\\e1aa';\n opacity: 0.2;\n}\n.ph-duotone.ph-cloud:after {\n content: '\\e1ab';\n margin-left: -1em;\n}\n.ph-duotone.ph-cloud-arrow-down:before {\n content: '\\e1ac';\n opacity: 0.2;\n}\n.ph-duotone.ph-cloud-arrow-down:after {\n content: '\\e1ad';\n margin-left: -1em;\n}\n.ph-duotone.ph-cloud-arrow-up:before {\n content: '\\e1ae';\n opacity: 0.2;\n}\n.ph-duotone.ph-cloud-arrow-up:after {\n content: '\\e1af';\n margin-left: -1em;\n}\n.ph-duotone.ph-cloud-check:before {\n content: '\\e1b0';\n opacity: 0.2;\n}\n.ph-duotone.ph-cloud-check:after {\n content: '\\e1b1';\n margin-left: -1em;\n}\n.ph-duotone.ph-cloud-fog:before {\n content: '\\e53c';\n opacity: 0.2;\n}\n.ph-duotone.ph-cloud-fog:after {\n content: '\\e53d';\n margin-left: -1em;\n}\n.ph-duotone.ph-cloud-lightning:before {\n content: '\\e1b2';\n opacity: 0.2;\n}\n.ph-duotone.ph-cloud-lightning:after {\n content: '\\e1b3';\n margin-left: -1em;\n}\n.ph-duotone.ph-cloud-moon:before {\n content: '\\e53e';\n opacity: 0.2;\n}\n.ph-duotone.ph-cloud-moon:after {\n content: '\\e53f';\n margin-left: -1em;\n}\n.ph-duotone.ph-cloud-rain:before {\n content: '\\e1b4';\n opacity: 0.2;\n}\n.ph-duotone.ph-cloud-rain:after {\n content: '\\e1b5';\n margin-left: -1em;\n}\n.ph-duotone.ph-cloud-slash:before {\n content: '\\e1b6';\n opacity: 0.2;\n}\n.ph-duotone.ph-cloud-slash:after {\n content: '\\e1b7';\n margin-left: -1em;\n}\n.ph-duotone.ph-cloud-snow:before {\n content: '\\e1b8';\n opacity: 0.2;\n}\n.ph-duotone.ph-cloud-snow:after {\n content: '\\e1b9';\n margin-left: -1em;\n}\n.ph-duotone.ph-cloud-sun:before {\n content: '\\e540';\n opacity: 0.2;\n}\n.ph-duotone.ph-cloud-sun:after {\n content: '\\e541';\n margin-left: -1em;\n}\n.ph-duotone.ph-cloud-warning:before {\n content: '\\ea98';\n opacity: 0.2;\n}\n.ph-duotone.ph-cloud-warning:after {\n content: '\\ea99';\n margin-left: -1em;\n}\n.ph-duotone.ph-cloud-x:before {\n content: '\\ea96';\n opacity: 0.2;\n}\n.ph-duotone.ph-cloud-x:after {\n content: '\\ea97';\n margin-left: -1em;\n}\n.ph-duotone.ph-clover:before {\n content: '\\edc8';\n opacity: 0.2;\n}\n.ph-duotone.ph-clover:after {\n content: '\\edc9';\n margin-left: -1em;\n}\n.ph-duotone.ph-club:before {\n content: '\\e1ba';\n opacity: 0.2;\n}\n.ph-duotone.ph-club:after {\n content: '\\e1bb';\n margin-left: -1em;\n}\n.ph-duotone.ph-coat-hanger:before {\n content: '\\e7fe';\n opacity: 0.2;\n}\n.ph-duotone.ph-coat-hanger:after {\n content: '\\e7ff';\n margin-left: -1em;\n}\n.ph-duotone.ph-coda-logo:before {\n content: '\\e7ce';\n opacity: 0.2;\n}\n.ph-duotone.ph-coda-logo:after {\n content: '\\e7cf';\n margin-left: -1em;\n}\n.ph-duotone.ph-code:before {\n content: '\\e1bc';\n opacity: 0.2;\n}\n.ph-duotone.ph-code:after {\n content: '\\e1bd';\n margin-left: -1em;\n}\n.ph-duotone.ph-code-block:before {\n content: '\\eafe';\n opacity: 0.2;\n}\n.ph-duotone.ph-code-block:after {\n content: '\\eaff';\n margin-left: -1em;\n}\n.ph-duotone.ph-code-simple:before {\n content: '\\e1be';\n opacity: 0.2;\n}\n.ph-duotone.ph-code-simple:after {\n content: '\\e1bf';\n margin-left: -1em;\n}\n.ph-duotone.ph-codepen-logo:before {\n content: '\\e978';\n opacity: 0.2;\n}\n.ph-duotone.ph-codepen-logo:after {\n content: '\\e979';\n margin-left: -1em;\n}\n.ph-duotone.ph-codesandbox-logo:before {\n content: '\\ea06';\n opacity: 0.2;\n}\n.ph-duotone.ph-codesandbox-logo:after {\n content: '\\ea07';\n margin-left: -1em;\n}\n.ph-duotone.ph-coffee:before {\n content: '\\e1c2';\n opacity: 0.2;\n}\n.ph-duotone.ph-coffee:after {\n content: '\\e1c3';\n margin-left: -1em;\n}\n.ph-duotone.ph-coffee-bean:before {\n content: '\\e1c0';\n opacity: 0.2;\n}\n.ph-duotone.ph-coffee-bean:after {\n content: '\\e1c1';\n margin-left: -1em;\n}\n.ph-duotone.ph-coin:before {\n content: '\\e60e';\n opacity: 0.2;\n}\n.ph-duotone.ph-coin:after {\n content: '\\e60f';\n margin-left: -1em;\n}\n.ph-duotone.ph-coin-vertical:before {\n content: '\\eb48';\n opacity: 0.2;\n}\n.ph-duotone.ph-coin-vertical:after {\n content: '\\eb49';\n margin-left: -1em;\n}\n.ph-duotone.ph-coins:before {\n content: '\\e78e';\n opacity: 0.2;\n}\n.ph-duotone.ph-coins:after {\n content: '\\e78f';\n margin-left: -1em;\n}\n.ph-duotone.ph-columns:before {\n content: '\\e546';\n opacity: 0.2;\n}\n.ph-duotone.ph-columns:after {\n content: '\\e547';\n margin-left: -1em;\n}\n.ph-duotone.ph-columns-plus-left:before {\n content: '\\e544';\n opacity: 0.2;\n}\n.ph-duotone.ph-columns-plus-left:after {\n content: '\\e545';\n margin-left: -1em;\n}\n.ph-duotone.ph-columns-plus-right:before {\n content: '\\e542';\n opacity: 0.2;\n}\n.ph-duotone.ph-columns-plus-right:after {\n content: '\\e543';\n margin-left: -1em;\n}\n.ph-duotone.ph-command:before {\n content: '\\e1c4';\n opacity: 0.2;\n}\n.ph-duotone.ph-command:after {\n content: '\\e1c5';\n margin-left: -1em;\n}\n.ph-duotone.ph-compass:before {\n content: '\\e1c8';\n opacity: 0.2;\n}\n.ph-duotone.ph-compass:after {\n content: '\\e1c9';\n margin-left: -1em;\n}\n.ph-duotone.ph-compass-rose:before {\n content: '\\e1c6';\n opacity: 0.2;\n}\n.ph-duotone.ph-compass-rose:after {\n content: '\\e1c7';\n margin-left: -1em;\n}\n.ph-duotone.ph-compass-tool:before {\n content: '\\ea0e';\n opacity: 0.2;\n}\n.ph-duotone.ph-compass-tool:after {\n content: '\\ea0f';\n margin-left: -1em;\n}\n.ph-duotone.ph-computer-tower:before {\n content: '\\e548';\n opacity: 0.2;\n}\n.ph-duotone.ph-computer-tower:after {\n content: '\\e549';\n margin-left: -1em;\n}\n.ph-duotone.ph-confetti:before {\n content: '\\e81a';\n opacity: 0.2;\n}\n.ph-duotone.ph-confetti:after {\n content: '\\e81b';\n margin-left: -1em;\n}\n.ph-duotone.ph-contactless-payment:before {\n content: '\\ed42';\n opacity: 0.2;\n}\n.ph-duotone.ph-contactless-payment:after {\n content: '\\ed43';\n margin-left: -1em;\n}\n.ph-duotone.ph-control:before {\n content: '\\eca6';\n opacity: 0.2;\n}\n.ph-duotone.ph-control:after {\n content: '\\eca7';\n margin-left: -1em;\n}\n.ph-duotone.ph-cookie:before {\n content: '\\e6ca';\n opacity: 0.2;\n}\n.ph-duotone.ph-cookie:after {\n content: '\\e6cb';\n margin-left: -1em;\n}\n.ph-duotone.ph-cooking-pot:before {\n content: '\\e764';\n opacity: 0.2;\n}\n.ph-duotone.ph-cooking-pot:after {\n content: '\\e765';\n margin-left: -1em;\n}\n.ph-duotone.ph-copy:before {\n content: '\\e1ca';\n opacity: 0.2;\n}\n.ph-duotone.ph-copy:after {\n content: '\\e1cb';\n margin-left: -1em;\n}\n.ph-duotone.ph-copy-simple:before {\n content: '\\e1cc';\n opacity: 0.2;\n}\n.ph-duotone.ph-copy-simple:after {\n content: '\\e1cd';\n margin-left: -1em;\n}\n.ph-duotone.ph-copyleft:before {\n content: '\\e86a';\n opacity: 0.2;\n}\n.ph-duotone.ph-copyleft:after {\n content: '\\e86b';\n margin-left: -1em;\n}\n.ph-duotone.ph-copyright:before {\n content: '\\e54a';\n opacity: 0.2;\n}\n.ph-duotone.ph-copyright:after {\n content: '\\e54b';\n margin-left: -1em;\n}\n.ph-duotone.ph-corners-in:before {\n content: '\\e1ce';\n opacity: 0.2;\n}\n.ph-duotone.ph-corners-in:after {\n content: '\\e1cf';\n margin-left: -1em;\n}\n.ph-duotone.ph-corners-out:before {\n content: '\\e1d0';\n opacity: 0.2;\n}\n.ph-duotone.ph-corners-out:after {\n content: '\\e1d1';\n margin-left: -1em;\n}\n.ph-duotone.ph-couch:before {\n content: '\\e7f6';\n opacity: 0.2;\n}\n.ph-duotone.ph-couch:after {\n content: '\\e7f7';\n margin-left: -1em;\n}\n.ph-duotone.ph-court-basketball:before {\n content: '\\ee36';\n opacity: 0.2;\n}\n.ph-duotone.ph-court-basketball:after {\n content: '\\ee37';\n margin-left: -1em;\n}\n.ph-duotone.ph-cow:before {\n content: '\\eabe';\n opacity: 0.2;\n}\n.ph-duotone.ph-cow:after {\n content: '\\eabf';\n margin-left: -1em;\n}\n.ph-duotone.ph-cowboy-hat:before {\n content: '\\ed12';\n opacity: 0.2;\n}\n.ph-duotone.ph-cowboy-hat:after {\n content: '\\ed13';\n margin-left: -1em;\n}\n.ph-duotone.ph-cpu:before {\n content: '\\e610';\n opacity: 0.2;\n}\n.ph-duotone.ph-cpu:after {\n content: '\\e611';\n margin-left: -1em;\n}\n.ph-duotone.ph-crane:before {\n content: '\\ed48';\n opacity: 0.2;\n}\n.ph-duotone.ph-crane:after {\n content: '\\ed4b';\n margin-left: -1em;\n}\n.ph-duotone.ph-crane-tower:before {\n content: '\\ed49';\n opacity: 0.2;\n}\n.ph-duotone.ph-crane-tower:after {\n content: '\\ed4d';\n margin-left: -1em;\n}\n.ph-duotone.ph-credit-card:before {\n content: '\\e1d2';\n opacity: 0.2;\n}\n.ph-duotone.ph-credit-card:after {\n content: '\\e1d3';\n margin-left: -1em;\n}\n.ph-duotone.ph-cricket:before {\n content: '\\ee12';\n opacity: 0.2;\n}\n.ph-duotone.ph-cricket:after {\n content: '\\ee13';\n margin-left: -1em;\n}\n.ph-duotone.ph-crop:before {\n content: '\\e1d4';\n opacity: 0.2;\n}\n.ph-duotone.ph-crop:after {\n content: '\\e1d5';\n margin-left: -1em;\n}\n.ph-duotone.ph-cross:before {\n content: '\\e8a0';\n opacity: 0.2;\n}\n.ph-duotone.ph-cross:after {\n content: '\\e8a1';\n margin-left: -1em;\n}\n.ph-duotone.ph-crosshair:before {\n content: '\\e1d6';\n opacity: 0.2;\n}\n.ph-duotone.ph-crosshair:after {\n content: '\\e1d7';\n margin-left: -1em;\n}\n.ph-duotone.ph-crosshair-simple:before {\n content: '\\e1d8';\n opacity: 0.2;\n}\n.ph-duotone.ph-crosshair-simple:after {\n content: '\\e1d9';\n margin-left: -1em;\n}\n.ph-duotone.ph-crown:before {\n content: '\\e614';\n opacity: 0.2;\n}\n.ph-duotone.ph-crown:after {\n content: '\\e615';\n margin-left: -1em;\n}\n.ph-duotone.ph-crown-cross:before {\n content: '\\ee5e';\n opacity: 0.2;\n}\n.ph-duotone.ph-crown-cross:after {\n content: '\\ee5f';\n margin-left: -1em;\n}\n.ph-duotone.ph-crown-simple:before {\n content: '\\e616';\n opacity: 0.2;\n}\n.ph-duotone.ph-crown-simple:after {\n content: '\\e617';\n margin-left: -1em;\n}\n.ph-duotone.ph-cube:before {\n content: '\\e1da';\n opacity: 0.2;\n}\n.ph-duotone.ph-cube:after {\n content: '\\e1db';\n margin-left: -1em;\n}\n.ph-duotone.ph-cube-focus:before {\n content: '\\ed0a';\n opacity: 0.2;\n}\n.ph-duotone.ph-cube-focus:after {\n content: '\\ed0b';\n margin-left: -1em;\n}\n.ph-duotone.ph-cube-transparent:before {\n content: '\\ec7c';\n opacity: 0.2;\n}\n.ph-duotone.ph-cube-transparent:after {\n content: '\\ec7d';\n margin-left: -1em;\n}\n.ph-duotone.ph-currency-btc:before {\n content: '\\e618';\n opacity: 0.2;\n}\n.ph-duotone.ph-currency-btc:after {\n content: '\\e619';\n margin-left: -1em;\n}\n.ph-duotone.ph-currency-circle-dollar:before {\n content: '\\e54c';\n opacity: 0.2;\n}\n.ph-duotone.ph-currency-circle-dollar:after {\n content: '\\e54d';\n margin-left: -1em;\n}\n.ph-duotone.ph-currency-cny:before {\n content: '\\e54e';\n opacity: 0.2;\n}\n.ph-duotone.ph-currency-cny:after {\n content: '\\e54f';\n margin-left: -1em;\n}\n.ph-duotone.ph-currency-dollar:before {\n content: '\\e550';\n opacity: 0.2;\n}\n.ph-duotone.ph-currency-dollar:after {\n content: '\\e551';\n margin-left: -1em;\n}\n.ph-duotone.ph-currency-dollar-simple:before {\n content: '\\e552';\n opacity: 0.2;\n}\n.ph-duotone.ph-currency-dollar-simple:after {\n content: '\\e553';\n margin-left: -1em;\n}\n.ph-duotone.ph-currency-eth:before {\n content: '\\eada';\n opacity: 0.2;\n}\n.ph-duotone.ph-currency-eth:after {\n content: '\\eadb';\n margin-left: -1em;\n}\n.ph-duotone.ph-currency-eur:before {\n content: '\\e554';\n opacity: 0.2;\n}\n.ph-duotone.ph-currency-eur:after {\n content: '\\e555';\n margin-left: -1em;\n}\n.ph-duotone.ph-currency-gbp:before {\n content: '\\e556';\n opacity: 0.2;\n}\n.ph-duotone.ph-currency-gbp:after {\n content: '\\e557';\n margin-left: -1em;\n}\n.ph-duotone.ph-currency-inr:before {\n content: '\\e558';\n opacity: 0.2;\n}\n.ph-duotone.ph-currency-inr:after {\n content: '\\e559';\n margin-left: -1em;\n}\n.ph-duotone.ph-currency-jpy:before {\n content: '\\e55a';\n opacity: 0.2;\n}\n.ph-duotone.ph-currency-jpy:after {\n content: '\\e55b';\n margin-left: -1em;\n}\n.ph-duotone.ph-currency-krw:before {\n content: '\\e55c';\n opacity: 0.2;\n}\n.ph-duotone.ph-currency-krw:after {\n content: '\\e55d';\n margin-left: -1em;\n}\n.ph-duotone.ph-currency-kzt:before {\n content: '\\ec4c';\n opacity: 0.2;\n}\n.ph-duotone.ph-currency-kzt:after {\n content: '\\ec4d';\n margin-left: -1em;\n}\n.ph-duotone.ph-currency-ngn:before {\n content: '\\eb52';\n opacity: 0.2;\n}\n.ph-duotone.ph-currency-ngn:after {\n content: '\\eb53';\n margin-left: -1em;\n}\n.ph-duotone.ph-currency-rub:before {\n content: '\\e55e';\n opacity: 0.2;\n}\n.ph-duotone.ph-currency-rub:after {\n content: '\\e55f';\n margin-left: -1em;\n}\n.ph-duotone.ph-cursor:before {\n content: '\\e1dc';\n opacity: 0.2;\n}\n.ph-duotone.ph-cursor:after {\n content: '\\e1dd';\n margin-left: -1em;\n}\n.ph-duotone.ph-cursor-click:before {\n content: '\\e7c8';\n opacity: 0.2;\n}\n.ph-duotone.ph-cursor-click:after {\n content: '\\e7c9';\n margin-left: -1em;\n}\n.ph-duotone.ph-cursor-text:before {\n content: '\\e7d8';\n opacity: 0.2;\n}\n.ph-duotone.ph-cursor-text:after {\n content: '\\e7d9';\n margin-left: -1em;\n}\n.ph-duotone.ph-cylinder:before {\n content: '\\e8fc';\n opacity: 0.2;\n}\n.ph-duotone.ph-cylinder:after {\n content: '\\e8fd';\n margin-left: -1em;\n}\n.ph-duotone.ph-database:before {\n content: '\\e1de';\n opacity: 0.2;\n}\n.ph-duotone.ph-database:after {\n content: '\\e1df';\n margin-left: -1em;\n}\n.ph-duotone.ph-desk:before {\n content: '\\ed16';\n opacity: 0.2;\n}\n.ph-duotone.ph-desk:after {\n content: '\\ed17';\n margin-left: -1em;\n}\n.ph-duotone.ph-desktop:before {\n content: '\\e560';\n opacity: 0.2;\n}\n.ph-duotone.ph-desktop:after {\n content: '\\e561';\n margin-left: -1em;\n}\n.ph-duotone.ph-desktop-tower:before {\n content: '\\e562';\n opacity: 0.2;\n}\n.ph-duotone.ph-desktop-tower:after {\n content: '\\e563';\n margin-left: -1em;\n}\n.ph-duotone.ph-detective:before {\n content: '\\e83e';\n opacity: 0.2;\n}\n.ph-duotone.ph-detective:after {\n content: '\\e83f';\n margin-left: -1em;\n}\n.ph-duotone.ph-dev-to-logo:before {\n content: '\\ed0e';\n opacity: 0.2;\n}\n.ph-duotone.ph-dev-to-logo:after {\n content: '\\ed0f';\n margin-left: -1em;\n}\n.ph-duotone.ph-device-mobile:before {\n content: '\\e1e0';\n opacity: 0.2;\n}\n.ph-duotone.ph-device-mobile:after {\n content: '\\e1e1';\n margin-left: -1em;\n}\n.ph-duotone.ph-device-mobile-camera:before {\n content: '\\e1e2';\n opacity: 0.2;\n}\n.ph-duotone.ph-device-mobile-camera:after {\n content: '\\e1e3';\n margin-left: -1em;\n}\n.ph-duotone.ph-device-mobile-slash:before {\n content: '\\ee46';\n opacity: 0.2;\n}\n.ph-duotone.ph-device-mobile-slash:after {\n content: '\\ee47';\n margin-left: -1em;\n}\n.ph-duotone.ph-device-mobile-speaker:before {\n content: '\\e1e4';\n opacity: 0.2;\n}\n.ph-duotone.ph-device-mobile-speaker:after {\n content: '\\e1e5';\n margin-left: -1em;\n}\n.ph-duotone.ph-device-rotate:before {\n content: '\\edf2';\n opacity: 0.2;\n}\n.ph-duotone.ph-device-rotate:after {\n content: '\\edf3';\n margin-left: -1em;\n}\n.ph-duotone.ph-device-tablet:before {\n content: '\\e1e6';\n opacity: 0.2;\n}\n.ph-duotone.ph-device-tablet:after {\n content: '\\e1e7';\n margin-left: -1em;\n}\n.ph-duotone.ph-device-tablet-camera:before {\n content: '\\e1e8';\n opacity: 0.2;\n}\n.ph-duotone.ph-device-tablet-camera:after {\n content: '\\e1e9';\n margin-left: -1em;\n}\n.ph-duotone.ph-device-tablet-speaker:before {\n content: '\\e1ea';\n opacity: 0.2;\n}\n.ph-duotone.ph-device-tablet-speaker:after {\n content: '\\e1eb';\n margin-left: -1em;\n}\n.ph-duotone.ph-devices:before {\n content: '\\eba4';\n opacity: 0.2;\n}\n.ph-duotone.ph-devices:after {\n content: '\\eba5';\n margin-left: -1em;\n}\n.ph-duotone.ph-diamond:before {\n content: '\\e1ec';\n opacity: 0.2;\n}\n.ph-duotone.ph-diamond:after {\n content: '\\e1ed';\n margin-left: -1em;\n}\n.ph-duotone.ph-diamonds-four:before {\n content: '\\e8f4';\n opacity: 0.2;\n}\n.ph-duotone.ph-diamonds-four:after {\n content: '\\e8f5';\n margin-left: -1em;\n}\n.ph-duotone.ph-dice-five:before {\n content: '\\e1ee';\n opacity: 0.2;\n}\n.ph-duotone.ph-dice-five:after {\n content: '\\e1ef';\n margin-left: -1em;\n}\n.ph-duotone.ph-dice-four:before {\n content: '\\e1f0';\n opacity: 0.2;\n}\n.ph-duotone.ph-dice-four:after {\n content: '\\e1f1';\n margin-left: -1em;\n}\n.ph-duotone.ph-dice-one:before {\n content: '\\e1f2';\n opacity: 0.2;\n}\n.ph-duotone.ph-dice-one:after {\n content: '\\e1f3';\n margin-left: -1em;\n}\n.ph-duotone.ph-dice-six:before {\n content: '\\e1f4';\n opacity: 0.2;\n}\n.ph-duotone.ph-dice-six:after {\n content: '\\e1f5';\n margin-left: -1em;\n}\n.ph-duotone.ph-dice-three:before {\n content: '\\e1f6';\n opacity: 0.2;\n}\n.ph-duotone.ph-dice-three:after {\n content: '\\e1f7';\n margin-left: -1em;\n}\n.ph-duotone.ph-dice-two:before {\n content: '\\e1f8';\n opacity: 0.2;\n}\n.ph-duotone.ph-dice-two:after {\n content: '\\e1f9';\n margin-left: -1em;\n}\n.ph-duotone.ph-disc:before {\n content: '\\e564';\n opacity: 0.2;\n}\n.ph-duotone.ph-disc:after {\n content: '\\e565';\n margin-left: -1em;\n}\n.ph-duotone.ph-disco-ball:before {\n content: '\\ed98';\n opacity: 0.2;\n}\n.ph-duotone.ph-disco-ball:after {\n content: '\\ed99';\n margin-left: -1em;\n}\n.ph-duotone.ph-discord-logo:before {\n content: '\\e61a';\n opacity: 0.2;\n}\n.ph-duotone.ph-discord-logo:after {\n content: '\\e61b';\n margin-left: -1em;\n}\n.ph-duotone.ph-divide:before {\n content: '\\e1fa';\n opacity: 0.2;\n}\n.ph-duotone.ph-divide:after {\n content: '\\e1fb';\n margin-left: -1em;\n}\n.ph-duotone.ph-dna:before {\n content: '\\e924';\n opacity: 0.2;\n}\n.ph-duotone.ph-dna:after {\n content: '\\e925';\n margin-left: -1em;\n}\n.ph-duotone.ph-dog:before {\n content: '\\e74a';\n opacity: 0.2;\n}\n.ph-duotone.ph-dog:after {\n content: '\\e74b';\n margin-left: -1em;\n}\n.ph-duotone.ph-door:before {\n content: '\\e61c';\n opacity: 0.2;\n}\n.ph-duotone.ph-door:after {\n content: '\\e61d';\n margin-left: -1em;\n}\n.ph-duotone.ph-door-open:before {\n content: '\\e7e6';\n opacity: 0.2;\n}\n.ph-duotone.ph-door-open:after {\n content: '\\e7e7';\n margin-left: -1em;\n}\n.ph-duotone.ph-dot:before {\n content: '\\ecde';\n opacity: 0.2;\n}\n.ph-duotone.ph-dot:after {\n content: '\\ecdf';\n margin-left: -1em;\n}\n.ph-duotone.ph-dot-outline:before {\n content: '\\ece0';\n opacity: 0.2;\n}\n.ph-duotone.ph-dot-outline:after {\n content: '\\ece1';\n margin-left: -1em;\n}\n.ph-duotone.ph-dots-nine:before {\n content: '\\e1fc';\n opacity: 0.2;\n}\n.ph-duotone.ph-dots-nine:after {\n content: '\\e1fd';\n margin-left: -1em;\n}\n.ph-duotone.ph-dots-six:before {\n content: '\\e794';\n opacity: 0.2;\n}\n.ph-duotone.ph-dots-six:after {\n content: '\\e795';\n margin-left: -1em;\n}\n.ph-duotone.ph-dots-six-vertical:before {\n content: '\\eae2';\n opacity: 0.2;\n}\n.ph-duotone.ph-dots-six-vertical:after {\n content: '\\eae3';\n margin-left: -1em;\n}\n.ph-duotone.ph-dots-three:before {\n content: '\\e1fe';\n opacity: 0.2;\n}\n.ph-duotone.ph-dots-three:after {\n content: '\\e1ff';\n margin-left: -1em;\n}\n.ph-duotone.ph-dots-three-circle:before {\n content: '\\e200';\n opacity: 0.2;\n}\n.ph-duotone.ph-dots-three-circle:after {\n content: '\\e201';\n margin-left: -1em;\n}\n.ph-duotone.ph-dots-three-circle-vertical:before {\n content: '\\e202';\n opacity: 0.2;\n}\n.ph-duotone.ph-dots-three-circle-vertical:after {\n content: '\\e203';\n margin-left: -1em;\n}\n.ph-duotone.ph-dots-three-outline:before {\n content: '\\e204';\n opacity: 0.2;\n}\n.ph-duotone.ph-dots-three-outline:after {\n content: '\\e205';\n margin-left: -1em;\n}\n.ph-duotone.ph-dots-three-outline-vertical:before {\n content: '\\e206';\n opacity: 0.2;\n}\n.ph-duotone.ph-dots-three-outline-vertical:after {\n content: '\\e207';\n margin-left: -1em;\n}\n.ph-duotone.ph-dots-three-vertical:before {\n content: '\\e208';\n opacity: 0.2;\n}\n.ph-duotone.ph-dots-three-vertical:after {\n content: '\\e209';\n margin-left: -1em;\n}\n.ph-duotone.ph-download:before {\n content: '\\e20a';\n opacity: 0.2;\n}\n.ph-duotone.ph-download:after {\n content: '\\e20b';\n margin-left: -1em;\n}\n.ph-duotone.ph-download-simple:before {\n content: '\\e20c';\n opacity: 0.2;\n}\n.ph-duotone.ph-download-simple:after {\n content: '\\e20d';\n margin-left: -1em;\n}\n.ph-duotone.ph-dress:before {\n content: '\\ea7e';\n opacity: 0.2;\n}\n.ph-duotone.ph-dress:after {\n content: '\\ea7f';\n margin-left: -1em;\n}\n.ph-duotone.ph-dresser:before {\n content: '\\e94e';\n opacity: 0.2;\n}\n.ph-duotone.ph-dresser:after {\n content: '\\e94f';\n margin-left: -1em;\n}\n.ph-duotone.ph-dribbble-logo:before {\n content: '\\e20e';\n opacity: 0.2;\n}\n.ph-duotone.ph-dribbble-logo:after {\n content: '\\e20f';\n margin-left: -1em;\n}\n.ph-duotone.ph-drone:before {\n content: '\\ed74';\n opacity: 0.2;\n}\n.ph-duotone.ph-drone:after {\n content: '\\ed75';\n margin-left: -1em;\n}\n.ph-duotone.ph-drop:before {\n content: '\\e210';\n opacity: 0.2;\n}\n.ph-duotone.ph-drop:after {\n content: '\\e211';\n margin-left: -1em;\n}\n.ph-duotone.ph-drop-half:before {\n content: '\\e566';\n opacity: 0.2;\n}\n.ph-duotone.ph-drop-half:after {\n content: '\\e567';\n margin-left: -1em;\n}\n.ph-duotone.ph-drop-half-bottom:before {\n content: '\\eb40';\n opacity: 0.2;\n}\n.ph-duotone.ph-drop-half-bottom:after {\n content: '\\eb41';\n margin-left: -1em;\n}\n.ph-duotone.ph-drop-simple:before {\n content: '\\ee32';\n opacity: 0.2;\n}\n.ph-duotone.ph-drop-simple:after {\n content: '\\ee33';\n margin-left: -1em;\n}\n.ph-duotone.ph-drop-slash:before {\n content: '\\e954';\n opacity: 0.2;\n}\n.ph-duotone.ph-drop-slash:after {\n content: '\\e955';\n margin-left: -1em;\n}\n.ph-duotone.ph-dropbox-logo:before {\n content: '\\e7d0';\n opacity: 0.2;\n}\n.ph-duotone.ph-dropbox-logo:after {\n content: '\\e7d1';\n margin-left: -1em;\n}\n.ph-duotone.ph-ear:before {\n content: '\\e70c';\n opacity: 0.2;\n}\n.ph-duotone.ph-ear:after {\n content: '\\e70d';\n margin-left: -1em;\n}\n.ph-duotone.ph-ear-slash:before {\n content: '\\e70e';\n opacity: 0.2;\n}\n.ph-duotone.ph-ear-slash:after {\n content: '\\e70f';\n margin-left: -1em;\n}\n.ph-duotone.ph-egg:before {\n content: '\\e812';\n opacity: 0.2;\n}\n.ph-duotone.ph-egg:after {\n content: '\\e813';\n margin-left: -1em;\n}\n.ph-duotone.ph-egg-crack:before {\n content: '\\eb64';\n opacity: 0.2;\n}\n.ph-duotone.ph-egg-crack:after {\n content: '\\eb65';\n margin-left: -1em;\n}\n.ph-duotone.ph-eject:before {\n content: '\\e212';\n opacity: 0.2;\n}\n.ph-duotone.ph-eject:after {\n content: '\\e213';\n margin-left: -1em;\n}\n.ph-duotone.ph-eject-simple:before {\n content: '\\e6ae';\n opacity: 0.2;\n}\n.ph-duotone.ph-eject-simple:after {\n content: '\\e6af';\n margin-left: -1em;\n}\n.ph-duotone.ph-elevator:before {\n content: '\\ecc0';\n opacity: 0.2;\n}\n.ph-duotone.ph-elevator:after {\n content: '\\ecc1';\n margin-left: -1em;\n}\n.ph-duotone.ph-empty:before {\n content: '\\edbc';\n opacity: 0.2;\n}\n.ph-duotone.ph-empty:after {\n content: '\\edbd';\n margin-left: -1em;\n}\n.ph-duotone.ph-engine:before {\n content: '\\ea80';\n opacity: 0.2;\n}\n.ph-duotone.ph-engine:after {\n content: '\\ea81';\n margin-left: -1em;\n}\n.ph-duotone.ph-envelope:before {\n content: '\\e214';\n opacity: 0.2;\n}\n.ph-duotone.ph-envelope:after {\n content: '\\e215';\n margin-left: -1em;\n}\n.ph-duotone.ph-envelope-open:before {\n content: '\\e216';\n opacity: 0.2;\n}\n.ph-duotone.ph-envelope-open:after {\n content: '\\e217';\n margin-left: -1em;\n}\n.ph-duotone.ph-envelope-simple:before {\n content: '\\e218';\n opacity: 0.2;\n}\n.ph-duotone.ph-envelope-simple:after {\n content: '\\e219';\n margin-left: -1em;\n}\n.ph-duotone.ph-envelope-simple-open:before {\n content: '\\e21a';\n opacity: 0.2;\n}\n.ph-duotone.ph-envelope-simple-open:after {\n content: '\\e21b';\n margin-left: -1em;\n}\n.ph-duotone.ph-equalizer:before {\n content: '\\ebbc';\n opacity: 0.2;\n}\n.ph-duotone.ph-equalizer:after {\n content: '\\ebbd';\n margin-left: -1em;\n}\n.ph-duotone.ph-equals:before {\n content: '\\e21c';\n opacity: 0.2;\n}\n.ph-duotone.ph-equals:after {\n content: '\\e21d';\n margin-left: -1em;\n}\n.ph-duotone.ph-eraser:before {\n content: '\\e21e';\n opacity: 0.2;\n}\n.ph-duotone.ph-eraser:after {\n content: '\\e21f';\n margin-left: -1em;\n}\n.ph-duotone.ph-escalator-down:before {\n content: '\\ecba';\n opacity: 0.2;\n}\n.ph-duotone.ph-escalator-down:after {\n content: '\\ecbb';\n margin-left: -1em;\n}\n.ph-duotone.ph-escalator-up:before {\n content: '\\ecbc';\n opacity: 0.2;\n}\n.ph-duotone.ph-escalator-up:after {\n content: '\\ecbd';\n margin-left: -1em;\n}\n.ph-duotone.ph-exam:before {\n content: '\\e742';\n opacity: 0.2;\n}\n.ph-duotone.ph-exam:after {\n content: '\\e743';\n margin-left: -1em;\n}\n.ph-duotone.ph-exclamation-mark:before {\n content: '\\ee44';\n opacity: 0.2;\n}\n.ph-duotone.ph-exclamation-mark:after {\n content: '\\ee45';\n margin-left: -1em;\n}\n.ph-duotone.ph-exclude:before {\n content: '\\e882';\n opacity: 0.2;\n}\n.ph-duotone.ph-exclude:after {\n content: '\\e883';\n margin-left: -1em;\n}\n.ph-duotone.ph-exclude-square:before {\n content: '\\e880';\n opacity: 0.2;\n}\n.ph-duotone.ph-exclude-square:after {\n content: '\\e881';\n margin-left: -1em;\n}\n.ph-duotone.ph-export:before {\n content: '\\eaf0';\n opacity: 0.2;\n}\n.ph-duotone.ph-export:after {\n content: '\\eaf1';\n margin-left: -1em;\n}\n.ph-duotone.ph-eye:before {\n content: '\\e220';\n opacity: 0.2;\n}\n.ph-duotone.ph-eye:after {\n content: '\\e221';\n margin-left: -1em;\n}\n.ph-duotone.ph-eye-closed:before {\n content: '\\e222';\n opacity: 0.2;\n}\n.ph-duotone.ph-eye-closed:after {\n content: '\\e223';\n margin-left: -1em;\n}\n.ph-duotone.ph-eye-slash:before {\n content: '\\e224';\n opacity: 0.2;\n}\n.ph-duotone.ph-eye-slash:after {\n content: '\\e225';\n margin-left: -1em;\n}\n.ph-duotone.ph-eyedropper:before {\n content: '\\e568';\n opacity: 0.2;\n}\n.ph-duotone.ph-eyedropper:after {\n content: '\\e569';\n margin-left: -1em;\n}\n.ph-duotone.ph-eyedropper-sample:before {\n content: '\\eac4';\n opacity: 0.2;\n}\n.ph-duotone.ph-eyedropper-sample:after {\n content: '\\eac5';\n margin-left: -1em;\n}\n.ph-duotone.ph-eyeglasses:before {\n content: '\\e7ba';\n opacity: 0.2;\n}\n.ph-duotone.ph-eyeglasses:after {\n content: '\\e7bb';\n margin-left: -1em;\n}\n.ph-duotone.ph-eyes:before {\n content: '\\ee5c';\n opacity: 0.2;\n}\n.ph-duotone.ph-eyes:after {\n content: '\\ee5d';\n margin-left: -1em;\n}\n.ph-duotone.ph-face-mask:before {\n content: '\\e56a';\n opacity: 0.2;\n}\n.ph-duotone.ph-face-mask:after {\n content: '\\e56b';\n margin-left: -1em;\n}\n.ph-duotone.ph-facebook-logo:before {\n content: '\\e226';\n opacity: 0.2;\n}\n.ph-duotone.ph-facebook-logo:after {\n content: '\\e227';\n margin-left: -1em;\n}\n.ph-duotone.ph-factory:before {\n content: '\\e760';\n opacity: 0.2;\n}\n.ph-duotone.ph-factory:after {\n content: '\\e761';\n margin-left: -1em;\n}\n.ph-duotone.ph-faders:before {\n content: '\\e228';\n opacity: 0.2;\n}\n.ph-duotone.ph-faders:after {\n content: '\\e229';\n margin-left: -1em;\n}\n.ph-duotone.ph-faders-horizontal:before {\n content: '\\e22a';\n opacity: 0.2;\n}\n.ph-duotone.ph-faders-horizontal:after {\n content: '\\e22b';\n margin-left: -1em;\n}\n.ph-duotone.ph-fallout-shelter:before {\n content: '\\e9de';\n opacity: 0.2;\n}\n.ph-duotone.ph-fallout-shelter:after {\n content: '\\e9df';\n margin-left: -1em;\n}\n.ph-duotone.ph-fan:before {\n content: '\\e9f2';\n opacity: 0.2;\n}\n.ph-duotone.ph-fan:after {\n content: '\\e9f3';\n margin-left: -1em;\n}\n.ph-duotone.ph-farm:before {\n content: '\\ec70';\n opacity: 0.2;\n}\n.ph-duotone.ph-farm:after {\n content: '\\ec71';\n margin-left: -1em;\n}\n.ph-duotone.ph-fast-forward:before {\n content: '\\e6a6';\n opacity: 0.2;\n}\n.ph-duotone.ph-fast-forward:after {\n content: '\\e6a7';\n margin-left: -1em;\n}\n.ph-duotone.ph-fast-forward-circle:before {\n content: '\\e22c';\n opacity: 0.2;\n}\n.ph-duotone.ph-fast-forward-circle:after {\n content: '\\e22d';\n margin-left: -1em;\n}\n.ph-duotone.ph-feather:before {\n content: '\\e9c0';\n opacity: 0.2;\n}\n.ph-duotone.ph-feather:after {\n content: '\\e9c1';\n margin-left: -1em;\n}\n.ph-duotone.ph-fediverse-logo:before {\n content: '\\ed66';\n opacity: 0.2;\n}\n.ph-duotone.ph-fediverse-logo:after {\n content: '\\ed67';\n margin-left: -1em;\n}\n.ph-duotone.ph-figma-logo:before {\n content: '\\e22e';\n opacity: 0.2;\n}\n.ph-duotone.ph-figma-logo:after {\n content: '\\e22f';\n margin-left: -1em;\n}\n.ph-duotone.ph-file:before {\n content: '\\e230';\n opacity: 0.2;\n}\n.ph-duotone.ph-file:after {\n content: '\\e231';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-archive:before {\n content: '\\eb2a';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-archive:after {\n content: '\\eb2b';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-arrow-down:before {\n content: '\\e232';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-arrow-down:after {\n content: '\\e233';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-arrow-up:before {\n content: '\\e61e';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-arrow-up:after {\n content: '\\e61f';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-audio:before {\n content: '\\ea20';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-audio:after {\n content: '\\ea21';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-c:before {\n content: '\\eb32';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-c:after {\n content: '\\eb36';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-c-sharp:before {\n content: '\\eb30';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-c-sharp:after {\n content: '\\eb31';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-cloud:before {\n content: '\\e95e';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-cloud:after {\n content: '\\e95f';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-code:before {\n content: '\\e914';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-code:after {\n content: '\\e915';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-cpp:before {\n content: '\\eb2e';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-cpp:after {\n content: '\\eb2f';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-css:before {\n content: '\\eb34';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-css:after {\n content: '\\eb37';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-csv:before {\n content: '\\eb1c';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-csv:after {\n content: '\\eb1d';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-dashed:before {\n content: '\\e704';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-dashed:after {\n content: '\\e705';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-doc:before {\n content: '\\eb1e';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-doc:after {\n content: '\\eb1f';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-html:before {\n content: '\\eb38';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-html:after {\n content: '\\eb39';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-image:before {\n content: '\\ea24';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-image:after {\n content: '\\ea25';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-ini:before {\n content: '\\eb33';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-ini:after {\n content: '\\eb3b';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-jpg:before {\n content: '\\eb1a';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-jpg:after {\n content: '\\eb1b';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-js:before {\n content: '\\eb24';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-js:after {\n content: '\\eb25';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-jsx:before {\n content: '\\eb3a';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-jsx:after {\n content: '\\eb3d';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-lock:before {\n content: '\\e95c';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-lock:after {\n content: '\\e95d';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-magnifying-glass:before {\n content: '\\e238';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-magnifying-glass:after {\n content: '\\e239';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-md:before {\n content: '\\ed50';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-md:after {\n content: '\\ed51';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-minus:before {\n content: '\\e234';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-minus:after {\n content: '\\e235';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-pdf:before {\n content: '\\e702';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-pdf:after {\n content: '\\e703';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-plus:before {\n content: '\\e236';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-plus:after {\n content: '\\e237';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-png:before {\n content: '\\eb18';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-png:after {\n content: '\\eb19';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-ppt:before {\n content: '\\eb20';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-ppt:after {\n content: '\\eb21';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-py:before {\n content: '\\eb2c';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-py:after {\n content: '\\eb2d';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-rs:before {\n content: '\\eb28';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-rs:after {\n content: '\\eb29';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-sql:before {\n content: '\\ed4e';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-sql:after {\n content: '\\ed4f';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-svg:before {\n content: '\\ed08';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-svg:after {\n content: '\\ed09';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-text:before {\n content: '\\e23a';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-text:after {\n content: '\\e23b';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-ts:before {\n content: '\\eb26';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-ts:after {\n content: '\\eb27';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-tsx:before {\n content: '\\eb3c';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-tsx:after {\n content: '\\eb3f';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-txt:before {\n content: '\\eb35';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-txt:after {\n content: '\\eb43';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-video:before {\n content: '\\ea22';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-video:after {\n content: '\\ea23';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-vue:before {\n content: '\\eb3e';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-vue:after {\n content: '\\eb47';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-x:before {\n content: '\\e23c';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-x:after {\n content: '\\e23d';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-xls:before {\n content: '\\eb22';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-xls:after {\n content: '\\eb23';\n margin-left: -1em;\n}\n.ph-duotone.ph-file-zip:before {\n content: '\\e958';\n opacity: 0.2;\n}\n.ph-duotone.ph-file-zip:after {\n content: '\\e959';\n margin-left: -1em;\n}\n.ph-duotone.ph-files:before {\n content: '\\e710';\n opacity: 0.2;\n}\n.ph-duotone.ph-files:after {\n content: '\\e711';\n margin-left: -1em;\n}\n.ph-duotone.ph-film-reel:before {\n content: '\\e8c0';\n opacity: 0.2;\n}\n.ph-duotone.ph-film-reel:after {\n content: '\\e8c1';\n margin-left: -1em;\n}\n.ph-duotone.ph-film-script:before {\n content: '\\eb50';\n opacity: 0.2;\n}\n.ph-duotone.ph-film-script:after {\n content: '\\eb51';\n margin-left: -1em;\n}\n.ph-duotone.ph-film-slate:before {\n content: '\\e8c2';\n opacity: 0.2;\n}\n.ph-duotone.ph-film-slate:after {\n content: '\\e8c3';\n margin-left: -1em;\n}\n.ph-duotone.ph-film-strip:before {\n content: '\\e792';\n opacity: 0.2;\n}\n.ph-duotone.ph-film-strip:after {\n content: '\\e793';\n margin-left: -1em;\n}\n.ph-duotone.ph-fingerprint:before {\n content: '\\e23e';\n opacity: 0.2;\n}\n.ph-duotone.ph-fingerprint:after {\n content: '\\e23f';\n margin-left: -1em;\n}\n.ph-duotone.ph-fingerprint-simple:before {\n content: '\\e240';\n opacity: 0.2;\n}\n.ph-duotone.ph-fingerprint-simple:after {\n content: '\\e241';\n margin-left: -1em;\n}\n.ph-duotone.ph-finn-the-human:before {\n content: '\\e56c';\n opacity: 0.2;\n}\n.ph-duotone.ph-finn-the-human:after {\n content: '\\e56d';\n margin-left: -1em;\n}\n.ph-duotone.ph-fire:before {\n content: '\\e242';\n opacity: 0.2;\n}\n.ph-duotone.ph-fire:after {\n content: '\\e243';\n margin-left: -1em;\n}\n.ph-duotone.ph-fire-extinguisher:before {\n content: '\\e9e8';\n opacity: 0.2;\n}\n.ph-duotone.ph-fire-extinguisher:after {\n content: '\\e9e9';\n margin-left: -1em;\n}\n.ph-duotone.ph-fire-simple:before {\n content: '\\e620';\n opacity: 0.2;\n}\n.ph-duotone.ph-fire-simple:after {\n content: '\\e621';\n margin-left: -1em;\n}\n.ph-duotone.ph-fire-truck:before {\n content: '\\e574';\n opacity: 0.2;\n}\n.ph-duotone.ph-fire-truck:after {\n content: '\\e575';\n margin-left: -1em;\n}\n.ph-duotone.ph-first-aid:before {\n content: '\\e56e';\n opacity: 0.2;\n}\n.ph-duotone.ph-first-aid:after {\n content: '\\e56f';\n margin-left: -1em;\n}\n.ph-duotone.ph-first-aid-kit:before {\n content: '\\e570';\n opacity: 0.2;\n}\n.ph-duotone.ph-first-aid-kit:after {\n content: '\\e571';\n margin-left: -1em;\n}\n.ph-duotone.ph-fish:before {\n content: '\\e728';\n opacity: 0.2;\n}\n.ph-duotone.ph-fish:after {\n content: '\\e729';\n margin-left: -1em;\n}\n.ph-duotone.ph-fish-simple:before {\n content: '\\e72a';\n opacity: 0.2;\n}\n.ph-duotone.ph-fish-simple:after {\n content: '\\e72b';\n margin-left: -1em;\n}\n.ph-duotone.ph-flag:before {\n content: '\\e244';\n opacity: 0.2;\n}\n.ph-duotone.ph-flag:after {\n content: '\\e245';\n margin-left: -1em;\n}\n.ph-duotone.ph-flag-banner:before {\n content: '\\e622';\n opacity: 0.2;\n}\n.ph-duotone.ph-flag-banner:after {\n content: '\\e623';\n margin-left: -1em;\n}\n.ph-duotone.ph-flag-banner-fold:before {\n content: '\\ecf2';\n opacity: 0.2;\n}\n.ph-duotone.ph-flag-banner-fold:after {\n content: '\\ecf3';\n margin-left: -1em;\n}\n.ph-duotone.ph-flag-checkered:before {\n content: '\\ea38';\n opacity: 0.2;\n}\n.ph-duotone.ph-flag-checkered:after {\n content: '\\ea39';\n margin-left: -1em;\n}\n.ph-duotone.ph-flag-pennant:before {\n content: '\\ecf0';\n opacity: 0.2;\n}\n.ph-duotone.ph-flag-pennant:after {\n content: '\\ecf1';\n margin-left: -1em;\n}\n.ph-duotone.ph-flame:before {\n content: '\\e624';\n opacity: 0.2;\n}\n.ph-duotone.ph-flame:after {\n content: '\\e625';\n margin-left: -1em;\n}\n.ph-duotone.ph-flashlight:before {\n content: '\\e246';\n opacity: 0.2;\n}\n.ph-duotone.ph-flashlight:after {\n content: '\\e247';\n margin-left: -1em;\n}\n.ph-duotone.ph-flask:before {\n content: '\\e79e';\n opacity: 0.2;\n}\n.ph-duotone.ph-flask:after {\n content: '\\e79f';\n margin-left: -1em;\n}\n.ph-duotone.ph-flip-horizontal:before {\n content: '\\ed6a';\n opacity: 0.2;\n}\n.ph-duotone.ph-flip-horizontal:after {\n content: '\\ed6b';\n margin-left: -1em;\n}\n.ph-duotone.ph-flip-vertical:before {\n content: '\\ed6c';\n opacity: 0.2;\n}\n.ph-duotone.ph-flip-vertical:after {\n content: '\\ed6d';\n margin-left: -1em;\n}\n.ph-duotone.ph-floppy-disk:before {\n content: '\\e248';\n opacity: 0.2;\n}\n.ph-duotone.ph-floppy-disk:after {\n content: '\\e249';\n margin-left: -1em;\n}\n.ph-duotone.ph-floppy-disk-back:before {\n content: '\\eaf4';\n opacity: 0.2;\n}\n.ph-duotone.ph-floppy-disk-back:after {\n content: '\\eaf5';\n margin-left: -1em;\n}\n.ph-duotone.ph-flow-arrow:before {\n content: '\\e6ec';\n opacity: 0.2;\n}\n.ph-duotone.ph-flow-arrow:after {\n content: '\\e6ed';\n margin-left: -1em;\n}\n.ph-duotone.ph-flower:before {\n content: '\\e75e';\n opacity: 0.2;\n}\n.ph-duotone.ph-flower:after {\n content: '\\e75f';\n margin-left: -1em;\n}\n.ph-duotone.ph-flower-lotus:before {\n content: '\\e6cc';\n opacity: 0.2;\n}\n.ph-duotone.ph-flower-lotus:after {\n content: '\\e6cd';\n margin-left: -1em;\n}\n.ph-duotone.ph-flower-tulip:before {\n content: '\\eacc';\n opacity: 0.2;\n}\n.ph-duotone.ph-flower-tulip:after {\n content: '\\eacd';\n margin-left: -1em;\n}\n.ph-duotone.ph-flying-saucer:before {\n content: '\\eb4a';\n opacity: 0.2;\n}\n.ph-duotone.ph-flying-saucer:after {\n content: '\\eb4b';\n margin-left: -1em;\n}\n.ph-duotone.ph-folder:before {\n content: '\\e24a';\n opacity: 0.2;\n}\n.ph-duotone.ph-folder:after {\n content: '\\e24b';\n margin-left: -1em;\n}\n.ph-duotone.ph-folder-dashed:before {\n content: '\\e8f8';\n opacity: 0.2;\n}\n.ph-duotone.ph-folder-dashed:after {\n content: '\\e8f9';\n margin-left: -1em;\n}\n.ph-duotone.ph-folder-lock:before {\n content: '\\ea3c';\n opacity: 0.2;\n}\n.ph-duotone.ph-folder-lock:after {\n content: '\\ea3d';\n margin-left: -1em;\n}\n.ph-duotone.ph-folder-minus:before {\n content: '\\e254';\n opacity: 0.2;\n}\n.ph-duotone.ph-folder-minus:after {\n content: '\\e255';\n margin-left: -1em;\n}\n.ph-duotone.ph-folder-open:before {\n content: '\\e256';\n opacity: 0.2;\n}\n.ph-duotone.ph-folder-open:after {\n content: '\\e257';\n margin-left: -1em;\n}\n.ph-duotone.ph-folder-plus:before {\n content: '\\e258';\n opacity: 0.2;\n}\n.ph-duotone.ph-folder-plus:after {\n content: '\\e259';\n margin-left: -1em;\n}\n.ph-duotone.ph-folder-simple:before {\n content: '\\e25a';\n opacity: 0.2;\n}\n.ph-duotone.ph-folder-simple:after {\n content: '\\e25b';\n margin-left: -1em;\n}\n.ph-duotone.ph-folder-simple-dashed:before {\n content: '\\ec2a';\n opacity: 0.2;\n}\n.ph-duotone.ph-folder-simple-dashed:after {\n content: '\\ec2b';\n margin-left: -1em;\n}\n.ph-duotone.ph-folder-simple-lock:before {\n content: '\\eb5e';\n opacity: 0.2;\n}\n.ph-duotone.ph-folder-simple-lock:after {\n content: '\\eb5f';\n margin-left: -1em;\n}\n.ph-duotone.ph-folder-simple-minus:before {\n content: '\\e25c';\n opacity: 0.2;\n}\n.ph-duotone.ph-folder-simple-minus:after {\n content: '\\e25d';\n margin-left: -1em;\n}\n.ph-duotone.ph-folder-simple-plus:before {\n content: '\\e25e';\n opacity: 0.2;\n}\n.ph-duotone.ph-folder-simple-plus:after {\n content: '\\e25f';\n margin-left: -1em;\n}\n.ph-duotone.ph-folder-simple-star:before {\n content: '\\ec2e';\n opacity: 0.2;\n}\n.ph-duotone.ph-folder-simple-star:after {\n content: '\\ec2f';\n margin-left: -1em;\n}\n.ph-duotone.ph-folder-simple-user:before {\n content: '\\eb60';\n opacity: 0.2;\n}\n.ph-duotone.ph-folder-simple-user:after {\n content: '\\eb61';\n margin-left: -1em;\n}\n.ph-duotone.ph-folder-star:before {\n content: '\\ea86';\n opacity: 0.2;\n}\n.ph-duotone.ph-folder-star:after {\n content: '\\ea87';\n margin-left: -1em;\n}\n.ph-duotone.ph-folder-user:before {\n content: '\\eb46';\n opacity: 0.2;\n}\n.ph-duotone.ph-folder-user:after {\n content: '\\eb4c';\n margin-left: -1em;\n}\n.ph-duotone.ph-folders:before {\n content: '\\e260';\n opacity: 0.2;\n}\n.ph-duotone.ph-folders:after {\n content: '\\e261';\n margin-left: -1em;\n}\n.ph-duotone.ph-football:before {\n content: '\\e718';\n opacity: 0.2;\n}\n.ph-duotone.ph-football:after {\n content: '\\e719';\n margin-left: -1em;\n}\n.ph-duotone.ph-football-helmet:before {\n content: '\\ee4c';\n opacity: 0.2;\n}\n.ph-duotone.ph-football-helmet:after {\n content: '\\ee4d';\n margin-left: -1em;\n}\n.ph-duotone.ph-footprints:before {\n content: '\\ea88';\n opacity: 0.2;\n}\n.ph-duotone.ph-footprints:after {\n content: '\\ea89';\n margin-left: -1em;\n}\n.ph-duotone.ph-fork-knife:before {\n content: '\\e262';\n opacity: 0.2;\n}\n.ph-duotone.ph-fork-knife:after {\n content: '\\e263';\n margin-left: -1em;\n}\n.ph-duotone.ph-four-k:before {\n content: '\\ea5c';\n opacity: 0.2;\n}\n.ph-duotone.ph-four-k:after {\n content: '\\ea5d';\n margin-left: -1em;\n}\n.ph-duotone.ph-frame-corners:before {\n content: '\\e626';\n opacity: 0.2;\n}\n.ph-duotone.ph-frame-corners:after {\n content: '\\e627';\n margin-left: -1em;\n}\n.ph-duotone.ph-framer-logo:before {\n content: '\\e264';\n opacity: 0.2;\n}\n.ph-duotone.ph-framer-logo:after {\n content: '\\e265';\n margin-left: -1em;\n}\n.ph-duotone.ph-function:before {\n content: '\\ebe4';\n opacity: 0.2;\n}\n.ph-duotone.ph-function:after {\n content: '\\ebe5';\n margin-left: -1em;\n}\n.ph-duotone.ph-funnel:before {\n content: '\\e266';\n opacity: 0.2;\n}\n.ph-duotone.ph-funnel:after {\n content: '\\e267';\n margin-left: -1em;\n}\n.ph-duotone.ph-funnel-simple:before {\n content: '\\e268';\n opacity: 0.2;\n}\n.ph-duotone.ph-funnel-simple:after {\n content: '\\e269';\n margin-left: -1em;\n}\n.ph-duotone.ph-funnel-simple-x:before {\n content: '\\e26a';\n opacity: 0.2;\n}\n.ph-duotone.ph-funnel-simple-x:after {\n content: '\\e26b';\n margin-left: -1em;\n}\n.ph-duotone.ph-funnel-x:before {\n content: '\\e26c';\n opacity: 0.2;\n}\n.ph-duotone.ph-funnel-x:after {\n content: '\\e26d';\n margin-left: -1em;\n}\n.ph-duotone.ph-game-controller:before {\n content: '\\e26e';\n opacity: 0.2;\n}\n.ph-duotone.ph-game-controller:after {\n content: '\\e26f';\n margin-left: -1em;\n}\n.ph-duotone.ph-garage:before {\n content: '\\ecd6';\n opacity: 0.2;\n}\n.ph-duotone.ph-garage:after {\n content: '\\ecd7';\n margin-left: -1em;\n}\n.ph-duotone.ph-gas-can:before {\n content: '\\e8ce';\n opacity: 0.2;\n}\n.ph-duotone.ph-gas-can:after {\n content: '\\e8cf';\n margin-left: -1em;\n}\n.ph-duotone.ph-gas-pump:before {\n content: '\\e768';\n opacity: 0.2;\n}\n.ph-duotone.ph-gas-pump:after {\n content: '\\e769';\n margin-left: -1em;\n}\n.ph-duotone.ph-gauge:before {\n content: '\\e628';\n opacity: 0.2;\n}\n.ph-duotone.ph-gauge:after {\n content: '\\e629';\n margin-left: -1em;\n}\n.ph-duotone.ph-gavel:before {\n content: '\\ea32';\n opacity: 0.2;\n}\n.ph-duotone.ph-gavel:after {\n content: '\\ea33';\n margin-left: -1em;\n}\n.ph-duotone.ph-gear:before {\n content: '\\e270';\n opacity: 0.2;\n}\n.ph-duotone.ph-gear:after {\n content: '\\e271';\n margin-left: -1em;\n}\n.ph-duotone.ph-gear-fine:before {\n content: '\\e87c';\n opacity: 0.2;\n}\n.ph-duotone.ph-gear-fine:after {\n content: '\\e87d';\n margin-left: -1em;\n}\n.ph-duotone.ph-gear-six:before {\n content: '\\e272';\n opacity: 0.2;\n}\n.ph-duotone.ph-gear-six:after {\n content: '\\e273';\n margin-left: -1em;\n}\n.ph-duotone.ph-gender-female:before {\n content: '\\e6e0';\n opacity: 0.2;\n}\n.ph-duotone.ph-gender-female:after {\n content: '\\e6e1';\n margin-left: -1em;\n}\n.ph-duotone.ph-gender-intersex:before {\n content: '\\e6e6';\n opacity: 0.2;\n}\n.ph-duotone.ph-gender-intersex:after {\n content: '\\e6e7';\n margin-left: -1em;\n}\n.ph-duotone.ph-gender-male:before {\n content: '\\e6e2';\n opacity: 0.2;\n}\n.ph-duotone.ph-gender-male:after {\n content: '\\e6e3';\n margin-left: -1em;\n}\n.ph-duotone.ph-gender-neuter:before {\n content: '\\e6ea';\n opacity: 0.2;\n}\n.ph-duotone.ph-gender-neuter:after {\n content: '\\e6eb';\n margin-left: -1em;\n}\n.ph-duotone.ph-gender-nonbinary:before {\n content: '\\e6e4';\n opacity: 0.2;\n}\n.ph-duotone.ph-gender-nonbinary:after {\n content: '\\e6e5';\n margin-left: -1em;\n}\n.ph-duotone.ph-gender-transgender:before {\n content: '\\e6e8';\n opacity: 0.2;\n}\n.ph-duotone.ph-gender-transgender:after {\n content: '\\e6e9';\n margin-left: -1em;\n}\n.ph-duotone.ph-ghost:before {\n content: '\\e62a';\n opacity: 0.2;\n}\n.ph-duotone.ph-ghost:after {\n content: '\\e62b';\n margin-left: -1em;\n}\n.ph-duotone.ph-gif:before {\n content: '\\e274';\n opacity: 0.2;\n}\n.ph-duotone.ph-gif:after {\n content: '\\e275';\n margin-left: -1em;\n}\n.ph-duotone.ph-gift:before {\n content: '\\e276';\n opacity: 0.2;\n}\n.ph-duotone.ph-gift:after {\n content: '\\e277';\n margin-left: -1em;\n}\n.ph-duotone.ph-git-branch:before {\n content: '\\e278';\n opacity: 0.2;\n}\n.ph-duotone.ph-git-branch:after {\n content: '\\e279';\n margin-left: -1em;\n}\n.ph-duotone.ph-git-commit:before {\n content: '\\e27a';\n opacity: 0.2;\n}\n.ph-duotone.ph-git-commit:after {\n content: '\\e27b';\n margin-left: -1em;\n}\n.ph-duotone.ph-git-diff:before {\n content: '\\e27c';\n opacity: 0.2;\n}\n.ph-duotone.ph-git-diff:after {\n content: '\\e27d';\n margin-left: -1em;\n}\n.ph-duotone.ph-git-fork:before {\n content: '\\e27e';\n opacity: 0.2;\n}\n.ph-duotone.ph-git-fork:after {\n content: '\\e27f';\n margin-left: -1em;\n}\n.ph-duotone.ph-git-merge:before {\n content: '\\e280';\n opacity: 0.2;\n}\n.ph-duotone.ph-git-merge:after {\n content: '\\e281';\n margin-left: -1em;\n}\n.ph-duotone.ph-git-pull-request:before {\n content: '\\e282';\n opacity: 0.2;\n}\n.ph-duotone.ph-git-pull-request:after {\n content: '\\e283';\n margin-left: -1em;\n}\n.ph-duotone.ph-github-logo:before {\n content: '\\e576';\n opacity: 0.2;\n}\n.ph-duotone.ph-github-logo:after {\n content: '\\e577';\n margin-left: -1em;\n}\n.ph-duotone.ph-gitlab-logo:before {\n content: '\\e694';\n opacity: 0.2;\n}\n.ph-duotone.ph-gitlab-logo:after {\n content: '\\e695';\n margin-left: -1em;\n}\n.ph-duotone.ph-gitlab-logo-simple:before {\n content: '\\e696';\n opacity: 0.2;\n}\n.ph-duotone.ph-gitlab-logo-simple:after {\n content: '\\e697';\n margin-left: -1em;\n}\n.ph-duotone.ph-globe:before {\n content: '\\e288';\n opacity: 0.2;\n}\n.ph-duotone.ph-globe:after {\n content: '\\e289';\n margin-left: -1em;\n}\n.ph-duotone.ph-globe-hemisphere-east:before {\n content: '\\e28a';\n opacity: 0.2;\n}\n.ph-duotone.ph-globe-hemisphere-east:after {\n content: '\\e28b';\n margin-left: -1em;\n}\n.ph-duotone.ph-globe-hemisphere-west:before {\n content: '\\e28c';\n opacity: 0.2;\n}\n.ph-duotone.ph-globe-hemisphere-west:after {\n content: '\\e28d';\n margin-left: -1em;\n}\n.ph-duotone.ph-globe-simple:before {\n content: '\\e28e';\n opacity: 0.2;\n}\n.ph-duotone.ph-globe-simple:after {\n content: '\\e28f';\n margin-left: -1em;\n}\n.ph-duotone.ph-globe-simple-x:before {\n content: '\\e284';\n opacity: 0.2;\n}\n.ph-duotone.ph-globe-simple-x:after {\n content: '\\e285';\n margin-left: -1em;\n}\n.ph-duotone.ph-globe-stand:before {\n content: '\\e290';\n opacity: 0.2;\n}\n.ph-duotone.ph-globe-stand:after {\n content: '\\e291';\n margin-left: -1em;\n}\n.ph-duotone.ph-globe-x:before {\n content: '\\e286';\n opacity: 0.2;\n}\n.ph-duotone.ph-globe-x:after {\n content: '\\e287';\n margin-left: -1em;\n}\n.ph-duotone.ph-goggles:before {\n content: '\\ecb4';\n opacity: 0.2;\n}\n.ph-duotone.ph-goggles:after {\n content: '\\ecb5';\n margin-left: -1em;\n}\n.ph-duotone.ph-golf:before {\n content: '\\ea3e';\n opacity: 0.2;\n}\n.ph-duotone.ph-golf:after {\n content: '\\ea3f';\n margin-left: -1em;\n}\n.ph-duotone.ph-goodreads-logo:before {\n content: '\\ed10';\n opacity: 0.2;\n}\n.ph-duotone.ph-goodreads-logo:after {\n content: '\\ed11';\n margin-left: -1em;\n}\n.ph-duotone.ph-google-cardboard-logo:before {\n content: '\\e7b6';\n opacity: 0.2;\n}\n.ph-duotone.ph-google-cardboard-logo:after {\n content: '\\e7b7';\n margin-left: -1em;\n}\n.ph-duotone.ph-google-chrome-logo:before {\n content: '\\e976';\n opacity: 0.2;\n}\n.ph-duotone.ph-google-chrome-logo:after {\n content: '\\e977';\n margin-left: -1em;\n}\n.ph-duotone.ph-google-drive-logo:before {\n content: '\\e8f6';\n opacity: 0.2;\n}\n.ph-duotone.ph-google-drive-logo:after {\n content: '\\e8f7';\n margin-left: -1em;\n}\n.ph-duotone.ph-google-logo:before {\n content: '\\e292';\n opacity: 0.2;\n}\n.ph-duotone.ph-google-logo:after {\n content: '\\e293';\n margin-left: -1em;\n}\n.ph-duotone.ph-google-photos-logo:before {\n content: '\\eb92';\n opacity: 0.2;\n}\n.ph-duotone.ph-google-photos-logo:after {\n content: '\\eb93';\n margin-left: -1em;\n}\n.ph-duotone.ph-google-play-logo:before {\n content: '\\e294';\n opacity: 0.2;\n}\n.ph-duotone.ph-google-play-logo:after {\n content: '\\e295';\n margin-left: -1em;\n}\n.ph-duotone.ph-google-podcasts-logo:before {\n content: '\\eb94';\n opacity: 0.2;\n}\n.ph-duotone.ph-google-podcasts-logo:after {\n content: '\\eb95';\n margin-left: -1em;\n}\n.ph-duotone.ph-gps:before {\n content: '\\edd8';\n opacity: 0.2;\n}\n.ph-duotone.ph-gps:after {\n content: '\\edd9';\n margin-left: -1em;\n}\n.ph-duotone.ph-gps-fix:before {\n content: '\\edd6';\n opacity: 0.2;\n}\n.ph-duotone.ph-gps-fix:after {\n content: '\\edd7';\n margin-left: -1em;\n}\n.ph-duotone.ph-gps-slash:before {\n content: '\\edd4';\n opacity: 0.2;\n}\n.ph-duotone.ph-gps-slash:after {\n content: '\\edd5';\n margin-left: -1em;\n}\n.ph-duotone.ph-gradient:before {\n content: '\\eb42';\n opacity: 0.2;\n}\n.ph-duotone.ph-gradient:after {\n content: '\\eb4d';\n margin-left: -1em;\n}\n.ph-duotone.ph-graduation-cap:before {\n content: '\\e62c';\n opacity: 0.2;\n}\n.ph-duotone.ph-graduation-cap:after {\n content: '\\e62d';\n margin-left: -1em;\n}\n.ph-duotone.ph-grains:before {\n content: '\\ec68';\n opacity: 0.2;\n}\n.ph-duotone.ph-grains:after {\n content: '\\ec69';\n margin-left: -1em;\n}\n.ph-duotone.ph-grains-slash:before {\n content: '\\ec6a';\n opacity: 0.2;\n}\n.ph-duotone.ph-grains-slash:after {\n content: '\\ec6b';\n margin-left: -1em;\n}\n.ph-duotone.ph-graph:before {\n content: '\\eb58';\n opacity: 0.2;\n}\n.ph-duotone.ph-graph:after {\n content: '\\eb59';\n margin-left: -1em;\n}\n.ph-duotone.ph-graphics-card:before {\n content: '\\e612';\n opacity: 0.2;\n}\n.ph-duotone.ph-graphics-card:after {\n content: '\\e613';\n margin-left: -1em;\n}\n.ph-duotone.ph-greater-than:before {\n content: '\\edc4';\n opacity: 0.2;\n}\n.ph-duotone.ph-greater-than:after {\n content: '\\edc5';\n margin-left: -1em;\n}\n.ph-duotone.ph-greater-than-or-equal:before {\n content: '\\eda2';\n opacity: 0.2;\n}\n.ph-duotone.ph-greater-than-or-equal:after {\n content: '\\eda3';\n margin-left: -1em;\n}\n.ph-duotone.ph-grid-four:before {\n content: '\\e296';\n opacity: 0.2;\n}\n.ph-duotone.ph-grid-four:after {\n content: '\\e297';\n margin-left: -1em;\n}\n.ph-duotone.ph-grid-nine:before {\n content: '\\ec8c';\n opacity: 0.2;\n}\n.ph-duotone.ph-grid-nine:after {\n content: '\\ec8d';\n margin-left: -1em;\n}\n.ph-duotone.ph-guitar:before {\n content: '\\ea8a';\n opacity: 0.2;\n}\n.ph-duotone.ph-guitar:after {\n content: '\\ea8b';\n margin-left: -1em;\n}\n.ph-duotone.ph-hair-dryer:before {\n content: '\\ea66';\n opacity: 0.2;\n}\n.ph-duotone.ph-hair-dryer:after {\n content: '\\ea67';\n margin-left: -1em;\n}\n.ph-duotone.ph-hamburger:before {\n content: '\\e790';\n opacity: 0.2;\n}\n.ph-duotone.ph-hamburger:after {\n content: '\\e791';\n margin-left: -1em;\n}\n.ph-duotone.ph-hammer:before {\n content: '\\e80e';\n opacity: 0.2;\n}\n.ph-duotone.ph-hammer:after {\n content: '\\e80f';\n margin-left: -1em;\n}\n.ph-duotone.ph-hand:before {\n content: '\\e298';\n opacity: 0.2;\n}\n.ph-duotone.ph-hand:after {\n content: '\\e299';\n margin-left: -1em;\n}\n.ph-duotone.ph-hand-arrow-down:before {\n content: '\\ea4e';\n opacity: 0.2;\n}\n.ph-duotone.ph-hand-arrow-down:after {\n content: '\\ea4f';\n margin-left: -1em;\n}\n.ph-duotone.ph-hand-arrow-up:before {\n content: '\\ee5a';\n opacity: 0.2;\n}\n.ph-duotone.ph-hand-arrow-up:after {\n content: '\\ee5b';\n margin-left: -1em;\n}\n.ph-duotone.ph-hand-coins:before {\n content: '\\ea8c';\n opacity: 0.2;\n}\n.ph-duotone.ph-hand-coins:after {\n content: '\\ea8d';\n margin-left: -1em;\n}\n.ph-duotone.ph-hand-deposit:before {\n content: '\\ee82';\n opacity: 0.2;\n}\n.ph-duotone.ph-hand-deposit:after {\n content: '\\ee83';\n margin-left: -1em;\n}\n.ph-duotone.ph-hand-eye:before {\n content: '\\ea4c';\n opacity: 0.2;\n}\n.ph-duotone.ph-hand-eye:after {\n content: '\\ea4d';\n margin-left: -1em;\n}\n.ph-duotone.ph-hand-fist:before {\n content: '\\e57a';\n opacity: 0.2;\n}\n.ph-duotone.ph-hand-fist:after {\n content: '\\e57b';\n margin-left: -1em;\n}\n.ph-duotone.ph-hand-grabbing:before {\n content: '\\e57c';\n opacity: 0.2;\n}\n.ph-duotone.ph-hand-grabbing:after {\n content: '\\e57d';\n margin-left: -1em;\n}\n.ph-duotone.ph-hand-heart:before {\n content: '\\e810';\n opacity: 0.2;\n}\n.ph-duotone.ph-hand-heart:after {\n content: '\\e811';\n margin-left: -1em;\n}\n.ph-duotone.ph-hand-palm:before {\n content: '\\e57e';\n opacity: 0.2;\n}\n.ph-duotone.ph-hand-palm:after {\n content: '\\e57f';\n margin-left: -1em;\n}\n.ph-duotone.ph-hand-peace:before {\n content: '\\e7cc';\n opacity: 0.2;\n}\n.ph-duotone.ph-hand-peace:after {\n content: '\\e7cd';\n margin-left: -1em;\n}\n.ph-duotone.ph-hand-pointing:before {\n content: '\\e29a';\n opacity: 0.2;\n}\n.ph-duotone.ph-hand-pointing:after {\n content: '\\e29b';\n margin-left: -1em;\n}\n.ph-duotone.ph-hand-soap:before {\n content: '\\e630';\n opacity: 0.2;\n}\n.ph-duotone.ph-hand-soap:after {\n content: '\\e631';\n margin-left: -1em;\n}\n.ph-duotone.ph-hand-swipe-left:before {\n content: '\\ec94';\n opacity: 0.2;\n}\n.ph-duotone.ph-hand-swipe-left:after {\n content: '\\ec95';\n margin-left: -1em;\n}\n.ph-duotone.ph-hand-swipe-right:before {\n content: '\\ec92';\n opacity: 0.2;\n}\n.ph-duotone.ph-hand-swipe-right:after {\n content: '\\ec93';\n margin-left: -1em;\n}\n.ph-duotone.ph-hand-tap:before {\n content: '\\ec90';\n opacity: 0.2;\n}\n.ph-duotone.ph-hand-tap:after {\n content: '\\ec91';\n margin-left: -1em;\n}\n.ph-duotone.ph-hand-waving:before {\n content: '\\e580';\n opacity: 0.2;\n}\n.ph-duotone.ph-hand-waving:after {\n content: '\\e581';\n margin-left: -1em;\n}\n.ph-duotone.ph-hand-withdraw:before {\n content: '\\ee80';\n opacity: 0.2;\n}\n.ph-duotone.ph-hand-withdraw:after {\n content: '\\ee81';\n margin-left: -1em;\n}\n.ph-duotone.ph-handbag:before {\n content: '\\e29c';\n opacity: 0.2;\n}\n.ph-duotone.ph-handbag:after {\n content: '\\e29d';\n margin-left: -1em;\n}\n.ph-duotone.ph-handbag-simple:before {\n content: '\\e62e';\n opacity: 0.2;\n}\n.ph-duotone.ph-handbag-simple:after {\n content: '\\e62f';\n margin-left: -1em;\n}\n.ph-duotone.ph-hands-clapping:before {\n content: '\\e6a0';\n opacity: 0.2;\n}\n.ph-duotone.ph-hands-clapping:after {\n content: '\\e6a1';\n margin-left: -1em;\n}\n.ph-duotone.ph-hands-praying:before {\n content: '\\ecc8';\n opacity: 0.2;\n}\n.ph-duotone.ph-hands-praying:after {\n content: '\\ecc9';\n margin-left: -1em;\n}\n.ph-duotone.ph-handshake:before {\n content: '\\e582';\n opacity: 0.2;\n}\n.ph-duotone.ph-handshake:after {\n content: '\\e583';\n margin-left: -1em;\n}\n.ph-duotone.ph-hard-drive:before {\n content: '\\e29e';\n opacity: 0.2;\n}\n.ph-duotone.ph-hard-drive:after {\n content: '\\e29f';\n margin-left: -1em;\n}\n.ph-duotone.ph-hard-drives:before {\n content: '\\e2a0';\n opacity: 0.2;\n}\n.ph-duotone.ph-hard-drives:after {\n content: '\\e2a1';\n margin-left: -1em;\n}\n.ph-duotone.ph-hard-hat:before {\n content: '\\ed46';\n opacity: 0.2;\n}\n.ph-duotone.ph-hard-hat:after {\n content: '\\ed47';\n margin-left: -1em;\n}\n.ph-duotone.ph-hash:before {\n content: '\\e2a2';\n opacity: 0.2;\n}\n.ph-duotone.ph-hash:after {\n content: '\\e2a3';\n margin-left: -1em;\n}\n.ph-duotone.ph-hash-straight:before {\n content: '\\e2a4';\n opacity: 0.2;\n}\n.ph-duotone.ph-hash-straight:after {\n content: '\\e2a5';\n margin-left: -1em;\n}\n.ph-duotone.ph-head-circuit:before {\n content: '\\e7d4';\n opacity: 0.2;\n}\n.ph-duotone.ph-head-circuit:after {\n content: '\\e7d5';\n margin-left: -1em;\n}\n.ph-duotone.ph-headlights:before {\n content: '\\e6fe';\n opacity: 0.2;\n}\n.ph-duotone.ph-headlights:after {\n content: '\\e6ff';\n margin-left: -1em;\n}\n.ph-duotone.ph-headphones:before {\n content: '\\e2a6';\n opacity: 0.2;\n}\n.ph-duotone.ph-headphones:after {\n content: '\\e2a7';\n margin-left: -1em;\n}\n.ph-duotone.ph-headset:before {\n content: '\\e584';\n opacity: 0.2;\n}\n.ph-duotone.ph-headset:after {\n content: '\\e585';\n margin-left: -1em;\n}\n.ph-duotone.ph-heart:before {\n content: '\\e2a8';\n opacity: 0.2;\n}\n.ph-duotone.ph-heart:after {\n content: '\\e2a9';\n margin-left: -1em;\n}\n.ph-duotone.ph-heart-break:before {\n content: '\\ebe8';\n opacity: 0.2;\n}\n.ph-duotone.ph-heart-break:after {\n content: '\\ebe9';\n margin-left: -1em;\n}\n.ph-duotone.ph-heart-half:before {\n content: '\\ec48';\n opacity: 0.2;\n}\n.ph-duotone.ph-heart-half:after {\n content: '\\ec49';\n margin-left: -1em;\n}\n.ph-duotone.ph-heart-straight:before {\n content: '\\e2aa';\n opacity: 0.2;\n}\n.ph-duotone.ph-heart-straight:after {\n content: '\\e2ab';\n margin-left: -1em;\n}\n.ph-duotone.ph-heart-straight-break:before {\n content: '\\eb98';\n opacity: 0.2;\n}\n.ph-duotone.ph-heart-straight-break:after {\n content: '\\eb99';\n margin-left: -1em;\n}\n.ph-duotone.ph-heartbeat:before {\n content: '\\e2ac';\n opacity: 0.2;\n}\n.ph-duotone.ph-heartbeat:after {\n content: '\\e2ad';\n margin-left: -1em;\n}\n.ph-duotone.ph-hexagon:before {\n content: '\\e2ae';\n opacity: 0.2;\n}\n.ph-duotone.ph-hexagon:after {\n content: '\\e2af';\n margin-left: -1em;\n}\n.ph-duotone.ph-high-definition:before {\n content: '\\ea8e';\n opacity: 0.2;\n}\n.ph-duotone.ph-high-definition:after {\n content: '\\ea8f';\n margin-left: -1em;\n}\n.ph-duotone.ph-high-heel:before {\n content: '\\e8e8';\n opacity: 0.2;\n}\n.ph-duotone.ph-high-heel:after {\n content: '\\e8e9';\n margin-left: -1em;\n}\n.ph-duotone.ph-highlighter:before {\n content: '\\ec76';\n opacity: 0.2;\n}\n.ph-duotone.ph-highlighter:after {\n content: '\\ec77';\n margin-left: -1em;\n}\n.ph-duotone.ph-highlighter-circle:before {\n content: '\\e632';\n opacity: 0.2;\n}\n.ph-duotone.ph-highlighter-circle:after {\n content: '\\e633';\n margin-left: -1em;\n}\n.ph-duotone.ph-hockey:before {\n content: '\\ec86';\n opacity: 0.2;\n}\n.ph-duotone.ph-hockey:after {\n content: '\\ec87';\n margin-left: -1em;\n}\n.ph-duotone.ph-hoodie:before {\n content: '\\ecd0';\n opacity: 0.2;\n}\n.ph-duotone.ph-hoodie:after {\n content: '\\ecd1';\n margin-left: -1em;\n}\n.ph-duotone.ph-horse:before {\n content: '\\e2b0';\n opacity: 0.2;\n}\n.ph-duotone.ph-horse:after {\n content: '\\e2b1';\n margin-left: -1em;\n}\n.ph-duotone.ph-hospital:before {\n content: '\\e844';\n opacity: 0.2;\n}\n.ph-duotone.ph-hospital:after {\n content: '\\e845';\n margin-left: -1em;\n}\n.ph-duotone.ph-hourglass:before {\n content: '\\e2b2';\n opacity: 0.2;\n}\n.ph-duotone.ph-hourglass:after {\n content: '\\e2b3';\n margin-left: -1em;\n}\n.ph-duotone.ph-hourglass-high:before {\n content: '\\e2b4';\n opacity: 0.2;\n}\n.ph-duotone.ph-hourglass-high:after {\n content: '\\e2b5';\n margin-left: -1em;\n}\n.ph-duotone.ph-hourglass-low:before {\n content: '\\e2b6';\n opacity: 0.2;\n}\n.ph-duotone.ph-hourglass-low:after {\n content: '\\e2b7';\n margin-left: -1em;\n}\n.ph-duotone.ph-hourglass-medium:before {\n content: '\\e2b8';\n opacity: 0.2;\n}\n.ph-duotone.ph-hourglass-medium:after {\n content: '\\e2b9';\n margin-left: -1em;\n}\n.ph-duotone.ph-hourglass-simple:before {\n content: '\\e2ba';\n opacity: 0.2;\n}\n.ph-duotone.ph-hourglass-simple:after {\n content: '\\e2bb';\n margin-left: -1em;\n}\n.ph-duotone.ph-hourglass-simple-high:before {\n content: '\\e2bc';\n opacity: 0.2;\n}\n.ph-duotone.ph-hourglass-simple-high:after {\n content: '\\e2bd';\n margin-left: -1em;\n}\n.ph-duotone.ph-hourglass-simple-low:before {\n content: '\\e2be';\n opacity: 0.2;\n}\n.ph-duotone.ph-hourglass-simple-low:after {\n content: '\\e2bf';\n margin-left: -1em;\n}\n.ph-duotone.ph-hourglass-simple-medium:before {\n content: '\\e2c0';\n opacity: 0.2;\n}\n.ph-duotone.ph-hourglass-simple-medium:after {\n content: '\\e2c1';\n margin-left: -1em;\n}\n.ph-duotone.ph-house:before {\n content: '\\e2c2';\n opacity: 0.2;\n}\n.ph-duotone.ph-house:after {\n content: '\\e2c3';\n margin-left: -1em;\n}\n.ph-duotone.ph-house-line:before {\n content: '\\e2c4';\n opacity: 0.2;\n}\n.ph-duotone.ph-house-line:after {\n content: '\\e2c5';\n margin-left: -1em;\n}\n.ph-duotone.ph-house-simple:before {\n content: '\\e2c6';\n opacity: 0.2;\n}\n.ph-duotone.ph-house-simple:after {\n content: '\\e2c7';\n margin-left: -1em;\n}\n.ph-duotone.ph-hurricane:before {\n content: '\\e88e';\n opacity: 0.2;\n}\n.ph-duotone.ph-hurricane:after {\n content: '\\e88f';\n margin-left: -1em;\n}\n.ph-duotone.ph-ice-cream:before {\n content: '\\e804';\n opacity: 0.2;\n}\n.ph-duotone.ph-ice-cream:after {\n content: '\\e805';\n margin-left: -1em;\n}\n.ph-duotone.ph-identification-badge:before {\n content: '\\e6f6';\n opacity: 0.2;\n}\n.ph-duotone.ph-identification-badge:after {\n content: '\\e6f7';\n margin-left: -1em;\n}\n.ph-duotone.ph-identification-card:before {\n content: '\\e2c8';\n opacity: 0.2;\n}\n.ph-duotone.ph-identification-card:after {\n content: '\\e2c9';\n margin-left: -1em;\n}\n.ph-duotone.ph-image:before {\n content: '\\e2ca';\n opacity: 0.2;\n}\n.ph-duotone.ph-image:after {\n content: '\\e2cb';\n margin-left: -1em;\n}\n.ph-duotone.ph-image-broken:before {\n content: '\\e7a8';\n opacity: 0.2;\n}\n.ph-duotone.ph-image-broken:after {\n content: '\\e7a9';\n margin-left: -1em;\n}\n.ph-duotone.ph-image-square:before {\n content: '\\e2cc';\n opacity: 0.2;\n}\n.ph-duotone.ph-image-square:after {\n content: '\\e2cd';\n margin-left: -1em;\n}\n.ph-duotone.ph-images:before {\n content: '\\e836';\n opacity: 0.2;\n}\n.ph-duotone.ph-images:after {\n content: '\\e837';\n margin-left: -1em;\n}\n.ph-duotone.ph-images-square:before {\n content: '\\e834';\n opacity: 0.2;\n}\n.ph-duotone.ph-images-square:after {\n content: '\\e835';\n margin-left: -1em;\n}\n.ph-duotone.ph-infinity:before {\n content: '\\e634';\n opacity: 0.2;\n}\n.ph-duotone.ph-infinity:after {\n content: '\\e635';\n margin-left: -1em;\n}\n.ph-duotone.ph-info:before {\n content: '\\e2ce';\n opacity: 0.2;\n}\n.ph-duotone.ph-info:after {\n content: '\\e2cf';\n margin-left: -1em;\n}\n.ph-duotone.ph-instagram-logo:before {\n content: '\\e2d0';\n opacity: 0.2;\n}\n.ph-duotone.ph-instagram-logo:after {\n content: '\\e2d1';\n margin-left: -1em;\n}\n.ph-duotone.ph-intersect:before {\n content: '\\e2d2';\n opacity: 0.2;\n}\n.ph-duotone.ph-intersect:after {\n content: '\\e2d3';\n margin-left: -1em;\n}\n.ph-duotone.ph-intersect-square:before {\n content: '\\e87a';\n opacity: 0.2;\n}\n.ph-duotone.ph-intersect-square:after {\n content: '\\e87b';\n margin-left: -1em;\n}\n.ph-duotone.ph-intersect-three:before {\n content: '\\ecc4';\n opacity: 0.2;\n}\n.ph-duotone.ph-intersect-three:after {\n content: '\\ecc5';\n margin-left: -1em;\n}\n.ph-duotone.ph-intersection:before {\n content: '\\edba';\n opacity: 0.2;\n}\n.ph-duotone.ph-intersection:after {\n content: '\\edbb';\n margin-left: -1em;\n}\n.ph-duotone.ph-invoice:before {\n content: '\\ee42';\n opacity: 0.2;\n}\n.ph-duotone.ph-invoice:after {\n content: '\\ee43';\n margin-left: -1em;\n}\n.ph-duotone.ph-island:before {\n content: '\\ee06';\n opacity: 0.2;\n}\n.ph-duotone.ph-island:after {\n content: '\\ee07';\n margin-left: -1em;\n}\n.ph-duotone.ph-jar:before {\n content: '\\e7e0';\n opacity: 0.2;\n}\n.ph-duotone.ph-jar:after {\n content: '\\e7e3';\n margin-left: -1em;\n}\n.ph-duotone.ph-jar-label:before {\n content: '\\e7e1';\n opacity: 0.2;\n}\n.ph-duotone.ph-jar-label:after {\n content: '\\e7e5';\n margin-left: -1em;\n}\n.ph-duotone.ph-jeep:before {\n content: '\\e2d4';\n opacity: 0.2;\n}\n.ph-duotone.ph-jeep:after {\n content: '\\e2d5';\n margin-left: -1em;\n}\n.ph-duotone.ph-joystick:before {\n content: '\\ea5e';\n opacity: 0.2;\n}\n.ph-duotone.ph-joystick:after {\n content: '\\ea5f';\n margin-left: -1em;\n}\n.ph-duotone.ph-kanban:before {\n content: '\\eb54';\n opacity: 0.2;\n}\n.ph-duotone.ph-kanban:after {\n content: '\\eb55';\n margin-left: -1em;\n}\n.ph-duotone.ph-key:before {\n content: '\\e2d6';\n opacity: 0.2;\n}\n.ph-duotone.ph-key:after {\n content: '\\e2d7';\n margin-left: -1em;\n}\n.ph-duotone.ph-key-return:before {\n content: '\\e782';\n opacity: 0.2;\n}\n.ph-duotone.ph-key-return:after {\n content: '\\e783';\n margin-left: -1em;\n}\n.ph-duotone.ph-keyboard:before {\n content: '\\e2d8';\n opacity: 0.2;\n}\n.ph-duotone.ph-keyboard:after {\n content: '\\e2d9';\n margin-left: -1em;\n}\n.ph-duotone.ph-keyhole:before {\n content: '\\ea78';\n opacity: 0.2;\n}\n.ph-duotone.ph-keyhole:after {\n content: '\\ea79';\n margin-left: -1em;\n}\n.ph-duotone.ph-knife:before {\n content: '\\e636';\n opacity: 0.2;\n}\n.ph-duotone.ph-knife:after {\n content: '\\e637';\n margin-left: -1em;\n}\n.ph-duotone.ph-ladder:before {\n content: '\\e9e4';\n opacity: 0.2;\n}\n.ph-duotone.ph-ladder:after {\n content: '\\e9e5';\n margin-left: -1em;\n}\n.ph-duotone.ph-ladder-simple:before {\n content: '\\ec26';\n opacity: 0.2;\n}\n.ph-duotone.ph-ladder-simple:after {\n content: '\\ec27';\n margin-left: -1em;\n}\n.ph-duotone.ph-lamp:before {\n content: '\\e638';\n opacity: 0.2;\n}\n.ph-duotone.ph-lamp:after {\n content: '\\e639';\n margin-left: -1em;\n}\n.ph-duotone.ph-lamp-pendant:before {\n content: '\\ee2e';\n opacity: 0.2;\n}\n.ph-duotone.ph-lamp-pendant:after {\n content: '\\ee2f';\n margin-left: -1em;\n}\n.ph-duotone.ph-laptop:before {\n content: '\\e586';\n opacity: 0.2;\n}\n.ph-duotone.ph-laptop:after {\n content: '\\e587';\n margin-left: -1em;\n}\n.ph-duotone.ph-lasso:before {\n content: '\\edc6';\n opacity: 0.2;\n}\n.ph-duotone.ph-lasso:after {\n content: '\\edc7';\n margin-left: -1em;\n}\n.ph-duotone.ph-lastfm-logo:before {\n content: '\\e842';\n opacity: 0.2;\n}\n.ph-duotone.ph-lastfm-logo:after {\n content: '\\e843';\n margin-left: -1em;\n}\n.ph-duotone.ph-layout:before {\n content: '\\e6d6';\n opacity: 0.2;\n}\n.ph-duotone.ph-layout:after {\n content: '\\e6d7';\n margin-left: -1em;\n}\n.ph-duotone.ph-leaf:before {\n content: '\\e2da';\n opacity: 0.2;\n}\n.ph-duotone.ph-leaf:after {\n content: '\\e2db';\n margin-left: -1em;\n}\n.ph-duotone.ph-lectern:before {\n content: '\\e95a';\n opacity: 0.2;\n}\n.ph-duotone.ph-lectern:after {\n content: '\\e95b';\n margin-left: -1em;\n}\n.ph-duotone.ph-lego:before {\n content: '\\e8c6';\n opacity: 0.2;\n}\n.ph-duotone.ph-lego:after {\n content: '\\e8c8';\n margin-left: -1em;\n}\n.ph-duotone.ph-lego-smiley:before {\n content: '\\e8c7';\n opacity: 0.2;\n}\n.ph-duotone.ph-lego-smiley:after {\n content: '\\e8c9';\n margin-left: -1em;\n}\n.ph-duotone.ph-less-than:before {\n content: '\\edac';\n opacity: 0.2;\n}\n.ph-duotone.ph-less-than:after {\n content: '\\edad';\n margin-left: -1em;\n}\n.ph-duotone.ph-less-than-or-equal:before {\n content: '\\eda4';\n opacity: 0.2;\n}\n.ph-duotone.ph-less-than-or-equal:after {\n content: '\\eda5';\n margin-left: -1em;\n}\n.ph-duotone.ph-letter-circle-h:before {\n content: '\\ebf8';\n opacity: 0.2;\n}\n.ph-duotone.ph-letter-circle-h:after {\n content: '\\ebf9';\n margin-left: -1em;\n}\n.ph-duotone.ph-letter-circle-p:before {\n content: '\\ec08';\n opacity: 0.2;\n}\n.ph-duotone.ph-letter-circle-p:after {\n content: '\\ec09';\n margin-left: -1em;\n}\n.ph-duotone.ph-letter-circle-v:before {\n content: '\\ec14';\n opacity: 0.2;\n}\n.ph-duotone.ph-letter-circle-v:after {\n content: '\\ec15';\n margin-left: -1em;\n}\n.ph-duotone.ph-lifebuoy:before {\n content: '\\e63a';\n opacity: 0.2;\n}\n.ph-duotone.ph-lifebuoy:after {\n content: '\\e63b';\n margin-left: -1em;\n}\n.ph-duotone.ph-lightbulb:before {\n content: '\\e2dc';\n opacity: 0.2;\n}\n.ph-duotone.ph-lightbulb:after {\n content: '\\e2dd';\n margin-left: -1em;\n}\n.ph-duotone.ph-lightbulb-filament:before {\n content: '\\e63c';\n opacity: 0.2;\n}\n.ph-duotone.ph-lightbulb-filament:after {\n content: '\\e63d';\n margin-left: -1em;\n}\n.ph-duotone.ph-lighthouse:before {\n content: '\\e9f6';\n opacity: 0.2;\n}\n.ph-duotone.ph-lighthouse:after {\n content: '\\e9f7';\n margin-left: -1em;\n}\n.ph-duotone.ph-lightning:before {\n content: '\\e2de';\n opacity: 0.2;\n}\n.ph-duotone.ph-lightning:after {\n content: '\\e2df';\n margin-left: -1em;\n}\n.ph-duotone.ph-lightning-a:before {\n content: '\\ea84';\n opacity: 0.2;\n}\n.ph-duotone.ph-lightning-a:after {\n content: '\\ea85';\n margin-left: -1em;\n}\n.ph-duotone.ph-lightning-slash:before {\n content: '\\e2e0';\n opacity: 0.2;\n}\n.ph-duotone.ph-lightning-slash:after {\n content: '\\e2e1';\n margin-left: -1em;\n}\n.ph-duotone.ph-line-segment:before {\n content: '\\e6d2';\n opacity: 0.2;\n}\n.ph-duotone.ph-line-segment:after {\n content: '\\e6d3';\n margin-left: -1em;\n}\n.ph-duotone.ph-line-segments:before {\n content: '\\e6d4';\n opacity: 0.2;\n}\n.ph-duotone.ph-line-segments:after {\n content: '\\e6d5';\n margin-left: -1em;\n}\n.ph-duotone.ph-line-vertical:before {\n content: '\\ed70';\n opacity: 0.2;\n}\n.ph-duotone.ph-line-vertical:after {\n content: '\\ed71';\n margin-left: -1em;\n}\n.ph-duotone.ph-link:before {\n content: '\\e2e2';\n opacity: 0.2;\n}\n.ph-duotone.ph-link:after {\n content: '\\e2e3';\n margin-left: -1em;\n}\n.ph-duotone.ph-link-break:before {\n content: '\\e2e4';\n opacity: 0.2;\n}\n.ph-duotone.ph-link-break:after {\n content: '\\e2e5';\n margin-left: -1em;\n}\n.ph-duotone.ph-link-simple:before {\n content: '\\e2e6';\n opacity: 0.2;\n}\n.ph-duotone.ph-link-simple:after {\n content: '\\e2e7';\n margin-left: -1em;\n}\n.ph-duotone.ph-link-simple-break:before {\n content: '\\e2e8';\n opacity: 0.2;\n}\n.ph-duotone.ph-link-simple-break:after {\n content: '\\e2e9';\n margin-left: -1em;\n}\n.ph-duotone.ph-link-simple-horizontal:before {\n content: '\\e2ea';\n opacity: 0.2;\n}\n.ph-duotone.ph-link-simple-horizontal:after {\n content: '\\e2eb';\n margin-left: -1em;\n}\n.ph-duotone.ph-link-simple-horizontal-break:before {\n content: '\\e2ec';\n opacity: 0.2;\n}\n.ph-duotone.ph-link-simple-horizontal-break:after {\n content: '\\e2ed';\n margin-left: -1em;\n}\n.ph-duotone.ph-linkedin-logo:before {\n content: '\\e2ee';\n opacity: 0.2;\n}\n.ph-duotone.ph-linkedin-logo:after {\n content: '\\e2ef';\n margin-left: -1em;\n}\n.ph-duotone.ph-linktree-logo:before {\n content: '\\edee';\n opacity: 0.2;\n}\n.ph-duotone.ph-linktree-logo:after {\n content: '\\edef';\n margin-left: -1em;\n}\n.ph-duotone.ph-linux-logo:before {\n content: '\\eb02';\n opacity: 0.2;\n}\n.ph-duotone.ph-linux-logo:after {\n content: '\\eb03';\n margin-left: -1em;\n}\n.ph-duotone.ph-list:before {\n content: '\\e2f0';\n opacity: 0.2;\n}\n.ph-duotone.ph-list:after {\n content: '\\e2f1';\n margin-left: -1em;\n}\n.ph-duotone.ph-list-bullets:before {\n content: '\\e2f2';\n opacity: 0.2;\n}\n.ph-duotone.ph-list-bullets:after {\n content: '\\e2f3';\n margin-left: -1em;\n}\n.ph-duotone.ph-list-checks:before {\n content: '\\eadc';\n opacity: 0.2;\n}\n.ph-duotone.ph-list-checks:after {\n content: '\\eadd';\n margin-left: -1em;\n}\n.ph-duotone.ph-list-dashes:before {\n content: '\\e2f4';\n opacity: 0.2;\n}\n.ph-duotone.ph-list-dashes:after {\n content: '\\e2f5';\n margin-left: -1em;\n}\n.ph-duotone.ph-list-heart:before {\n content: '\\ebde';\n opacity: 0.2;\n}\n.ph-duotone.ph-list-heart:after {\n content: '\\ebdf';\n margin-left: -1em;\n}\n.ph-duotone.ph-list-magnifying-glass:before {\n content: '\\ebe0';\n opacity: 0.2;\n}\n.ph-duotone.ph-list-magnifying-glass:after {\n content: '\\ebe1';\n margin-left: -1em;\n}\n.ph-duotone.ph-list-numbers:before {\n content: '\\e2f6';\n opacity: 0.2;\n}\n.ph-duotone.ph-list-numbers:after {\n content: '\\e2f7';\n margin-left: -1em;\n}\n.ph-duotone.ph-list-plus:before {\n content: '\\e2f8';\n opacity: 0.2;\n}\n.ph-duotone.ph-list-plus:after {\n content: '\\e2f9';\n margin-left: -1em;\n}\n.ph-duotone.ph-list-star:before {\n content: '\\ebdc';\n opacity: 0.2;\n}\n.ph-duotone.ph-list-star:after {\n content: '\\ebdd';\n margin-left: -1em;\n}\n.ph-duotone.ph-lock:before {\n content: '\\e2fa';\n opacity: 0.2;\n}\n.ph-duotone.ph-lock:after {\n content: '\\e2fb';\n margin-left: -1em;\n}\n.ph-duotone.ph-lock-key:before {\n content: '\\e2fe';\n opacity: 0.2;\n}\n.ph-duotone.ph-lock-key:after {\n content: '\\e2ff';\n margin-left: -1em;\n}\n.ph-duotone.ph-lock-key-open:before {\n content: '\\e300';\n opacity: 0.2;\n}\n.ph-duotone.ph-lock-key-open:after {\n content: '\\e301';\n margin-left: -1em;\n}\n.ph-duotone.ph-lock-laminated:before {\n content: '\\e302';\n opacity: 0.2;\n}\n.ph-duotone.ph-lock-laminated:after {\n content: '\\e303';\n margin-left: -1em;\n}\n.ph-duotone.ph-lock-laminated-open:before {\n content: '\\e304';\n opacity: 0.2;\n}\n.ph-duotone.ph-lock-laminated-open:after {\n content: '\\e305';\n margin-left: -1em;\n}\n.ph-duotone.ph-lock-open:before {\n content: '\\e306';\n opacity: 0.2;\n}\n.ph-duotone.ph-lock-open:after {\n content: '\\e307';\n margin-left: -1em;\n}\n.ph-duotone.ph-lock-simple:before {\n content: '\\e308';\n opacity: 0.2;\n}\n.ph-duotone.ph-lock-simple:after {\n content: '\\e309';\n margin-left: -1em;\n}\n.ph-duotone.ph-lock-simple-open:before {\n content: '\\e30a';\n opacity: 0.2;\n}\n.ph-duotone.ph-lock-simple-open:after {\n content: '\\e30b';\n margin-left: -1em;\n}\n.ph-duotone.ph-lockers:before {\n content: '\\ecb8';\n opacity: 0.2;\n}\n.ph-duotone.ph-lockers:after {\n content: '\\ecb9';\n margin-left: -1em;\n}\n.ph-duotone.ph-log:before {\n content: '\\ed82';\n opacity: 0.2;\n}\n.ph-duotone.ph-log:after {\n content: '\\ed83';\n margin-left: -1em;\n}\n.ph-duotone.ph-magic-wand:before {\n content: '\\e6b6';\n opacity: 0.2;\n}\n.ph-duotone.ph-magic-wand:after {\n content: '\\e6b7';\n margin-left: -1em;\n}\n.ph-duotone.ph-magnet:before {\n content: '\\e680';\n opacity: 0.2;\n}\n.ph-duotone.ph-magnet:after {\n content: '\\e681';\n margin-left: -1em;\n}\n.ph-duotone.ph-magnet-straight:before {\n content: '\\e682';\n opacity: 0.2;\n}\n.ph-duotone.ph-magnet-straight:after {\n content: '\\e683';\n margin-left: -1em;\n}\n.ph-duotone.ph-magnifying-glass:before {\n content: '\\e30c';\n opacity: 0.2;\n}\n.ph-duotone.ph-magnifying-glass:after {\n content: '\\e30d';\n margin-left: -1em;\n}\n.ph-duotone.ph-magnifying-glass-minus:before {\n content: '\\e30e';\n opacity: 0.2;\n}\n.ph-duotone.ph-magnifying-glass-minus:after {\n content: '\\e30f';\n margin-left: -1em;\n}\n.ph-duotone.ph-magnifying-glass-plus:before {\n content: '\\e310';\n opacity: 0.2;\n}\n.ph-duotone.ph-magnifying-glass-plus:after {\n content: '\\e311';\n margin-left: -1em;\n}\n.ph-duotone.ph-mailbox:before {\n content: '\\ec1e';\n opacity: 0.2;\n}\n.ph-duotone.ph-mailbox:after {\n content: '\\ec1f';\n margin-left: -1em;\n}\n.ph-duotone.ph-map-pin:before {\n content: '\\e316';\n opacity: 0.2;\n}\n.ph-duotone.ph-map-pin:after {\n content: '\\e317';\n margin-left: -1em;\n}\n.ph-duotone.ph-map-pin-area:before {\n content: '\\ee3a';\n opacity: 0.2;\n}\n.ph-duotone.ph-map-pin-area:after {\n content: '\\ee3b';\n margin-left: -1em;\n}\n.ph-duotone.ph-map-pin-line:before {\n content: '\\e318';\n opacity: 0.2;\n}\n.ph-duotone.ph-map-pin-line:after {\n content: '\\e319';\n margin-left: -1em;\n}\n.ph-duotone.ph-map-pin-plus:before {\n content: '\\e314';\n opacity: 0.2;\n}\n.ph-duotone.ph-map-pin-plus:after {\n content: '\\e315';\n margin-left: -1em;\n}\n.ph-duotone.ph-map-pin-simple:before {\n content: '\\ee3e';\n opacity: 0.2;\n}\n.ph-duotone.ph-map-pin-simple:after {\n content: '\\ee3f';\n margin-left: -1em;\n}\n.ph-duotone.ph-map-pin-simple-area:before {\n content: '\\ee3c';\n opacity: 0.2;\n}\n.ph-duotone.ph-map-pin-simple-area:after {\n content: '\\ee3d';\n margin-left: -1em;\n}\n.ph-duotone.ph-map-pin-simple-line:before {\n content: '\\ee38';\n opacity: 0.2;\n}\n.ph-duotone.ph-map-pin-simple-line:after {\n content: '\\ee39';\n margin-left: -1em;\n}\n.ph-duotone.ph-map-trifold:before {\n content: '\\e31a';\n opacity: 0.2;\n}\n.ph-duotone.ph-map-trifold:after {\n content: '\\e31b';\n margin-left: -1em;\n}\n.ph-duotone.ph-markdown-logo:before {\n content: '\\e508';\n opacity: 0.2;\n}\n.ph-duotone.ph-markdown-logo:after {\n content: '\\e509';\n margin-left: -1em;\n}\n.ph-duotone.ph-marker-circle:before {\n content: '\\e640';\n opacity: 0.2;\n}\n.ph-duotone.ph-marker-circle:after {\n content: '\\e641';\n margin-left: -1em;\n}\n.ph-duotone.ph-martini:before {\n content: '\\e31c';\n opacity: 0.2;\n}\n.ph-duotone.ph-martini:after {\n content: '\\e31d';\n margin-left: -1em;\n}\n.ph-duotone.ph-mask-happy:before {\n content: '\\e9f4';\n opacity: 0.2;\n}\n.ph-duotone.ph-mask-happy:after {\n content: '\\e9f5';\n margin-left: -1em;\n}\n.ph-duotone.ph-mask-sad:before {\n content: '\\eb9e';\n opacity: 0.2;\n}\n.ph-duotone.ph-mask-sad:after {\n content: '\\eb9f';\n margin-left: -1em;\n}\n.ph-duotone.ph-mastodon-logo:before {\n content: '\\ed68';\n opacity: 0.2;\n}\n.ph-duotone.ph-mastodon-logo:after {\n content: '\\ed69';\n margin-left: -1em;\n}\n.ph-duotone.ph-math-operations:before {\n content: '\\e31e';\n opacity: 0.2;\n}\n.ph-duotone.ph-math-operations:after {\n content: '\\e31f';\n margin-left: -1em;\n}\n.ph-duotone.ph-matrix-logo:before {\n content: '\\ed64';\n opacity: 0.2;\n}\n.ph-duotone.ph-matrix-logo:after {\n content: '\\ed65';\n margin-left: -1em;\n}\n.ph-duotone.ph-medal:before {\n content: '\\e320';\n opacity: 0.2;\n}\n.ph-duotone.ph-medal:after {\n content: '\\e321';\n margin-left: -1em;\n}\n.ph-duotone.ph-medal-military:before {\n content: '\\ecfc';\n opacity: 0.2;\n}\n.ph-duotone.ph-medal-military:after {\n content: '\\ecfd';\n margin-left: -1em;\n}\n.ph-duotone.ph-medium-logo:before {\n content: '\\e322';\n opacity: 0.2;\n}\n.ph-duotone.ph-medium-logo:after {\n content: '\\e323';\n margin-left: -1em;\n}\n.ph-duotone.ph-megaphone:before {\n content: '\\e324';\n opacity: 0.2;\n}\n.ph-duotone.ph-megaphone:after {\n content: '\\e325';\n margin-left: -1em;\n}\n.ph-duotone.ph-megaphone-simple:before {\n content: '\\e642';\n opacity: 0.2;\n}\n.ph-duotone.ph-megaphone-simple:after {\n content: '\\e643';\n margin-left: -1em;\n}\n.ph-duotone.ph-member-of:before {\n content: '\\edc2';\n opacity: 0.2;\n}\n.ph-duotone.ph-member-of:after {\n content: '\\edc3';\n margin-left: -1em;\n}\n.ph-duotone.ph-memory:before {\n content: '\\e9c4';\n opacity: 0.2;\n}\n.ph-duotone.ph-memory:after {\n content: '\\e9c5';\n margin-left: -1em;\n}\n.ph-duotone.ph-messenger-logo:before {\n content: '\\e6d8';\n opacity: 0.2;\n}\n.ph-duotone.ph-messenger-logo:after {\n content: '\\e6d9';\n margin-left: -1em;\n}\n.ph-duotone.ph-meta-logo:before {\n content: '\\ed02';\n opacity: 0.2;\n}\n.ph-duotone.ph-meta-logo:after {\n content: '\\ed03';\n margin-left: -1em;\n}\n.ph-duotone.ph-meteor:before {\n content: '\\e9ba';\n opacity: 0.2;\n}\n.ph-duotone.ph-meteor:after {\n content: '\\e9bb';\n margin-left: -1em;\n}\n.ph-duotone.ph-metronome:before {\n content: '\\ec8e';\n opacity: 0.2;\n}\n.ph-duotone.ph-metronome:after {\n content: '\\ec8f';\n margin-left: -1em;\n}\n.ph-duotone.ph-microphone:before {\n content: '\\e326';\n opacity: 0.2;\n}\n.ph-duotone.ph-microphone:after {\n content: '\\e327';\n margin-left: -1em;\n}\n.ph-duotone.ph-microphone-slash:before {\n content: '\\e328';\n opacity: 0.2;\n}\n.ph-duotone.ph-microphone-slash:after {\n content: '\\e329';\n margin-left: -1em;\n}\n.ph-duotone.ph-microphone-stage:before {\n content: '\\e75c';\n opacity: 0.2;\n}\n.ph-duotone.ph-microphone-stage:after {\n content: '\\e75d';\n margin-left: -1em;\n}\n.ph-duotone.ph-microscope:before {\n content: '\\ec7a';\n opacity: 0.2;\n}\n.ph-duotone.ph-microscope:after {\n content: '\\ec7b';\n margin-left: -1em;\n}\n.ph-duotone.ph-microsoft-excel-logo:before {\n content: '\\eb6c';\n opacity: 0.2;\n}\n.ph-duotone.ph-microsoft-excel-logo:after {\n content: '\\eb6d';\n margin-left: -1em;\n}\n.ph-duotone.ph-microsoft-outlook-logo:before {\n content: '\\eb70';\n opacity: 0.2;\n}\n.ph-duotone.ph-microsoft-outlook-logo:after {\n content: '\\eb71';\n margin-left: -1em;\n}\n.ph-duotone.ph-microsoft-powerpoint-logo:before {\n content: '\\eace';\n opacity: 0.2;\n}\n.ph-duotone.ph-microsoft-powerpoint-logo:after {\n content: '\\eacf';\n margin-left: -1em;\n}\n.ph-duotone.ph-microsoft-teams-logo:before {\n content: '\\eb66';\n opacity: 0.2;\n}\n.ph-duotone.ph-microsoft-teams-logo:after {\n content: '\\eb67';\n margin-left: -1em;\n}\n.ph-duotone.ph-microsoft-word-logo:before {\n content: '\\eb6a';\n opacity: 0.2;\n}\n.ph-duotone.ph-microsoft-word-logo:after {\n content: '\\eb6b';\n margin-left: -1em;\n}\n.ph-duotone.ph-minus:before {\n content: '\\e32a';\n opacity: 0.2;\n}\n.ph-duotone.ph-minus:after {\n content: '\\e32b';\n margin-left: -1em;\n}\n.ph-duotone.ph-minus-circle:before {\n content: '\\e32c';\n opacity: 0.2;\n}\n.ph-duotone.ph-minus-circle:after {\n content: '\\e32d';\n margin-left: -1em;\n}\n.ph-duotone.ph-minus-square:before {\n content: '\\ed4c';\n opacity: 0.2;\n}\n.ph-duotone.ph-minus-square:after {\n content: '\\ed53';\n margin-left: -1em;\n}\n.ph-duotone.ph-money:before {\n content: '\\e588';\n opacity: 0.2;\n}\n.ph-duotone.ph-money:after {\n content: '\\e589';\n margin-left: -1em;\n}\n.ph-duotone.ph-money-wavy:before {\n content: '\\ee68';\n opacity: 0.2;\n}\n.ph-duotone.ph-money-wavy:after {\n content: '\\ee69';\n margin-left: -1em;\n}\n.ph-duotone.ph-monitor:before {\n content: '\\e32e';\n opacity: 0.2;\n}\n.ph-duotone.ph-monitor:after {\n content: '\\e32f';\n margin-left: -1em;\n}\n.ph-duotone.ph-monitor-arrow-up:before {\n content: '\\e58a';\n opacity: 0.2;\n}\n.ph-duotone.ph-monitor-arrow-up:after {\n content: '\\e58b';\n margin-left: -1em;\n}\n.ph-duotone.ph-monitor-play:before {\n content: '\\e58c';\n opacity: 0.2;\n}\n.ph-duotone.ph-monitor-play:after {\n content: '\\e58d';\n margin-left: -1em;\n}\n.ph-duotone.ph-moon:before {\n content: '\\e330';\n opacity: 0.2;\n}\n.ph-duotone.ph-moon:after {\n content: '\\e331';\n margin-left: -1em;\n}\n.ph-duotone.ph-moon-stars:before {\n content: '\\e58e';\n opacity: 0.2;\n}\n.ph-duotone.ph-moon-stars:after {\n content: '\\e58f';\n margin-left: -1em;\n}\n.ph-duotone.ph-moped:before {\n content: '\\e824';\n opacity: 0.2;\n}\n.ph-duotone.ph-moped:after {\n content: '\\e825';\n margin-left: -1em;\n}\n.ph-duotone.ph-moped-front:before {\n content: '\\e822';\n opacity: 0.2;\n}\n.ph-duotone.ph-moped-front:after {\n content: '\\e823';\n margin-left: -1em;\n}\n.ph-duotone.ph-mosque:before {\n content: '\\ecee';\n opacity: 0.2;\n}\n.ph-duotone.ph-mosque:after {\n content: '\\ecef';\n margin-left: -1em;\n}\n.ph-duotone.ph-motorcycle:before {\n content: '\\e80a';\n opacity: 0.2;\n}\n.ph-duotone.ph-motorcycle:after {\n content: '\\e80b';\n margin-left: -1em;\n}\n.ph-duotone.ph-mountains:before {\n content: '\\e7ae';\n opacity: 0.2;\n}\n.ph-duotone.ph-mountains:after {\n content: '\\e7af';\n margin-left: -1em;\n}\n.ph-duotone.ph-mouse:before {\n content: '\\e33a';\n opacity: 0.2;\n}\n.ph-duotone.ph-mouse:after {\n content: '\\e33b';\n margin-left: -1em;\n}\n.ph-duotone.ph-mouse-left-click:before {\n content: '\\e334';\n opacity: 0.2;\n}\n.ph-duotone.ph-mouse-left-click:after {\n content: '\\e335';\n margin-left: -1em;\n}\n.ph-duotone.ph-mouse-middle-click:before {\n content: '\\e338';\n opacity: 0.2;\n}\n.ph-duotone.ph-mouse-middle-click:after {\n content: '\\e339';\n margin-left: -1em;\n}\n.ph-duotone.ph-mouse-right-click:before {\n content: '\\e336';\n opacity: 0.2;\n}\n.ph-duotone.ph-mouse-right-click:after {\n content: '\\e337';\n margin-left: -1em;\n}\n.ph-duotone.ph-mouse-scroll:before {\n content: '\\e332';\n opacity: 0.2;\n}\n.ph-duotone.ph-mouse-scroll:after {\n content: '\\e333';\n margin-left: -1em;\n}\n.ph-duotone.ph-mouse-simple:before {\n content: '\\e644';\n opacity: 0.2;\n}\n.ph-duotone.ph-mouse-simple:after {\n content: '\\e645';\n margin-left: -1em;\n}\n.ph-duotone.ph-music-note:before {\n content: '\\e33c';\n opacity: 0.2;\n}\n.ph-duotone.ph-music-note:after {\n content: '\\e33d';\n margin-left: -1em;\n}\n.ph-duotone.ph-music-note-simple:before {\n content: '\\e33e';\n opacity: 0.2;\n}\n.ph-duotone.ph-music-note-simple:after {\n content: '\\e33f';\n margin-left: -1em;\n}\n.ph-duotone.ph-music-notes:before {\n content: '\\e340';\n opacity: 0.2;\n}\n.ph-duotone.ph-music-notes:after {\n content: '\\e341';\n margin-left: -1em;\n}\n.ph-duotone.ph-music-notes-minus:before {\n content: '\\ee0c';\n opacity: 0.2;\n}\n.ph-duotone.ph-music-notes-minus:after {\n content: '\\ee0d';\n margin-left: -1em;\n}\n.ph-duotone.ph-music-notes-plus:before {\n content: '\\eb7c';\n opacity: 0.2;\n}\n.ph-duotone.ph-music-notes-plus:after {\n content: '\\eb7d';\n margin-left: -1em;\n}\n.ph-duotone.ph-music-notes-simple:before {\n content: '\\e342';\n opacity: 0.2;\n}\n.ph-duotone.ph-music-notes-simple:after {\n content: '\\e343';\n margin-left: -1em;\n}\n.ph-duotone.ph-navigation-arrow:before {\n content: '\\eade';\n opacity: 0.2;\n}\n.ph-duotone.ph-navigation-arrow:after {\n content: '\\eadf';\n margin-left: -1em;\n}\n.ph-duotone.ph-needle:before {\n content: '\\e82e';\n opacity: 0.2;\n}\n.ph-duotone.ph-needle:after {\n content: '\\e82f';\n margin-left: -1em;\n}\n.ph-duotone.ph-network:before {\n content: '\\edde';\n opacity: 0.2;\n}\n.ph-duotone.ph-network:after {\n content: '\\eddf';\n margin-left: -1em;\n}\n.ph-duotone.ph-network-slash:before {\n content: '\\eddc';\n opacity: 0.2;\n}\n.ph-duotone.ph-network-slash:after {\n content: '\\eddd';\n margin-left: -1em;\n}\n.ph-duotone.ph-network-x:before {\n content: '\\edda';\n opacity: 0.2;\n}\n.ph-duotone.ph-network-x:after {\n content: '\\eddb';\n margin-left: -1em;\n}\n.ph-duotone.ph-newspaper:before {\n content: '\\e344';\n opacity: 0.2;\n}\n.ph-duotone.ph-newspaper:after {\n content: '\\e345';\n margin-left: -1em;\n}\n.ph-duotone.ph-newspaper-clipping:before {\n content: '\\e346';\n opacity: 0.2;\n}\n.ph-duotone.ph-newspaper-clipping:after {\n content: '\\e347';\n margin-left: -1em;\n}\n.ph-duotone.ph-not-equals:before {\n content: '\\eda6';\n opacity: 0.2;\n}\n.ph-duotone.ph-not-equals:after {\n content: '\\eda7';\n margin-left: -1em;\n}\n.ph-duotone.ph-not-member-of:before {\n content: '\\edae';\n opacity: 0.2;\n}\n.ph-duotone.ph-not-member-of:after {\n content: '\\edaf';\n margin-left: -1em;\n}\n.ph-duotone.ph-not-subset-of:before {\n content: '\\edb0';\n opacity: 0.2;\n}\n.ph-duotone.ph-not-subset-of:after {\n content: '\\edb1';\n margin-left: -1em;\n}\n.ph-duotone.ph-not-superset-of:before {\n content: '\\edb2';\n opacity: 0.2;\n}\n.ph-duotone.ph-not-superset-of:after {\n content: '\\edb3';\n margin-left: -1em;\n}\n.ph-duotone.ph-notches:before {\n content: '\\ed3a';\n opacity: 0.2;\n}\n.ph-duotone.ph-notches:after {\n content: '\\ed3b';\n margin-left: -1em;\n}\n.ph-duotone.ph-note:before {\n content: '\\e348';\n opacity: 0.2;\n}\n.ph-duotone.ph-note:after {\n content: '\\e349';\n margin-left: -1em;\n}\n.ph-duotone.ph-note-blank:before {\n content: '\\e34a';\n opacity: 0.2;\n}\n.ph-duotone.ph-note-blank:after {\n content: '\\e34b';\n margin-left: -1em;\n}\n.ph-duotone.ph-note-pencil:before {\n content: '\\e34c';\n opacity: 0.2;\n}\n.ph-duotone.ph-note-pencil:after {\n content: '\\e34d';\n margin-left: -1em;\n}\n.ph-duotone.ph-notebook:before {\n content: '\\e34e';\n opacity: 0.2;\n}\n.ph-duotone.ph-notebook:after {\n content: '\\e34f';\n margin-left: -1em;\n}\n.ph-duotone.ph-notepad:before {\n content: '\\e63e';\n opacity: 0.2;\n}\n.ph-duotone.ph-notepad:after {\n content: '\\e63f';\n margin-left: -1em;\n}\n.ph-duotone.ph-notification:before {\n content: '\\e6fa';\n opacity: 0.2;\n}\n.ph-duotone.ph-notification:after {\n content: '\\e6fb';\n margin-left: -1em;\n}\n.ph-duotone.ph-notion-logo:before {\n content: '\\e9a0';\n opacity: 0.2;\n}\n.ph-duotone.ph-notion-logo:after {\n content: '\\e9a1';\n margin-left: -1em;\n}\n.ph-duotone.ph-nuclear-plant:before {\n content: '\\ed7c';\n opacity: 0.2;\n}\n.ph-duotone.ph-nuclear-plant:after {\n content: '\\ed7d';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-circle-eight:before {\n content: '\\e352';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-circle-eight:after {\n content: '\\e353';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-circle-five:before {\n content: '\\e358';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-circle-five:after {\n content: '\\e359';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-circle-four:before {\n content: '\\e35e';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-circle-four:after {\n content: '\\e35f';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-circle-nine:before {\n content: '\\e364';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-circle-nine:after {\n content: '\\e365';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-circle-one:before {\n content: '\\e36a';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-circle-one:after {\n content: '\\e36b';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-circle-seven:before {\n content: '\\e370';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-circle-seven:after {\n content: '\\e371';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-circle-six:before {\n content: '\\e376';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-circle-six:after {\n content: '\\e377';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-circle-three:before {\n content: '\\e37c';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-circle-three:after {\n content: '\\e37d';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-circle-two:before {\n content: '\\e382';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-circle-two:after {\n content: '\\e383';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-circle-zero:before {\n content: '\\e388';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-circle-zero:after {\n content: '\\e389';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-eight:before {\n content: '\\e350';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-eight:after {\n content: '\\e351';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-five:before {\n content: '\\e356';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-five:after {\n content: '\\e357';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-four:before {\n content: '\\e35c';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-four:after {\n content: '\\e35d';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-nine:before {\n content: '\\e362';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-nine:after {\n content: '\\e363';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-one:before {\n content: '\\e368';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-one:after {\n content: '\\e369';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-seven:before {\n content: '\\e36e';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-seven:after {\n content: '\\e36f';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-six:before {\n content: '\\e374';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-six:after {\n content: '\\e375';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-square-eight:before {\n content: '\\e354';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-square-eight:after {\n content: '\\e355';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-square-five:before {\n content: '\\e35a';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-square-five:after {\n content: '\\e35b';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-square-four:before {\n content: '\\e360';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-square-four:after {\n content: '\\e361';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-square-nine:before {\n content: '\\e366';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-square-nine:after {\n content: '\\e367';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-square-one:before {\n content: '\\e36c';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-square-one:after {\n content: '\\e36d';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-square-seven:before {\n content: '\\e372';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-square-seven:after {\n content: '\\e373';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-square-six:before {\n content: '\\e378';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-square-six:after {\n content: '\\e379';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-square-three:before {\n content: '\\e37e';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-square-three:after {\n content: '\\e37f';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-square-two:before {\n content: '\\e384';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-square-two:after {\n content: '\\e385';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-square-zero:before {\n content: '\\e38a';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-square-zero:after {\n content: '\\e38b';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-three:before {\n content: '\\e37a';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-three:after {\n content: '\\e37b';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-two:before {\n content: '\\e380';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-two:after {\n content: '\\e381';\n margin-left: -1em;\n}\n.ph-duotone.ph-number-zero:before {\n content: '\\e386';\n opacity: 0.2;\n}\n.ph-duotone.ph-number-zero:after {\n content: '\\e387';\n margin-left: -1em;\n}\n.ph-duotone.ph-numpad:before {\n content: '\\e3c8';\n opacity: 0.2;\n}\n.ph-duotone.ph-numpad:after {\n content: '\\e3c9';\n margin-left: -1em;\n}\n.ph-duotone.ph-nut:before {\n content: '\\e38c';\n opacity: 0.2;\n}\n.ph-duotone.ph-nut:after {\n content: '\\e38d';\n margin-left: -1em;\n}\n.ph-duotone.ph-ny-times-logo:before {\n content: '\\e646';\n opacity: 0.2;\n}\n.ph-duotone.ph-ny-times-logo:after {\n content: '\\e647';\n margin-left: -1em;\n}\n.ph-duotone.ph-octagon:before {\n content: '\\e38e';\n opacity: 0.2;\n}\n.ph-duotone.ph-octagon:after {\n content: '\\e38f';\n margin-left: -1em;\n}\n.ph-duotone.ph-office-chair:before {\n content: '\\ea46';\n opacity: 0.2;\n}\n.ph-duotone.ph-office-chair:after {\n content: '\\ea47';\n margin-left: -1em;\n}\n.ph-duotone.ph-onigiri:before {\n content: '\\ee2c';\n opacity: 0.2;\n}\n.ph-duotone.ph-onigiri:after {\n content: '\\ee2d';\n margin-left: -1em;\n}\n.ph-duotone.ph-open-ai-logo:before {\n content: '\\e7d2';\n opacity: 0.2;\n}\n.ph-duotone.ph-open-ai-logo:after {\n content: '\\e7d3';\n margin-left: -1em;\n}\n.ph-duotone.ph-option:before {\n content: '\\e8a8';\n opacity: 0.2;\n}\n.ph-duotone.ph-option:after {\n content: '\\e8a9';\n margin-left: -1em;\n}\n.ph-duotone.ph-orange:before {\n content: '\\ee40';\n opacity: 0.2;\n}\n.ph-duotone.ph-orange:after {\n content: '\\ee41';\n margin-left: -1em;\n}\n.ph-duotone.ph-orange-slice:before {\n content: '\\ed36';\n opacity: 0.2;\n}\n.ph-duotone.ph-orange-slice:after {\n content: '\\ed37';\n margin-left: -1em;\n}\n.ph-duotone.ph-oven:before {\n content: '\\ed8c';\n opacity: 0.2;\n}\n.ph-duotone.ph-oven:after {\n content: '\\ed8d';\n margin-left: -1em;\n}\n.ph-duotone.ph-package:before {\n content: '\\e390';\n opacity: 0.2;\n}\n.ph-duotone.ph-package:after {\n content: '\\e391';\n margin-left: -1em;\n}\n.ph-duotone.ph-paint-brush:before {\n content: '\\e6f0';\n opacity: 0.2;\n}\n.ph-duotone.ph-paint-brush:after {\n content: '\\e6f1';\n margin-left: -1em;\n}\n.ph-duotone.ph-paint-brush-broad:before {\n content: '\\e590';\n opacity: 0.2;\n}\n.ph-duotone.ph-paint-brush-broad:after {\n content: '\\e591';\n margin-left: -1em;\n}\n.ph-duotone.ph-paint-brush-household:before {\n content: '\\e6f2';\n opacity: 0.2;\n}\n.ph-duotone.ph-paint-brush-household:after {\n content: '\\e6f3';\n margin-left: -1em;\n}\n.ph-duotone.ph-paint-bucket:before {\n content: '\\e392';\n opacity: 0.2;\n}\n.ph-duotone.ph-paint-bucket:after {\n content: '\\e393';\n margin-left: -1em;\n}\n.ph-duotone.ph-paint-roller:before {\n content: '\\e6f4';\n opacity: 0.2;\n}\n.ph-duotone.ph-paint-roller:after {\n content: '\\e6f5';\n margin-left: -1em;\n}\n.ph-duotone.ph-palette:before {\n content: '\\e6c8';\n opacity: 0.2;\n}\n.ph-duotone.ph-palette:after {\n content: '\\e6c9';\n margin-left: -1em;\n}\n.ph-duotone.ph-panorama:before {\n content: '\\eaa2';\n opacity: 0.2;\n}\n.ph-duotone.ph-panorama:after {\n content: '\\eaa3';\n margin-left: -1em;\n}\n.ph-duotone.ph-pants:before {\n content: '\\ec88';\n opacity: 0.2;\n}\n.ph-duotone.ph-pants:after {\n content: '\\ec89';\n margin-left: -1em;\n}\n.ph-duotone.ph-paper-plane:before {\n content: '\\e394';\n opacity: 0.2;\n}\n.ph-duotone.ph-paper-plane:after {\n content: '\\e395';\n margin-left: -1em;\n}\n.ph-duotone.ph-paper-plane-right:before {\n content: '\\e396';\n opacity: 0.2;\n}\n.ph-duotone.ph-paper-plane-right:after {\n content: '\\e397';\n margin-left: -1em;\n}\n.ph-duotone.ph-paper-plane-tilt:before {\n content: '\\e398';\n opacity: 0.2;\n}\n.ph-duotone.ph-paper-plane-tilt:after {\n content: '\\e399';\n margin-left: -1em;\n}\n.ph-duotone.ph-paperclip:before {\n content: '\\e39a';\n opacity: 0.2;\n}\n.ph-duotone.ph-paperclip:after {\n content: '\\e39b';\n margin-left: -1em;\n}\n.ph-duotone.ph-paperclip-horizontal:before {\n content: '\\e592';\n opacity: 0.2;\n}\n.ph-duotone.ph-paperclip-horizontal:after {\n content: '\\e593';\n margin-left: -1em;\n}\n.ph-duotone.ph-parachute:before {\n content: '\\ea7c';\n opacity: 0.2;\n}\n.ph-duotone.ph-parachute:after {\n content: '\\ea7d';\n margin-left: -1em;\n}\n.ph-duotone.ph-paragraph:before {\n content: '\\e960';\n opacity: 0.2;\n}\n.ph-duotone.ph-paragraph:after {\n content: '\\e961';\n margin-left: -1em;\n}\n.ph-duotone.ph-parallelogram:before {\n content: '\\ecc6';\n opacity: 0.2;\n}\n.ph-duotone.ph-parallelogram:after {\n content: '\\ecc7';\n margin-left: -1em;\n}\n.ph-duotone.ph-park:before {\n content: '\\ecb2';\n opacity: 0.2;\n}\n.ph-duotone.ph-park:after {\n content: '\\ecb3';\n margin-left: -1em;\n}\n.ph-duotone.ph-password:before {\n content: '\\e752';\n opacity: 0.2;\n}\n.ph-duotone.ph-password:after {\n content: '\\e753';\n margin-left: -1em;\n}\n.ph-duotone.ph-path:before {\n content: '\\e39c';\n opacity: 0.2;\n}\n.ph-duotone.ph-path:after {\n content: '\\e39d';\n margin-left: -1em;\n}\n.ph-duotone.ph-patreon-logo:before {\n content: '\\e98a';\n opacity: 0.2;\n}\n.ph-duotone.ph-patreon-logo:after {\n content: '\\e98b';\n margin-left: -1em;\n}\n.ph-duotone.ph-pause:before {\n content: '\\e39e';\n opacity: 0.2;\n}\n.ph-duotone.ph-pause:after {\n content: '\\e39f';\n margin-left: -1em;\n}\n.ph-duotone.ph-pause-circle:before {\n content: '\\e3a0';\n opacity: 0.2;\n}\n.ph-duotone.ph-pause-circle:after {\n content: '\\e3a1';\n margin-left: -1em;\n}\n.ph-duotone.ph-paw-print:before {\n content: '\\e648';\n opacity: 0.2;\n}\n.ph-duotone.ph-paw-print:after {\n content: '\\e649';\n margin-left: -1em;\n}\n.ph-duotone.ph-paypal-logo:before {\n content: '\\e98c';\n opacity: 0.2;\n}\n.ph-duotone.ph-paypal-logo:after {\n content: '\\e98d';\n margin-left: -1em;\n}\n.ph-duotone.ph-peace:before {\n content: '\\e3a2';\n opacity: 0.2;\n}\n.ph-duotone.ph-peace:after {\n content: '\\e3a3';\n margin-left: -1em;\n}\n.ph-duotone.ph-pen:before {\n content: '\\e3aa';\n opacity: 0.2;\n}\n.ph-duotone.ph-pen:after {\n content: '\\e3ab';\n margin-left: -1em;\n}\n.ph-duotone.ph-pen-nib:before {\n content: '\\e3ac';\n opacity: 0.2;\n}\n.ph-duotone.ph-pen-nib:after {\n content: '\\e3ad';\n margin-left: -1em;\n}\n.ph-duotone.ph-pen-nib-straight:before {\n content: '\\e64a';\n opacity: 0.2;\n}\n.ph-duotone.ph-pen-nib-straight:after {\n content: '\\e64b';\n margin-left: -1em;\n}\n.ph-duotone.ph-pencil:before {\n content: '\\e3ae';\n opacity: 0.2;\n}\n.ph-duotone.ph-pencil:after {\n content: '\\e3af';\n margin-left: -1em;\n}\n.ph-duotone.ph-pencil-circle:before {\n content: '\\e3b0';\n opacity: 0.2;\n}\n.ph-duotone.ph-pencil-circle:after {\n content: '\\e3b1';\n margin-left: -1em;\n}\n.ph-duotone.ph-pencil-line:before {\n content: '\\e3b2';\n opacity: 0.2;\n}\n.ph-duotone.ph-pencil-line:after {\n content: '\\e3b3';\n margin-left: -1em;\n}\n.ph-duotone.ph-pencil-ruler:before {\n content: '\\e906';\n opacity: 0.2;\n}\n.ph-duotone.ph-pencil-ruler:after {\n content: '\\e907';\n margin-left: -1em;\n}\n.ph-duotone.ph-pencil-simple:before {\n content: '\\e3b4';\n opacity: 0.2;\n}\n.ph-duotone.ph-pencil-simple:after {\n content: '\\e3b5';\n margin-left: -1em;\n}\n.ph-duotone.ph-pencil-simple-line:before {\n content: '\\ebc6';\n opacity: 0.2;\n}\n.ph-duotone.ph-pencil-simple-line:after {\n content: '\\ebc7';\n margin-left: -1em;\n}\n.ph-duotone.ph-pencil-simple-slash:before {\n content: '\\ecf6';\n opacity: 0.2;\n}\n.ph-duotone.ph-pencil-simple-slash:after {\n content: '\\ecf7';\n margin-left: -1em;\n}\n.ph-duotone.ph-pencil-slash:before {\n content: '\\ecf8';\n opacity: 0.2;\n}\n.ph-duotone.ph-pencil-slash:after {\n content: '\\ecf9';\n margin-left: -1em;\n}\n.ph-duotone.ph-pentagon:before {\n content: '\\ec7e';\n opacity: 0.2;\n}\n.ph-duotone.ph-pentagon:after {\n content: '\\ec7f';\n margin-left: -1em;\n}\n.ph-duotone.ph-pentagram:before {\n content: '\\ec5c';\n opacity: 0.2;\n}\n.ph-duotone.ph-pentagram:after {\n content: '\\ec5d';\n margin-left: -1em;\n}\n.ph-duotone.ph-pepper:before {\n content: '\\e94a';\n opacity: 0.2;\n}\n.ph-duotone.ph-pepper:after {\n content: '\\e94b';\n margin-left: -1em;\n}\n.ph-duotone.ph-percent:before {\n content: '\\e3b6';\n opacity: 0.2;\n}\n.ph-duotone.ph-percent:after {\n content: '\\e3b7';\n margin-left: -1em;\n}\n.ph-duotone.ph-person:before {\n content: '\\e3a8';\n opacity: 0.2;\n}\n.ph-duotone.ph-person:after {\n content: '\\e3a9';\n margin-left: -1em;\n}\n.ph-duotone.ph-person-arms-spread:before {\n content: '\\ecfe';\n opacity: 0.2;\n}\n.ph-duotone.ph-person-arms-spread:after {\n content: '\\ecff';\n margin-left: -1em;\n}\n.ph-duotone.ph-person-simple:before {\n content: '\\e72e';\n opacity: 0.2;\n}\n.ph-duotone.ph-person-simple:after {\n content: '\\e72f';\n margin-left: -1em;\n}\n.ph-duotone.ph-person-simple-bike:before {\n content: '\\e734';\n opacity: 0.2;\n}\n.ph-duotone.ph-person-simple-bike:after {\n content: '\\e735';\n margin-left: -1em;\n}\n.ph-duotone.ph-person-simple-circle:before {\n content: '\\ee58';\n opacity: 0.2;\n}\n.ph-duotone.ph-person-simple-circle:after {\n content: '\\ee59';\n margin-left: -1em;\n}\n.ph-duotone.ph-person-simple-hike:before {\n content: '\\ed54';\n opacity: 0.2;\n}\n.ph-duotone.ph-person-simple-hike:after {\n content: '\\ed55';\n margin-left: -1em;\n}\n.ph-duotone.ph-person-simple-run:before {\n content: '\\e730';\n opacity: 0.2;\n}\n.ph-duotone.ph-person-simple-run:after {\n content: '\\e731';\n margin-left: -1em;\n}\n.ph-duotone.ph-person-simple-ski:before {\n content: '\\e71c';\n opacity: 0.2;\n}\n.ph-duotone.ph-person-simple-ski:after {\n content: '\\e71d';\n margin-left: -1em;\n}\n.ph-duotone.ph-person-simple-snowboard:before {\n content: '\\e71e';\n opacity: 0.2;\n}\n.ph-duotone.ph-person-simple-snowboard:after {\n content: '\\e71f';\n margin-left: -1em;\n}\n.ph-duotone.ph-person-simple-swim:before {\n content: '\\e736';\n opacity: 0.2;\n}\n.ph-duotone.ph-person-simple-swim:after {\n content: '\\e737';\n margin-left: -1em;\n}\n.ph-duotone.ph-person-simple-tai-chi:before {\n content: '\\ed5c';\n opacity: 0.2;\n}\n.ph-duotone.ph-person-simple-tai-chi:after {\n content: '\\ed5d';\n margin-left: -1em;\n}\n.ph-duotone.ph-person-simple-throw:before {\n content: '\\e732';\n opacity: 0.2;\n}\n.ph-duotone.ph-person-simple-throw:after {\n content: '\\e733';\n margin-left: -1em;\n}\n.ph-duotone.ph-person-simple-walk:before {\n content: '\\e73a';\n opacity: 0.2;\n}\n.ph-duotone.ph-person-simple-walk:after {\n content: '\\e73b';\n margin-left: -1em;\n}\n.ph-duotone.ph-perspective:before {\n content: '\\ebe6';\n opacity: 0.2;\n}\n.ph-duotone.ph-perspective:after {\n content: '\\ebe7';\n margin-left: -1em;\n}\n.ph-duotone.ph-phone:before {\n content: '\\e3b8';\n opacity: 0.2;\n}\n.ph-duotone.ph-phone:after {\n content: '\\e3b9';\n margin-left: -1em;\n}\n.ph-duotone.ph-phone-call:before {\n content: '\\e3ba';\n opacity: 0.2;\n}\n.ph-duotone.ph-phone-call:after {\n content: '\\e3bb';\n margin-left: -1em;\n}\n.ph-duotone.ph-phone-disconnect:before {\n content: '\\e3bc';\n opacity: 0.2;\n}\n.ph-duotone.ph-phone-disconnect:after {\n content: '\\e3bd';\n margin-left: -1em;\n}\n.ph-duotone.ph-phone-incoming:before {\n content: '\\e3be';\n opacity: 0.2;\n}\n.ph-duotone.ph-phone-incoming:after {\n content: '\\e3bf';\n margin-left: -1em;\n}\n.ph-duotone.ph-phone-list:before {\n content: '\\e3cc';\n opacity: 0.2;\n}\n.ph-duotone.ph-phone-list:after {\n content: '\\e3cd';\n margin-left: -1em;\n}\n.ph-duotone.ph-phone-outgoing:before {\n content: '\\e3c0';\n opacity: 0.2;\n}\n.ph-duotone.ph-phone-outgoing:after {\n content: '\\e3c1';\n margin-left: -1em;\n}\n.ph-duotone.ph-phone-pause:before {\n content: '\\e3ca';\n opacity: 0.2;\n}\n.ph-duotone.ph-phone-pause:after {\n content: '\\e3cb';\n margin-left: -1em;\n}\n.ph-duotone.ph-phone-plus:before {\n content: '\\ec56';\n opacity: 0.2;\n}\n.ph-duotone.ph-phone-plus:after {\n content: '\\ec57';\n margin-left: -1em;\n}\n.ph-duotone.ph-phone-slash:before {\n content: '\\e3c2';\n opacity: 0.2;\n}\n.ph-duotone.ph-phone-slash:after {\n content: '\\e3c3';\n margin-left: -1em;\n}\n.ph-duotone.ph-phone-transfer:before {\n content: '\\e3c6';\n opacity: 0.2;\n}\n.ph-duotone.ph-phone-transfer:after {\n content: '\\e3c7';\n margin-left: -1em;\n}\n.ph-duotone.ph-phone-x:before {\n content: '\\e3c4';\n opacity: 0.2;\n}\n.ph-duotone.ph-phone-x:after {\n content: '\\e3c5';\n margin-left: -1em;\n}\n.ph-duotone.ph-phosphor-logo:before {\n content: '\\e3ce';\n opacity: 0.2;\n}\n.ph-duotone.ph-phosphor-logo:after {\n content: '\\e3cf';\n margin-left: -1em;\n}\n.ph-duotone.ph-pi:before {\n content: '\\ec80';\n opacity: 0.2;\n}\n.ph-duotone.ph-pi:after {\n content: '\\ec81';\n margin-left: -1em;\n}\n.ph-duotone.ph-piano-keys:before {\n content: '\\e9c8';\n opacity: 0.2;\n}\n.ph-duotone.ph-piano-keys:after {\n content: '\\e9c9';\n margin-left: -1em;\n}\n.ph-duotone.ph-picnic-table:before {\n content: '\\ee26';\n opacity: 0.2;\n}\n.ph-duotone.ph-picnic-table:after {\n content: '\\ee27';\n margin-left: -1em;\n}\n.ph-duotone.ph-picture-in-picture:before {\n content: '\\e64c';\n opacity: 0.2;\n}\n.ph-duotone.ph-picture-in-picture:after {\n content: '\\e64d';\n margin-left: -1em;\n}\n.ph-duotone.ph-piggy-bank:before {\n content: '\\ea04';\n opacity: 0.2;\n}\n.ph-duotone.ph-piggy-bank:after {\n content: '\\ea05';\n margin-left: -1em;\n}\n.ph-duotone.ph-pill:before {\n content: '\\e700';\n opacity: 0.2;\n}\n.ph-duotone.ph-pill:after {\n content: '\\e701';\n margin-left: -1em;\n}\n.ph-duotone.ph-ping-pong:before {\n content: '\\ea42';\n opacity: 0.2;\n}\n.ph-duotone.ph-ping-pong:after {\n content: '\\ea43';\n margin-left: -1em;\n}\n.ph-duotone.ph-pint-glass:before {\n content: '\\edd0';\n opacity: 0.2;\n}\n.ph-duotone.ph-pint-glass:after {\n content: '\\edd1';\n margin-left: -1em;\n}\n.ph-duotone.ph-pinterest-logo:before {\n content: '\\e64e';\n opacity: 0.2;\n}\n.ph-duotone.ph-pinterest-logo:after {\n content: '\\e64f';\n margin-left: -1em;\n}\n.ph-duotone.ph-pinwheel:before {\n content: '\\eb9c';\n opacity: 0.2;\n}\n.ph-duotone.ph-pinwheel:after {\n content: '\\eb9d';\n margin-left: -1em;\n}\n.ph-duotone.ph-pipe:before {\n content: '\\ed86';\n opacity: 0.2;\n}\n.ph-duotone.ph-pipe:after {\n content: '\\ed87';\n margin-left: -1em;\n}\n.ph-duotone.ph-pipe-wrench:before {\n content: '\\ed88';\n opacity: 0.2;\n}\n.ph-duotone.ph-pipe-wrench:after {\n content: '\\ed89';\n margin-left: -1em;\n}\n.ph-duotone.ph-pix-logo:before {\n content: '\\ecc2';\n opacity: 0.2;\n}\n.ph-duotone.ph-pix-logo:after {\n content: '\\ecc3';\n margin-left: -1em;\n}\n.ph-duotone.ph-pizza:before {\n content: '\\e796';\n opacity: 0.2;\n}\n.ph-duotone.ph-pizza:after {\n content: '\\e797';\n margin-left: -1em;\n}\n.ph-duotone.ph-placeholder:before {\n content: '\\e650';\n opacity: 0.2;\n}\n.ph-duotone.ph-placeholder:after {\n content: '\\e651';\n margin-left: -1em;\n}\n.ph-duotone.ph-planet:before {\n content: '\\e652';\n opacity: 0.2;\n}\n.ph-duotone.ph-planet:after {\n content: '\\e653';\n margin-left: -1em;\n}\n.ph-duotone.ph-plant:before {\n content: '\\ebae';\n opacity: 0.2;\n}\n.ph-duotone.ph-plant:after {\n content: '\\ebaf';\n margin-left: -1em;\n}\n.ph-duotone.ph-play:before {\n content: '\\e3d0';\n opacity: 0.2;\n}\n.ph-duotone.ph-play:after {\n content: '\\e3d1';\n margin-left: -1em;\n}\n.ph-duotone.ph-play-circle:before {\n content: '\\e3d2';\n opacity: 0.2;\n}\n.ph-duotone.ph-play-circle:after {\n content: '\\e3d3';\n margin-left: -1em;\n}\n.ph-duotone.ph-play-pause:before {\n content: '\\e8be';\n opacity: 0.2;\n}\n.ph-duotone.ph-play-pause:after {\n content: '\\e8bf';\n margin-left: -1em;\n}\n.ph-duotone.ph-playlist:before {\n content: '\\e6aa';\n opacity: 0.2;\n}\n.ph-duotone.ph-playlist:after {\n content: '\\e6ab';\n margin-left: -1em;\n}\n.ph-duotone.ph-plug:before {\n content: '\\e946';\n opacity: 0.2;\n}\n.ph-duotone.ph-plug:after {\n content: '\\e947';\n margin-left: -1em;\n}\n.ph-duotone.ph-plug-charging:before {\n content: '\\eb5c';\n opacity: 0.2;\n}\n.ph-duotone.ph-plug-charging:after {\n content: '\\eb5d';\n margin-left: -1em;\n}\n.ph-duotone.ph-plugs:before {\n content: '\\eb56';\n opacity: 0.2;\n}\n.ph-duotone.ph-plugs:after {\n content: '\\eb57';\n margin-left: -1em;\n}\n.ph-duotone.ph-plugs-connected:before {\n content: '\\eb5a';\n opacity: 0.2;\n}\n.ph-duotone.ph-plugs-connected:after {\n content: '\\eb5b';\n margin-left: -1em;\n}\n.ph-duotone.ph-plus:before {\n content: '\\e3d4';\n opacity: 0.2;\n}\n.ph-duotone.ph-plus:after {\n content: '\\e3d5';\n margin-left: -1em;\n}\n.ph-duotone.ph-plus-circle:before {\n content: '\\e3d6';\n opacity: 0.2;\n}\n.ph-duotone.ph-plus-circle:after {\n content: '\\e3d7';\n margin-left: -1em;\n}\n.ph-duotone.ph-plus-minus:before {\n content: '\\e3d8';\n opacity: 0.2;\n}\n.ph-duotone.ph-plus-minus:after {\n content: '\\e3d9';\n margin-left: -1em;\n}\n.ph-duotone.ph-plus-square:before {\n content: '\\ed4a';\n opacity: 0.2;\n}\n.ph-duotone.ph-plus-square:after {\n content: '\\ed56';\n margin-left: -1em;\n}\n.ph-duotone.ph-poker-chip:before {\n content: '\\e594';\n opacity: 0.2;\n}\n.ph-duotone.ph-poker-chip:after {\n content: '\\e595';\n margin-left: -1em;\n}\n.ph-duotone.ph-police-car:before {\n content: '\\ec4a';\n opacity: 0.2;\n}\n.ph-duotone.ph-police-car:after {\n content: '\\ec4b';\n margin-left: -1em;\n}\n.ph-duotone.ph-polygon:before {\n content: '\\e6d0';\n opacity: 0.2;\n}\n.ph-duotone.ph-polygon:after {\n content: '\\e6d1';\n margin-left: -1em;\n}\n.ph-duotone.ph-popcorn:before {\n content: '\\eb4e';\n opacity: 0.2;\n}\n.ph-duotone.ph-popcorn:after {\n content: '\\eb4f';\n margin-left: -1em;\n}\n.ph-duotone.ph-popsicle:before {\n content: '\\ebbe';\n opacity: 0.2;\n}\n.ph-duotone.ph-popsicle:after {\n content: '\\ebbf';\n margin-left: -1em;\n}\n.ph-duotone.ph-potted-plant:before {\n content: '\\ec22';\n opacity: 0.2;\n}\n.ph-duotone.ph-potted-plant:after {\n content: '\\ec23';\n margin-left: -1em;\n}\n.ph-duotone.ph-power:before {\n content: '\\e3da';\n opacity: 0.2;\n}\n.ph-duotone.ph-power:after {\n content: '\\e3db';\n margin-left: -1em;\n}\n.ph-duotone.ph-prescription:before {\n content: '\\e7a2';\n opacity: 0.2;\n}\n.ph-duotone.ph-prescription:after {\n content: '\\e7a3';\n margin-left: -1em;\n}\n.ph-duotone.ph-presentation:before {\n content: '\\e654';\n opacity: 0.2;\n}\n.ph-duotone.ph-presentation:after {\n content: '\\e655';\n margin-left: -1em;\n}\n.ph-duotone.ph-presentation-chart:before {\n content: '\\e656';\n opacity: 0.2;\n}\n.ph-duotone.ph-presentation-chart:after {\n content: '\\e657';\n margin-left: -1em;\n}\n.ph-duotone.ph-printer:before {\n content: '\\e3dc';\n opacity: 0.2;\n}\n.ph-duotone.ph-printer:after {\n content: '\\e3dd';\n margin-left: -1em;\n}\n.ph-duotone.ph-prohibit:before {\n content: '\\e3de';\n opacity: 0.2;\n}\n.ph-duotone.ph-prohibit:after {\n content: '\\e3df';\n margin-left: -1em;\n}\n.ph-duotone.ph-prohibit-inset:before {\n content: '\\e3e0';\n opacity: 0.2;\n}\n.ph-duotone.ph-prohibit-inset:after {\n content: '\\e3e1';\n margin-left: -1em;\n}\n.ph-duotone.ph-projector-screen:before {\n content: '\\e658';\n opacity: 0.2;\n}\n.ph-duotone.ph-projector-screen:after {\n content: '\\e659';\n margin-left: -1em;\n}\n.ph-duotone.ph-projector-screen-chart:before {\n content: '\\e65a';\n opacity: 0.2;\n}\n.ph-duotone.ph-projector-screen-chart:after {\n content: '\\e65b';\n margin-left: -1em;\n}\n.ph-duotone.ph-pulse:before {\n content: '\\e000';\n opacity: 0.2;\n}\n.ph-duotone.ph-pulse:after {\n content: '\\e001';\n margin-left: -1em;\n}\n.ph-duotone.ph-push-pin:before {\n content: '\\e3e2';\n opacity: 0.2;\n}\n.ph-duotone.ph-push-pin:after {\n content: '\\e3e3';\n margin-left: -1em;\n}\n.ph-duotone.ph-push-pin-simple:before {\n content: '\\e65c';\n opacity: 0.2;\n}\n.ph-duotone.ph-push-pin-simple:after {\n content: '\\e65d';\n margin-left: -1em;\n}\n.ph-duotone.ph-push-pin-simple-slash:before {\n content: '\\e65e';\n opacity: 0.2;\n}\n.ph-duotone.ph-push-pin-simple-slash:after {\n content: '\\e65f';\n margin-left: -1em;\n}\n.ph-duotone.ph-push-pin-slash:before {\n content: '\\e3e4';\n opacity: 0.2;\n}\n.ph-duotone.ph-push-pin-slash:after {\n content: '\\e3e5';\n margin-left: -1em;\n}\n.ph-duotone.ph-puzzle-piece:before {\n content: '\\e596';\n opacity: 0.2;\n}\n.ph-duotone.ph-puzzle-piece:after {\n content: '\\e597';\n margin-left: -1em;\n}\n.ph-duotone.ph-qr-code:before {\n content: '\\e3e6';\n opacity: 0.2;\n}\n.ph-duotone.ph-qr-code:after {\n content: '\\e3e7';\n margin-left: -1em;\n}\n.ph-duotone.ph-question:before {\n content: '\\e3e8';\n opacity: 0.2;\n}\n.ph-duotone.ph-question:after {\n content: '\\e3eb';\n margin-left: -1em;\n}\n.ph-duotone.ph-question-mark:before {\n content: '\\e3e9';\n opacity: 0.2;\n}\n.ph-duotone.ph-question-mark:after {\n content: '\\e3ed';\n margin-left: -1em;\n}\n.ph-duotone.ph-queue:before {\n content: '\\e6ac';\n opacity: 0.2;\n}\n.ph-duotone.ph-queue:after {\n content: '\\e6ad';\n margin-left: -1em;\n}\n.ph-duotone.ph-quotes:before {\n content: '\\e660';\n opacity: 0.2;\n}\n.ph-duotone.ph-quotes:after {\n content: '\\e661';\n margin-left: -1em;\n}\n.ph-duotone.ph-rabbit:before {\n content: '\\eac2';\n opacity: 0.2;\n}\n.ph-duotone.ph-rabbit:after {\n content: '\\eac3';\n margin-left: -1em;\n}\n.ph-duotone.ph-racquet:before {\n content: '\\ee02';\n opacity: 0.2;\n}\n.ph-duotone.ph-racquet:after {\n content: '\\ee03';\n margin-left: -1em;\n}\n.ph-duotone.ph-radical:before {\n content: '\\e3ea';\n opacity: 0.2;\n}\n.ph-duotone.ph-radical:after {\n content: '\\e3ef';\n margin-left: -1em;\n}\n.ph-duotone.ph-radio:before {\n content: '\\e77e';\n opacity: 0.2;\n}\n.ph-duotone.ph-radio:after {\n content: '\\e77f';\n margin-left: -1em;\n}\n.ph-duotone.ph-radio-button:before {\n content: '\\eb08';\n opacity: 0.2;\n}\n.ph-duotone.ph-radio-button:after {\n content: '\\eb09';\n margin-left: -1em;\n}\n.ph-duotone.ph-radioactive:before {\n content: '\\e9dc';\n opacity: 0.2;\n}\n.ph-duotone.ph-radioactive:after {\n content: '\\e9dd';\n margin-left: -1em;\n}\n.ph-duotone.ph-rainbow:before {\n content: '\\e598';\n opacity: 0.2;\n}\n.ph-duotone.ph-rainbow:after {\n content: '\\e599';\n margin-left: -1em;\n}\n.ph-duotone.ph-rainbow-cloud:before {\n content: '\\e59a';\n opacity: 0.2;\n}\n.ph-duotone.ph-rainbow-cloud:after {\n content: '\\e59b';\n margin-left: -1em;\n}\n.ph-duotone.ph-ranking:before {\n content: '\\ed62';\n opacity: 0.2;\n}\n.ph-duotone.ph-ranking:after {\n content: '\\ed63';\n margin-left: -1em;\n}\n.ph-duotone.ph-read-cv-logo:before {\n content: '\\ed0c';\n opacity: 0.2;\n}\n.ph-duotone.ph-read-cv-logo:after {\n content: '\\ed0d';\n margin-left: -1em;\n}\n.ph-duotone.ph-receipt:before {\n content: '\\e3ec';\n opacity: 0.2;\n}\n.ph-duotone.ph-receipt:after {\n content: '\\e3f1';\n margin-left: -1em;\n}\n.ph-duotone.ph-receipt-x:before {\n content: '\\ed40';\n opacity: 0.2;\n}\n.ph-duotone.ph-receipt-x:after {\n content: '\\ed41';\n margin-left: -1em;\n}\n.ph-duotone.ph-record:before {\n content: '\\e3ee';\n opacity: 0.2;\n}\n.ph-duotone.ph-record:after {\n content: '\\e3f3';\n margin-left: -1em;\n}\n.ph-duotone.ph-rectangle:before {\n content: '\\e3f0';\n opacity: 0.2;\n}\n.ph-duotone.ph-rectangle:after {\n content: '\\e3f5';\n margin-left: -1em;\n}\n.ph-duotone.ph-rectangle-dashed:before {\n content: '\\e3f2';\n opacity: 0.2;\n}\n.ph-duotone.ph-rectangle-dashed:after {\n content: '\\e3f7';\n margin-left: -1em;\n}\n.ph-duotone.ph-recycle:before {\n content: '\\e75a';\n opacity: 0.2;\n}\n.ph-duotone.ph-recycle:after {\n content: '\\e75b';\n margin-left: -1em;\n}\n.ph-duotone.ph-reddit-logo:before {\n content: '\\e59c';\n opacity: 0.2;\n}\n.ph-duotone.ph-reddit-logo:after {\n content: '\\e59d';\n margin-left: -1em;\n}\n.ph-duotone.ph-repeat:before {\n content: '\\e3f6';\n opacity: 0.2;\n}\n.ph-duotone.ph-repeat:after {\n content: '\\e3f9';\n margin-left: -1em;\n}\n.ph-duotone.ph-repeat-once:before {\n content: '\\e3f8';\n opacity: 0.2;\n}\n.ph-duotone.ph-repeat-once:after {\n content: '\\e3fb';\n margin-left: -1em;\n}\n.ph-duotone.ph-replit-logo:before {\n content: '\\eb8a';\n opacity: 0.2;\n}\n.ph-duotone.ph-replit-logo:after {\n content: '\\eb8b';\n margin-left: -1em;\n}\n.ph-duotone.ph-resize:before {\n content: '\\ed6e';\n opacity: 0.2;\n}\n.ph-duotone.ph-resize:after {\n content: '\\ed6f';\n margin-left: -1em;\n}\n.ph-duotone.ph-rewind:before {\n content: '\\e6a8';\n opacity: 0.2;\n}\n.ph-duotone.ph-rewind:after {\n content: '\\e6a9';\n margin-left: -1em;\n}\n.ph-duotone.ph-rewind-circle:before {\n content: '\\e3fa';\n opacity: 0.2;\n}\n.ph-duotone.ph-rewind-circle:after {\n content: '\\e3fd';\n margin-left: -1em;\n}\n.ph-duotone.ph-road-horizon:before {\n content: '\\e838';\n opacity: 0.2;\n}\n.ph-duotone.ph-road-horizon:after {\n content: '\\e839';\n margin-left: -1em;\n}\n.ph-duotone.ph-robot:before {\n content: '\\e762';\n opacity: 0.2;\n}\n.ph-duotone.ph-robot:after {\n content: '\\e763';\n margin-left: -1em;\n}\n.ph-duotone.ph-rocket:before {\n content: '\\e3fc';\n opacity: 0.2;\n}\n.ph-duotone.ph-rocket:after {\n content: '\\e3ff';\n margin-left: -1em;\n}\n.ph-duotone.ph-rocket-launch:before {\n content: '\\e3fe';\n opacity: 0.2;\n}\n.ph-duotone.ph-rocket-launch:after {\n content: '\\e401';\n margin-left: -1em;\n}\n.ph-duotone.ph-rows:before {\n content: '\\e5a2';\n opacity: 0.2;\n}\n.ph-duotone.ph-rows:after {\n content: '\\e5a3';\n margin-left: -1em;\n}\n.ph-duotone.ph-rows-plus-bottom:before {\n content: '\\e59e';\n opacity: 0.2;\n}\n.ph-duotone.ph-rows-plus-bottom:after {\n content: '\\e59f';\n margin-left: -1em;\n}\n.ph-duotone.ph-rows-plus-top:before {\n content: '\\e5a0';\n opacity: 0.2;\n}\n.ph-duotone.ph-rows-plus-top:after {\n content: '\\e5a1';\n margin-left: -1em;\n}\n.ph-duotone.ph-rss:before {\n content: '\\e400';\n opacity: 0.2;\n}\n.ph-duotone.ph-rss:after {\n content: '\\e403';\n margin-left: -1em;\n}\n.ph-duotone.ph-rss-simple:before {\n content: '\\e402';\n opacity: 0.2;\n}\n.ph-duotone.ph-rss-simple:after {\n content: '\\e405';\n margin-left: -1em;\n}\n.ph-duotone.ph-rug:before {\n content: '\\ea1a';\n opacity: 0.2;\n}\n.ph-duotone.ph-rug:after {\n content: '\\ea1b';\n margin-left: -1em;\n}\n.ph-duotone.ph-ruler:before {\n content: '\\e6b8';\n opacity: 0.2;\n}\n.ph-duotone.ph-ruler:after {\n content: '\\e6b9';\n margin-left: -1em;\n}\n.ph-duotone.ph-sailboat:before {\n content: '\\e78a';\n opacity: 0.2;\n}\n.ph-duotone.ph-sailboat:after {\n content: '\\e78b';\n margin-left: -1em;\n}\n.ph-duotone.ph-scales:before {\n content: '\\e750';\n opacity: 0.2;\n}\n.ph-duotone.ph-scales:after {\n content: '\\e751';\n margin-left: -1em;\n}\n.ph-duotone.ph-scan:before {\n content: '\\ebb6';\n opacity: 0.2;\n}\n.ph-duotone.ph-scan:after {\n content: '\\ebb7';\n margin-left: -1em;\n}\n.ph-duotone.ph-scan-smiley:before {\n content: '\\ebb4';\n opacity: 0.2;\n}\n.ph-duotone.ph-scan-smiley:after {\n content: '\\ebb5';\n margin-left: -1em;\n}\n.ph-duotone.ph-scissors:before {\n content: '\\eae0';\n opacity: 0.2;\n}\n.ph-duotone.ph-scissors:after {\n content: '\\eae1';\n margin-left: -1em;\n}\n.ph-duotone.ph-scooter:before {\n content: '\\e820';\n opacity: 0.2;\n}\n.ph-duotone.ph-scooter:after {\n content: '\\e821';\n margin-left: -1em;\n}\n.ph-duotone.ph-screencast:before {\n content: '\\e404';\n opacity: 0.2;\n}\n.ph-duotone.ph-screencast:after {\n content: '\\e407';\n margin-left: -1em;\n}\n.ph-duotone.ph-screwdriver:before {\n content: '\\e86e';\n opacity: 0.2;\n}\n.ph-duotone.ph-screwdriver:after {\n content: '\\e86f';\n margin-left: -1em;\n}\n.ph-duotone.ph-scribble:before {\n content: '\\e806';\n opacity: 0.2;\n}\n.ph-duotone.ph-scribble:after {\n content: '\\e807';\n margin-left: -1em;\n}\n.ph-duotone.ph-scribble-loop:before {\n content: '\\e662';\n opacity: 0.2;\n}\n.ph-duotone.ph-scribble-loop:after {\n content: '\\e663';\n margin-left: -1em;\n}\n.ph-duotone.ph-scroll:before {\n content: '\\eb7a';\n opacity: 0.2;\n}\n.ph-duotone.ph-scroll:after {\n content: '\\eb7b';\n margin-left: -1em;\n}\n.ph-duotone.ph-seal:before {\n content: '\\e604';\n opacity: 0.2;\n}\n.ph-duotone.ph-seal:after {\n content: '\\e605';\n margin-left: -1em;\n}\n.ph-duotone.ph-seal-check:before {\n content: '\\e606';\n opacity: 0.2;\n}\n.ph-duotone.ph-seal-check:after {\n content: '\\e607';\n margin-left: -1em;\n}\n.ph-duotone.ph-seal-percent:before {\n content: '\\e60a';\n opacity: 0.2;\n}\n.ph-duotone.ph-seal-percent:after {\n content: '\\e60b';\n margin-left: -1em;\n}\n.ph-duotone.ph-seal-question:before {\n content: '\\e608';\n opacity: 0.2;\n}\n.ph-duotone.ph-seal-question:after {\n content: '\\e609';\n margin-left: -1em;\n}\n.ph-duotone.ph-seal-warning:before {\n content: '\\e60c';\n opacity: 0.2;\n}\n.ph-duotone.ph-seal-warning:after {\n content: '\\e60d';\n margin-left: -1em;\n}\n.ph-duotone.ph-seat:before {\n content: '\\eb8e';\n opacity: 0.2;\n}\n.ph-duotone.ph-seat:after {\n content: '\\eb8f';\n margin-left: -1em;\n}\n.ph-duotone.ph-seatbelt:before {\n content: '\\edfe';\n opacity: 0.2;\n}\n.ph-duotone.ph-seatbelt:after {\n content: '\\edff';\n margin-left: -1em;\n}\n.ph-duotone.ph-security-camera:before {\n content: '\\eca4';\n opacity: 0.2;\n}\n.ph-duotone.ph-security-camera:after {\n content: '\\eca5';\n margin-left: -1em;\n}\n.ph-duotone.ph-selection:before {\n content: '\\e69a';\n opacity: 0.2;\n}\n.ph-duotone.ph-selection:after {\n content: '\\e69b';\n margin-left: -1em;\n}\n.ph-duotone.ph-selection-all:before {\n content: '\\e746';\n opacity: 0.2;\n}\n.ph-duotone.ph-selection-all:after {\n content: '\\e747';\n margin-left: -1em;\n}\n.ph-duotone.ph-selection-background:before {\n content: '\\eaf8';\n opacity: 0.2;\n}\n.ph-duotone.ph-selection-background:after {\n content: '\\eaf9';\n margin-left: -1em;\n}\n.ph-duotone.ph-selection-foreground:before {\n content: '\\eaf6';\n opacity: 0.2;\n}\n.ph-duotone.ph-selection-foreground:after {\n content: '\\eaf7';\n margin-left: -1em;\n}\n.ph-duotone.ph-selection-inverse:before {\n content: '\\e744';\n opacity: 0.2;\n}\n.ph-duotone.ph-selection-inverse:after {\n content: '\\e745';\n margin-left: -1em;\n}\n.ph-duotone.ph-selection-plus:before {\n content: '\\e69c';\n opacity: 0.2;\n}\n.ph-duotone.ph-selection-plus:after {\n content: '\\e69d';\n margin-left: -1em;\n}\n.ph-duotone.ph-selection-slash:before {\n content: '\\e69e';\n opacity: 0.2;\n}\n.ph-duotone.ph-selection-slash:after {\n content: '\\e69f';\n margin-left: -1em;\n}\n.ph-duotone.ph-shapes:before {\n content: '\\ec5e';\n opacity: 0.2;\n}\n.ph-duotone.ph-shapes:after {\n content: '\\ec5f';\n margin-left: -1em;\n}\n.ph-duotone.ph-share:before {\n content: '\\e406';\n opacity: 0.2;\n}\n.ph-duotone.ph-share:after {\n content: '\\e409';\n margin-left: -1em;\n}\n.ph-duotone.ph-share-fat:before {\n content: '\\ed52';\n opacity: 0.2;\n}\n.ph-duotone.ph-share-fat:after {\n content: '\\ed57';\n margin-left: -1em;\n}\n.ph-duotone.ph-share-network:before {\n content: '\\e408';\n opacity: 0.2;\n}\n.ph-duotone.ph-share-network:after {\n content: '\\e40b';\n margin-left: -1em;\n}\n.ph-duotone.ph-shield:before {\n content: '\\e40a';\n opacity: 0.2;\n}\n.ph-duotone.ph-shield:after {\n content: '\\e40d';\n margin-left: -1em;\n}\n.ph-duotone.ph-shield-check:before {\n content: '\\e40c';\n opacity: 0.2;\n}\n.ph-duotone.ph-shield-check:after {\n content: '\\e40f';\n margin-left: -1em;\n}\n.ph-duotone.ph-shield-checkered:before {\n content: '\\e708';\n opacity: 0.2;\n}\n.ph-duotone.ph-shield-checkered:after {\n content: '\\e709';\n margin-left: -1em;\n}\n.ph-duotone.ph-shield-chevron:before {\n content: '\\e40e';\n opacity: 0.2;\n}\n.ph-duotone.ph-shield-chevron:after {\n content: '\\e411';\n margin-left: -1em;\n}\n.ph-duotone.ph-shield-plus:before {\n content: '\\e706';\n opacity: 0.2;\n}\n.ph-duotone.ph-shield-plus:after {\n content: '\\e707';\n margin-left: -1em;\n}\n.ph-duotone.ph-shield-slash:before {\n content: '\\e410';\n opacity: 0.2;\n}\n.ph-duotone.ph-shield-slash:after {\n content: '\\e413';\n margin-left: -1em;\n}\n.ph-duotone.ph-shield-star:before {\n content: '\\ec34';\n opacity: 0.2;\n}\n.ph-duotone.ph-shield-star:after {\n content: '\\ec35';\n margin-left: -1em;\n}\n.ph-duotone.ph-shield-warning:before {\n content: '\\e412';\n opacity: 0.2;\n}\n.ph-duotone.ph-shield-warning:after {\n content: '\\e414';\n margin-left: -1em;\n}\n.ph-duotone.ph-shipping-container:before {\n content: '\\e78c';\n opacity: 0.2;\n}\n.ph-duotone.ph-shipping-container:after {\n content: '\\e78d';\n margin-left: -1em;\n}\n.ph-duotone.ph-shirt-folded:before {\n content: '\\ea92';\n opacity: 0.2;\n}\n.ph-duotone.ph-shirt-folded:after {\n content: '\\ea93';\n margin-left: -1em;\n}\n.ph-duotone.ph-shooting-star:before {\n content: '\\ecfa';\n opacity: 0.2;\n}\n.ph-duotone.ph-shooting-star:after {\n content: '\\ecfb';\n margin-left: -1em;\n}\n.ph-duotone.ph-shopping-bag:before {\n content: '\\e416';\n opacity: 0.2;\n}\n.ph-duotone.ph-shopping-bag:after {\n content: '\\e417';\n margin-left: -1em;\n}\n.ph-duotone.ph-shopping-bag-open:before {\n content: '\\e418';\n opacity: 0.2;\n}\n.ph-duotone.ph-shopping-bag-open:after {\n content: '\\e419';\n margin-left: -1em;\n}\n.ph-duotone.ph-shopping-cart:before {\n content: '\\e41e';\n opacity: 0.2;\n}\n.ph-duotone.ph-shopping-cart:after {\n content: '\\e41f';\n margin-left: -1em;\n}\n.ph-duotone.ph-shopping-cart-simple:before {\n content: '\\e420';\n opacity: 0.2;\n}\n.ph-duotone.ph-shopping-cart-simple:after {\n content: '\\e421';\n margin-left: -1em;\n}\n.ph-duotone.ph-shovel:before {\n content: '\\e9e6';\n opacity: 0.2;\n}\n.ph-duotone.ph-shovel:after {\n content: '\\e9e7';\n margin-left: -1em;\n}\n.ph-duotone.ph-shower:before {\n content: '\\e776';\n opacity: 0.2;\n}\n.ph-duotone.ph-shower:after {\n content: '\\e777';\n margin-left: -1em;\n}\n.ph-duotone.ph-shrimp:before {\n content: '\\eab4';\n opacity: 0.2;\n}\n.ph-duotone.ph-shrimp:after {\n content: '\\eab5';\n margin-left: -1em;\n}\n.ph-duotone.ph-shuffle:before {\n content: '\\e422';\n opacity: 0.2;\n}\n.ph-duotone.ph-shuffle:after {\n content: '\\e423';\n margin-left: -1em;\n}\n.ph-duotone.ph-shuffle-angular:before {\n content: '\\e424';\n opacity: 0.2;\n}\n.ph-duotone.ph-shuffle-angular:after {\n content: '\\e425';\n margin-left: -1em;\n}\n.ph-duotone.ph-shuffle-simple:before {\n content: '\\e426';\n opacity: 0.2;\n}\n.ph-duotone.ph-shuffle-simple:after {\n content: '\\e427';\n margin-left: -1em;\n}\n.ph-duotone.ph-sidebar:before {\n content: '\\eab6';\n opacity: 0.2;\n}\n.ph-duotone.ph-sidebar:after {\n content: '\\eab7';\n margin-left: -1em;\n}\n.ph-duotone.ph-sidebar-simple:before {\n content: '\\ec24';\n opacity: 0.2;\n}\n.ph-duotone.ph-sidebar-simple:after {\n content: '\\ec25';\n margin-left: -1em;\n}\n.ph-duotone.ph-sigma:before {\n content: '\\eab8';\n opacity: 0.2;\n}\n.ph-duotone.ph-sigma:after {\n content: '\\eab9';\n margin-left: -1em;\n}\n.ph-duotone.ph-sign-in:before {\n content: '\\e428';\n opacity: 0.2;\n}\n.ph-duotone.ph-sign-in:after {\n content: '\\e429';\n margin-left: -1em;\n}\n.ph-duotone.ph-sign-out:before {\n content: '\\e42a';\n opacity: 0.2;\n}\n.ph-duotone.ph-sign-out:after {\n content: '\\e42b';\n margin-left: -1em;\n}\n.ph-duotone.ph-signature:before {\n content: '\\ebac';\n opacity: 0.2;\n}\n.ph-duotone.ph-signature:after {\n content: '\\ebad';\n margin-left: -1em;\n}\n.ph-duotone.ph-signpost:before {\n content: '\\e89c';\n opacity: 0.2;\n}\n.ph-duotone.ph-signpost:after {\n content: '\\e89d';\n margin-left: -1em;\n}\n.ph-duotone.ph-sim-card:before {\n content: '\\e664';\n opacity: 0.2;\n}\n.ph-duotone.ph-sim-card:after {\n content: '\\e665';\n margin-left: -1em;\n}\n.ph-duotone.ph-siren:before {\n content: '\\e9b8';\n opacity: 0.2;\n}\n.ph-duotone.ph-siren:after {\n content: '\\e9b9';\n margin-left: -1em;\n}\n.ph-duotone.ph-sketch-logo:before {\n content: '\\e42c';\n opacity: 0.2;\n}\n.ph-duotone.ph-sketch-logo:after {\n content: '\\e42d';\n margin-left: -1em;\n}\n.ph-duotone.ph-skip-back:before {\n content: '\\e5a4';\n opacity: 0.2;\n}\n.ph-duotone.ph-skip-back:after {\n content: '\\e5a5';\n margin-left: -1em;\n}\n.ph-duotone.ph-skip-back-circle:before {\n content: '\\e42e';\n opacity: 0.2;\n}\n.ph-duotone.ph-skip-back-circle:after {\n content: '\\e42f';\n margin-left: -1em;\n}\n.ph-duotone.ph-skip-forward:before {\n content: '\\e5a6';\n opacity: 0.2;\n}\n.ph-duotone.ph-skip-forward:after {\n content: '\\e5a7';\n margin-left: -1em;\n}\n.ph-duotone.ph-skip-forward-circle:before {\n content: '\\e430';\n opacity: 0.2;\n}\n.ph-duotone.ph-skip-forward-circle:after {\n content: '\\e431';\n margin-left: -1em;\n}\n.ph-duotone.ph-skull:before {\n content: '\\e916';\n opacity: 0.2;\n}\n.ph-duotone.ph-skull:after {\n content: '\\e917';\n margin-left: -1em;\n}\n.ph-duotone.ph-skype-logo:before {\n content: '\\e8dc';\n opacity: 0.2;\n}\n.ph-duotone.ph-skype-logo:after {\n content: '\\e8dd';\n margin-left: -1em;\n}\n.ph-duotone.ph-slack-logo:before {\n content: '\\e5a8';\n opacity: 0.2;\n}\n.ph-duotone.ph-slack-logo:after {\n content: '\\e5a9';\n margin-left: -1em;\n}\n.ph-duotone.ph-sliders:before {\n content: '\\e432';\n opacity: 0.2;\n}\n.ph-duotone.ph-sliders:after {\n content: '\\e433';\n margin-left: -1em;\n}\n.ph-duotone.ph-sliders-horizontal:before {\n content: '\\e434';\n opacity: 0.2;\n}\n.ph-duotone.ph-sliders-horizontal:after {\n content: '\\e435';\n margin-left: -1em;\n}\n.ph-duotone.ph-slideshow:before {\n content: '\\ed32';\n opacity: 0.2;\n}\n.ph-duotone.ph-slideshow:after {\n content: '\\ed33';\n margin-left: -1em;\n}\n.ph-duotone.ph-smiley:before {\n content: '\\e436';\n opacity: 0.2;\n}\n.ph-duotone.ph-smiley:after {\n content: '\\e437';\n margin-left: -1em;\n}\n.ph-duotone.ph-smiley-angry:before {\n content: '\\ec62';\n opacity: 0.2;\n}\n.ph-duotone.ph-smiley-angry:after {\n content: '\\ec63';\n margin-left: -1em;\n}\n.ph-duotone.ph-smiley-blank:before {\n content: '\\e438';\n opacity: 0.2;\n}\n.ph-duotone.ph-smiley-blank:after {\n content: '\\e439';\n margin-left: -1em;\n}\n.ph-duotone.ph-smiley-meh:before {\n content: '\\e43a';\n opacity: 0.2;\n}\n.ph-duotone.ph-smiley-meh:after {\n content: '\\e43b';\n margin-left: -1em;\n}\n.ph-duotone.ph-smiley-melting:before {\n content: '\\ee56';\n opacity: 0.2;\n}\n.ph-duotone.ph-smiley-melting:after {\n content: '\\ee57';\n margin-left: -1em;\n}\n.ph-duotone.ph-smiley-nervous:before {\n content: '\\e43c';\n opacity: 0.2;\n}\n.ph-duotone.ph-smiley-nervous:after {\n content: '\\e43d';\n margin-left: -1em;\n}\n.ph-duotone.ph-smiley-sad:before {\n content: '\\e43e';\n opacity: 0.2;\n}\n.ph-duotone.ph-smiley-sad:after {\n content: '\\e43f';\n margin-left: -1em;\n}\n.ph-duotone.ph-smiley-sticker:before {\n content: '\\e440';\n opacity: 0.2;\n}\n.ph-duotone.ph-smiley-sticker:after {\n content: '\\e441';\n margin-left: -1em;\n}\n.ph-duotone.ph-smiley-wink:before {\n content: '\\e666';\n opacity: 0.2;\n}\n.ph-duotone.ph-smiley-wink:after {\n content: '\\e667';\n margin-left: -1em;\n}\n.ph-duotone.ph-smiley-x-eyes:before {\n content: '\\e442';\n opacity: 0.2;\n}\n.ph-duotone.ph-smiley-x-eyes:after {\n content: '\\e443';\n margin-left: -1em;\n}\n.ph-duotone.ph-snapchat-logo:before {\n content: '\\e668';\n opacity: 0.2;\n}\n.ph-duotone.ph-snapchat-logo:after {\n content: '\\e669';\n margin-left: -1em;\n}\n.ph-duotone.ph-sneaker:before {\n content: '\\e80c';\n opacity: 0.2;\n}\n.ph-duotone.ph-sneaker:after {\n content: '\\e80d';\n margin-left: -1em;\n}\n.ph-duotone.ph-sneaker-move:before {\n content: '\\ed60';\n opacity: 0.2;\n}\n.ph-duotone.ph-sneaker-move:after {\n content: '\\ed61';\n margin-left: -1em;\n}\n.ph-duotone.ph-snowflake:before {\n content: '\\e5aa';\n opacity: 0.2;\n}\n.ph-duotone.ph-snowflake:after {\n content: '\\e5ab';\n margin-left: -1em;\n}\n.ph-duotone.ph-soccer-ball:before {\n content: '\\e716';\n opacity: 0.2;\n}\n.ph-duotone.ph-soccer-ball:after {\n content: '\\e717';\n margin-left: -1em;\n}\n.ph-duotone.ph-sock:before {\n content: '\\ecce';\n opacity: 0.2;\n}\n.ph-duotone.ph-sock:after {\n content: '\\eccf';\n margin-left: -1em;\n}\n.ph-duotone.ph-solar-panel:before {\n content: '\\ed7a';\n opacity: 0.2;\n}\n.ph-duotone.ph-solar-panel:after {\n content: '\\ed7e';\n margin-left: -1em;\n}\n.ph-duotone.ph-solar-roof:before {\n content: '\\ed7b';\n opacity: 0.2;\n}\n.ph-duotone.ph-solar-roof:after {\n content: '\\ed7f';\n margin-left: -1em;\n}\n.ph-duotone.ph-sort-ascending:before {\n content: '\\e444';\n opacity: 0.2;\n}\n.ph-duotone.ph-sort-ascending:after {\n content: '\\e445';\n margin-left: -1em;\n}\n.ph-duotone.ph-sort-descending:before {\n content: '\\e446';\n opacity: 0.2;\n}\n.ph-duotone.ph-sort-descending:after {\n content: '\\e447';\n margin-left: -1em;\n}\n.ph-duotone.ph-soundcloud-logo:before {\n content: '\\e8de';\n opacity: 0.2;\n}\n.ph-duotone.ph-soundcloud-logo:after {\n content: '\\e8df';\n margin-left: -1em;\n}\n.ph-duotone.ph-spade:before {\n content: '\\e448';\n opacity: 0.2;\n}\n.ph-duotone.ph-spade:after {\n content: '\\e449';\n margin-left: -1em;\n}\n.ph-duotone.ph-sparkle:before {\n content: '\\e6a2';\n opacity: 0.2;\n}\n.ph-duotone.ph-sparkle:after {\n content: '\\e6a3';\n margin-left: -1em;\n}\n.ph-duotone.ph-speaker-hifi:before {\n content: '\\ea08';\n opacity: 0.2;\n}\n.ph-duotone.ph-speaker-hifi:after {\n content: '\\ea09';\n margin-left: -1em;\n}\n.ph-duotone.ph-speaker-high:before {\n content: '\\e44a';\n opacity: 0.2;\n}\n.ph-duotone.ph-speaker-high:after {\n content: '\\e44b';\n margin-left: -1em;\n}\n.ph-duotone.ph-speaker-low:before {\n content: '\\e44c';\n opacity: 0.2;\n}\n.ph-duotone.ph-speaker-low:after {\n content: '\\e44d';\n margin-left: -1em;\n}\n.ph-duotone.ph-speaker-none:before {\n content: '\\e44e';\n opacity: 0.2;\n}\n.ph-duotone.ph-speaker-none:after {\n content: '\\e44f';\n margin-left: -1em;\n}\n.ph-duotone.ph-speaker-simple-high:before {\n content: '\\e450';\n opacity: 0.2;\n}\n.ph-duotone.ph-speaker-simple-high:after {\n content: '\\e451';\n margin-left: -1em;\n}\n.ph-duotone.ph-speaker-simple-low:before {\n content: '\\e452';\n opacity: 0.2;\n}\n.ph-duotone.ph-speaker-simple-low:after {\n content: '\\e453';\n margin-left: -1em;\n}\n.ph-duotone.ph-speaker-simple-none:before {\n content: '\\e454';\n opacity: 0.2;\n}\n.ph-duotone.ph-speaker-simple-none:after {\n content: '\\e455';\n margin-left: -1em;\n}\n.ph-duotone.ph-speaker-simple-slash:before {\n content: '\\e456';\n opacity: 0.2;\n}\n.ph-duotone.ph-speaker-simple-slash:after {\n content: '\\e457';\n margin-left: -1em;\n}\n.ph-duotone.ph-speaker-simple-x:before {\n content: '\\e458';\n opacity: 0.2;\n}\n.ph-duotone.ph-speaker-simple-x:after {\n content: '\\e459';\n margin-left: -1em;\n}\n.ph-duotone.ph-speaker-slash:before {\n content: '\\e45a';\n opacity: 0.2;\n}\n.ph-duotone.ph-speaker-slash:after {\n content: '\\e45b';\n margin-left: -1em;\n}\n.ph-duotone.ph-speaker-x:before {\n content: '\\e45c';\n opacity: 0.2;\n}\n.ph-duotone.ph-speaker-x:after {\n content: '\\e45d';\n margin-left: -1em;\n}\n.ph-duotone.ph-speedometer:before {\n content: '\\ee74';\n opacity: 0.2;\n}\n.ph-duotone.ph-speedometer:after {\n content: '\\ee75';\n margin-left: -1em;\n}\n.ph-duotone.ph-sphere:before {\n content: '\\ee66';\n opacity: 0.2;\n}\n.ph-duotone.ph-sphere:after {\n content: '\\ee67';\n margin-left: -1em;\n}\n.ph-duotone.ph-spinner:before {\n content: '\\e66a';\n opacity: 0.2;\n}\n.ph-duotone.ph-spinner:after {\n content: '\\e66b';\n margin-left: -1em;\n}\n.ph-duotone.ph-spinner-ball:before {\n content: '\\ee28';\n opacity: 0.2;\n}\n.ph-duotone.ph-spinner-ball:after {\n content: '\\ee29';\n margin-left: -1em;\n}\n.ph-duotone.ph-spinner-gap:before {\n content: '\\e66c';\n opacity: 0.2;\n}\n.ph-duotone.ph-spinner-gap:after {\n content: '\\e66d';\n margin-left: -1em;\n}\n.ph-duotone.ph-spiral:before {\n content: '\\e9fa';\n opacity: 0.2;\n}\n.ph-duotone.ph-spiral:after {\n content: '\\e9fb';\n margin-left: -1em;\n}\n.ph-duotone.ph-split-horizontal:before {\n content: '\\e872';\n opacity: 0.2;\n}\n.ph-duotone.ph-split-horizontal:after {\n content: '\\e873';\n margin-left: -1em;\n}\n.ph-duotone.ph-split-vertical:before {\n content: '\\e876';\n opacity: 0.2;\n}\n.ph-duotone.ph-split-vertical:after {\n content: '\\e877';\n margin-left: -1em;\n}\n.ph-duotone.ph-spotify-logo:before {\n content: '\\e66e';\n opacity: 0.2;\n}\n.ph-duotone.ph-spotify-logo:after {\n content: '\\e66f';\n margin-left: -1em;\n}\n.ph-duotone.ph-spray-bottle:before {\n content: '\\e7e4';\n opacity: 0.2;\n}\n.ph-duotone.ph-spray-bottle:after {\n content: '\\e7e8';\n margin-left: -1em;\n}\n.ph-duotone.ph-square:before {\n content: '\\e45e';\n opacity: 0.2;\n}\n.ph-duotone.ph-square:after {\n content: '\\e45f';\n margin-left: -1em;\n}\n.ph-duotone.ph-square-half:before {\n content: '\\e462';\n opacity: 0.2;\n}\n.ph-duotone.ph-square-half:after {\n content: '\\e463';\n margin-left: -1em;\n}\n.ph-duotone.ph-square-half-bottom:before {\n content: '\\eb16';\n opacity: 0.2;\n}\n.ph-duotone.ph-square-half-bottom:after {\n content: '\\eb17';\n margin-left: -1em;\n}\n.ph-duotone.ph-square-logo:before {\n content: '\\e690';\n opacity: 0.2;\n}\n.ph-duotone.ph-square-logo:after {\n content: '\\e691';\n margin-left: -1em;\n}\n.ph-duotone.ph-square-split-horizontal:before {\n content: '\\e870';\n opacity: 0.2;\n}\n.ph-duotone.ph-square-split-horizontal:after {\n content: '\\e871';\n margin-left: -1em;\n}\n.ph-duotone.ph-square-split-vertical:before {\n content: '\\e874';\n opacity: 0.2;\n}\n.ph-duotone.ph-square-split-vertical:after {\n content: '\\e875';\n margin-left: -1em;\n}\n.ph-duotone.ph-squares-four:before {\n content: '\\e464';\n opacity: 0.2;\n}\n.ph-duotone.ph-squares-four:after {\n content: '\\e465';\n margin-left: -1em;\n}\n.ph-duotone.ph-stack:before {\n content: '\\e466';\n opacity: 0.2;\n}\n.ph-duotone.ph-stack:after {\n content: '\\e467';\n margin-left: -1em;\n}\n.ph-duotone.ph-stack-minus:before {\n content: '\\edf4';\n opacity: 0.2;\n}\n.ph-duotone.ph-stack-minus:after {\n content: '\\edf5';\n margin-left: -1em;\n}\n.ph-duotone.ph-stack-overflow-logo:before {\n content: '\\eb78';\n opacity: 0.2;\n}\n.ph-duotone.ph-stack-overflow-logo:after {\n content: '\\eb79';\n margin-left: -1em;\n}\n.ph-duotone.ph-stack-plus:before {\n content: '\\edf6';\n opacity: 0.2;\n}\n.ph-duotone.ph-stack-plus:after {\n content: '\\edf7';\n margin-left: -1em;\n}\n.ph-duotone.ph-stack-simple:before {\n content: '\\e468';\n opacity: 0.2;\n}\n.ph-duotone.ph-stack-simple:after {\n content: '\\e469';\n margin-left: -1em;\n}\n.ph-duotone.ph-stairs:before {\n content: '\\e8ec';\n opacity: 0.2;\n}\n.ph-duotone.ph-stairs:after {\n content: '\\e8ed';\n margin-left: -1em;\n}\n.ph-duotone.ph-stamp:before {\n content: '\\ea48';\n opacity: 0.2;\n}\n.ph-duotone.ph-stamp:after {\n content: '\\ea49';\n margin-left: -1em;\n}\n.ph-duotone.ph-standard-definition:before {\n content: '\\ea90';\n opacity: 0.2;\n}\n.ph-duotone.ph-standard-definition:after {\n content: '\\ea91';\n margin-left: -1em;\n}\n.ph-duotone.ph-star:before {\n content: '\\e46a';\n opacity: 0.2;\n}\n.ph-duotone.ph-star:after {\n content: '\\e46b';\n margin-left: -1em;\n}\n.ph-duotone.ph-star-and-crescent:before {\n content: '\\ecf4';\n opacity: 0.2;\n}\n.ph-duotone.ph-star-and-crescent:after {\n content: '\\ecf5';\n margin-left: -1em;\n}\n.ph-duotone.ph-star-four:before {\n content: '\\e6a4';\n opacity: 0.2;\n}\n.ph-duotone.ph-star-four:after {\n content: '\\e6a5';\n margin-left: -1em;\n}\n.ph-duotone.ph-star-half:before {\n content: '\\e70a';\n opacity: 0.2;\n}\n.ph-duotone.ph-star-half:after {\n content: '\\e70b';\n margin-left: -1em;\n}\n.ph-duotone.ph-star-of-david:before {\n content: '\\e89e';\n opacity: 0.2;\n}\n.ph-duotone.ph-star-of-david:after {\n content: '\\e89f';\n margin-left: -1em;\n}\n.ph-duotone.ph-steam-logo:before {\n content: '\\ead4';\n opacity: 0.2;\n}\n.ph-duotone.ph-steam-logo:after {\n content: '\\ead5';\n margin-left: -1em;\n}\n.ph-duotone.ph-steering-wheel:before {\n content: '\\e9ac';\n opacity: 0.2;\n}\n.ph-duotone.ph-steering-wheel:after {\n content: '\\e9ad';\n margin-left: -1em;\n}\n.ph-duotone.ph-steps:before {\n content: '\\ecbe';\n opacity: 0.2;\n}\n.ph-duotone.ph-steps:after {\n content: '\\ecbf';\n margin-left: -1em;\n}\n.ph-duotone.ph-stethoscope:before {\n content: '\\e7ea';\n opacity: 0.2;\n}\n.ph-duotone.ph-stethoscope:after {\n content: '\\e7eb';\n margin-left: -1em;\n}\n.ph-duotone.ph-sticker:before {\n content: '\\e5ac';\n opacity: 0.2;\n}\n.ph-duotone.ph-sticker:after {\n content: '\\e5ad';\n margin-left: -1em;\n}\n.ph-duotone.ph-stool:before {\n content: '\\ea44';\n opacity: 0.2;\n}\n.ph-duotone.ph-stool:after {\n content: '\\ea45';\n margin-left: -1em;\n}\n.ph-duotone.ph-stop:before {\n content: '\\e46c';\n opacity: 0.2;\n}\n.ph-duotone.ph-stop:after {\n content: '\\e46d';\n margin-left: -1em;\n}\n.ph-duotone.ph-stop-circle:before {\n content: '\\e46e';\n opacity: 0.2;\n}\n.ph-duotone.ph-stop-circle:after {\n content: '\\e46f';\n margin-left: -1em;\n}\n.ph-duotone.ph-storefront:before {\n content: '\\e470';\n opacity: 0.2;\n}\n.ph-duotone.ph-storefront:after {\n content: '\\e471';\n margin-left: -1em;\n}\n.ph-duotone.ph-strategy:before {\n content: '\\ea3a';\n opacity: 0.2;\n}\n.ph-duotone.ph-strategy:after {\n content: '\\ea3b';\n margin-left: -1em;\n}\n.ph-duotone.ph-stripe-logo:before {\n content: '\\e698';\n opacity: 0.2;\n}\n.ph-duotone.ph-stripe-logo:after {\n content: '\\e699';\n margin-left: -1em;\n}\n.ph-duotone.ph-student:before {\n content: '\\e73e';\n opacity: 0.2;\n}\n.ph-duotone.ph-student:after {\n content: '\\e73f';\n margin-left: -1em;\n}\n.ph-duotone.ph-subset-of:before {\n content: '\\edc0';\n opacity: 0.2;\n}\n.ph-duotone.ph-subset-of:after {\n content: '\\edc1';\n margin-left: -1em;\n}\n.ph-duotone.ph-subset-proper-of:before {\n content: '\\edb6';\n opacity: 0.2;\n}\n.ph-duotone.ph-subset-proper-of:after {\n content: '\\edb7';\n margin-left: -1em;\n}\n.ph-duotone.ph-subtitles:before {\n content: '\\e1a8';\n opacity: 0.2;\n}\n.ph-duotone.ph-subtitles:after {\n content: '\\e1a9';\n margin-left: -1em;\n}\n.ph-duotone.ph-subtitles-slash:before {\n content: '\\e1a6';\n opacity: 0.2;\n}\n.ph-duotone.ph-subtitles-slash:after {\n content: '\\e1a7';\n margin-left: -1em;\n}\n.ph-duotone.ph-subtract:before {\n content: '\\ebd6';\n opacity: 0.2;\n}\n.ph-duotone.ph-subtract:after {\n content: '\\ebd7';\n margin-left: -1em;\n}\n.ph-duotone.ph-subtract-square:before {\n content: '\\ebd4';\n opacity: 0.2;\n}\n.ph-duotone.ph-subtract-square:after {\n content: '\\ebd5';\n margin-left: -1em;\n}\n.ph-duotone.ph-subway:before {\n content: '\\e498';\n opacity: 0.2;\n}\n.ph-duotone.ph-subway:after {\n content: '\\e499';\n margin-left: -1em;\n}\n.ph-duotone.ph-suitcase:before {\n content: '\\e5ae';\n opacity: 0.2;\n}\n.ph-duotone.ph-suitcase:after {\n content: '\\e5af';\n margin-left: -1em;\n}\n.ph-duotone.ph-suitcase-rolling:before {\n content: '\\e9b0';\n opacity: 0.2;\n}\n.ph-duotone.ph-suitcase-rolling:after {\n content: '\\e9b1';\n margin-left: -1em;\n}\n.ph-duotone.ph-suitcase-simple:before {\n content: '\\e5b0';\n opacity: 0.2;\n}\n.ph-duotone.ph-suitcase-simple:after {\n content: '\\e5b1';\n margin-left: -1em;\n}\n.ph-duotone.ph-sun:before {\n content: '\\e472';\n opacity: 0.2;\n}\n.ph-duotone.ph-sun:after {\n content: '\\e473';\n margin-left: -1em;\n}\n.ph-duotone.ph-sun-dim:before {\n content: '\\e474';\n opacity: 0.2;\n}\n.ph-duotone.ph-sun-dim:after {\n content: '\\e475';\n margin-left: -1em;\n}\n.ph-duotone.ph-sun-horizon:before {\n content: '\\e5b6';\n opacity: 0.2;\n}\n.ph-duotone.ph-sun-horizon:after {\n content: '\\e5b7';\n margin-left: -1em;\n}\n.ph-duotone.ph-sunglasses:before {\n content: '\\e816';\n opacity: 0.2;\n}\n.ph-duotone.ph-sunglasses:after {\n content: '\\e817';\n margin-left: -1em;\n}\n.ph-duotone.ph-superset-of:before {\n content: '\\edb8';\n opacity: 0.2;\n}\n.ph-duotone.ph-superset-of:after {\n content: '\\edb9';\n margin-left: -1em;\n}\n.ph-duotone.ph-superset-proper-of:before {\n content: '\\edb4';\n opacity: 0.2;\n}\n.ph-duotone.ph-superset-proper-of:after {\n content: '\\edb5';\n margin-left: -1em;\n}\n.ph-duotone.ph-swap:before {\n content: '\\e83c';\n opacity: 0.2;\n}\n.ph-duotone.ph-swap:after {\n content: '\\e83d';\n margin-left: -1em;\n}\n.ph-duotone.ph-swatches:before {\n content: '\\e5b8';\n opacity: 0.2;\n}\n.ph-duotone.ph-swatches:after {\n content: '\\e5b9';\n margin-left: -1em;\n}\n.ph-duotone.ph-swimming-pool:before {\n content: '\\ecb6';\n opacity: 0.2;\n}\n.ph-duotone.ph-swimming-pool:after {\n content: '\\ecb7';\n margin-left: -1em;\n}\n.ph-duotone.ph-sword:before {\n content: '\\e5ba';\n opacity: 0.2;\n}\n.ph-duotone.ph-sword:after {\n content: '\\e5bb';\n margin-left: -1em;\n}\n.ph-duotone.ph-synagogue:before {\n content: '\\ecec';\n opacity: 0.2;\n}\n.ph-duotone.ph-synagogue:after {\n content: '\\eced';\n margin-left: -1em;\n}\n.ph-duotone.ph-syringe:before {\n content: '\\e968';\n opacity: 0.2;\n}\n.ph-duotone.ph-syringe:after {\n content: '\\e969';\n margin-left: -1em;\n}\n.ph-duotone.ph-t-shirt:before {\n content: '\\e670';\n opacity: 0.2;\n}\n.ph-duotone.ph-t-shirt:after {\n content: '\\e671';\n margin-left: -1em;\n}\n.ph-duotone.ph-table:before {\n content: '\\e476';\n opacity: 0.2;\n}\n.ph-duotone.ph-table:after {\n content: '\\e477';\n margin-left: -1em;\n}\n.ph-duotone.ph-tabs:before {\n content: '\\e778';\n opacity: 0.2;\n}\n.ph-duotone.ph-tabs:after {\n content: '\\e779';\n margin-left: -1em;\n}\n.ph-duotone.ph-tag:before {\n content: '\\e478';\n opacity: 0.2;\n}\n.ph-duotone.ph-tag:after {\n content: '\\e479';\n margin-left: -1em;\n}\n.ph-duotone.ph-tag-chevron:before {\n content: '\\e672';\n opacity: 0.2;\n}\n.ph-duotone.ph-tag-chevron:after {\n content: '\\e673';\n margin-left: -1em;\n}\n.ph-duotone.ph-tag-simple:before {\n content: '\\e47a';\n opacity: 0.2;\n}\n.ph-duotone.ph-tag-simple:after {\n content: '\\e47b';\n margin-left: -1em;\n}\n.ph-duotone.ph-target:before {\n content: '\\e47c';\n opacity: 0.2;\n}\n.ph-duotone.ph-target:after {\n content: '\\e47d';\n margin-left: -1em;\n}\n.ph-duotone.ph-taxi:before {\n content: '\\e902';\n opacity: 0.2;\n}\n.ph-duotone.ph-taxi:after {\n content: '\\e903';\n margin-left: -1em;\n}\n.ph-duotone.ph-tea-bag:before {\n content: '\\e8e6';\n opacity: 0.2;\n}\n.ph-duotone.ph-tea-bag:after {\n content: '\\e8e7';\n margin-left: -1em;\n}\n.ph-duotone.ph-telegram-logo:before {\n content: '\\e5bc';\n opacity: 0.2;\n}\n.ph-duotone.ph-telegram-logo:after {\n content: '\\e5bd';\n margin-left: -1em;\n}\n.ph-duotone.ph-television:before {\n content: '\\e754';\n opacity: 0.2;\n}\n.ph-duotone.ph-television:after {\n content: '\\e755';\n margin-left: -1em;\n}\n.ph-duotone.ph-television-simple:before {\n content: '\\eae6';\n opacity: 0.2;\n}\n.ph-duotone.ph-television-simple:after {\n content: '\\eae7';\n margin-left: -1em;\n}\n.ph-duotone.ph-tennis-ball:before {\n content: '\\e720';\n opacity: 0.2;\n}\n.ph-duotone.ph-tennis-ball:after {\n content: '\\e721';\n margin-left: -1em;\n}\n.ph-duotone.ph-tent:before {\n content: '\\e8ba';\n opacity: 0.2;\n}\n.ph-duotone.ph-tent:after {\n content: '\\e8bb';\n margin-left: -1em;\n}\n.ph-duotone.ph-terminal:before {\n content: '\\e47e';\n opacity: 0.2;\n}\n.ph-duotone.ph-terminal:after {\n content: '\\e47f';\n margin-left: -1em;\n}\n.ph-duotone.ph-terminal-window:before {\n content: '\\eae8';\n opacity: 0.2;\n}\n.ph-duotone.ph-terminal-window:after {\n content: '\\eae9';\n margin-left: -1em;\n}\n.ph-duotone.ph-test-tube:before {\n content: '\\e7a0';\n opacity: 0.2;\n}\n.ph-duotone.ph-test-tube:after {\n content: '\\e7a1';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-a-underline:before {\n content: '\\ed34';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-a-underline:after {\n content: '\\ed35';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-aa:before {\n content: '\\e6ee';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-aa:after {\n content: '\\e6ef';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-align-center:before {\n content: '\\e480';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-align-center:after {\n content: '\\e481';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-align-justify:before {\n content: '\\e482';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-align-justify:after {\n content: '\\e483';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-align-left:before {\n content: '\\e484';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-align-left:after {\n content: '\\e485';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-align-right:before {\n content: '\\e486';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-align-right:after {\n content: '\\e487';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-b:before {\n content: '\\e5be';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-b:after {\n content: '\\e5bf';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-columns:before {\n content: '\\ec96';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-columns:after {\n content: '\\ec97';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-h:before {\n content: '\\e6ba';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-h:after {\n content: '\\e6bb';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-h-five:before {\n content: '\\e6c4';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-h-five:after {\n content: '\\e6c5';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-h-four:before {\n content: '\\e6c2';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-h-four:after {\n content: '\\e6c3';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-h-one:before {\n content: '\\e6bc';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-h-one:after {\n content: '\\e6bd';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-h-six:before {\n content: '\\e6c6';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-h-six:after {\n content: '\\e6c7';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-h-three:before {\n content: '\\e6c0';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-h-three:after {\n content: '\\e6c1';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-h-two:before {\n content: '\\e6be';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-h-two:after {\n content: '\\e6bf';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-indent:before {\n content: '\\ea1e';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-indent:after {\n content: '\\ea1f';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-italic:before {\n content: '\\e5c0';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-italic:after {\n content: '\\e5c1';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-outdent:before {\n content: '\\ea1c';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-outdent:after {\n content: '\\ea1d';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-strikethrough:before {\n content: '\\e5c2';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-strikethrough:after {\n content: '\\e5c3';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-subscript:before {\n content: '\\ec98';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-subscript:after {\n content: '\\ec99';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-superscript:before {\n content: '\\ec9a';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-superscript:after {\n content: '\\ec9b';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-t:before {\n content: '\\e48a';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-t:after {\n content: '\\e48b';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-t-slash:before {\n content: '\\e488';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-t-slash:after {\n content: '\\e489';\n margin-left: -1em;\n}\n.ph-duotone.ph-text-underline:before {\n content: '\\e5c4';\n opacity: 0.2;\n}\n.ph-duotone.ph-text-underline:after {\n content: '\\e5c5';\n margin-left: -1em;\n}\n.ph-duotone.ph-textbox:before {\n content: '\\eb0a';\n opacity: 0.2;\n}\n.ph-duotone.ph-textbox:after {\n content: '\\eb0b';\n margin-left: -1em;\n}\n.ph-duotone.ph-thermometer:before {\n content: '\\e5c6';\n opacity: 0.2;\n}\n.ph-duotone.ph-thermometer:after {\n content: '\\e5c7';\n margin-left: -1em;\n}\n.ph-duotone.ph-thermometer-cold:before {\n content: '\\e5c8';\n opacity: 0.2;\n}\n.ph-duotone.ph-thermometer-cold:after {\n content: '\\e5c9';\n margin-left: -1em;\n}\n.ph-duotone.ph-thermometer-hot:before {\n content: '\\e5ca';\n opacity: 0.2;\n}\n.ph-duotone.ph-thermometer-hot:after {\n content: '\\e5cb';\n margin-left: -1em;\n}\n.ph-duotone.ph-thermometer-simple:before {\n content: '\\e5cc';\n opacity: 0.2;\n}\n.ph-duotone.ph-thermometer-simple:after {\n content: '\\e5cd';\n margin-left: -1em;\n}\n.ph-duotone.ph-threads-logo:before {\n content: '\\ed9e';\n opacity: 0.2;\n}\n.ph-duotone.ph-threads-logo:after {\n content: '\\ed9f';\n margin-left: -1em;\n}\n.ph-duotone.ph-three-d:before {\n content: '\\ea5a';\n opacity: 0.2;\n}\n.ph-duotone.ph-three-d:after {\n content: '\\ea5b';\n margin-left: -1em;\n}\n.ph-duotone.ph-thumbs-down:before {\n content: '\\e48c';\n opacity: 0.2;\n}\n.ph-duotone.ph-thumbs-down:after {\n content: '\\e48d';\n margin-left: -1em;\n}\n.ph-duotone.ph-thumbs-up:before {\n content: '\\e48e';\n opacity: 0.2;\n}\n.ph-duotone.ph-thumbs-up:after {\n content: '\\e48f';\n margin-left: -1em;\n}\n.ph-duotone.ph-ticket:before {\n content: '\\e490';\n opacity: 0.2;\n}\n.ph-duotone.ph-ticket:after {\n content: '\\e491';\n margin-left: -1em;\n}\n.ph-duotone.ph-tidal-logo:before {\n content: '\\ed1c';\n opacity: 0.2;\n}\n.ph-duotone.ph-tidal-logo:after {\n content: '\\ed1d';\n margin-left: -1em;\n}\n.ph-duotone.ph-tiktok-logo:before {\n content: '\\eaf2';\n opacity: 0.2;\n}\n.ph-duotone.ph-tiktok-logo:after {\n content: '\\eaf3';\n margin-left: -1em;\n}\n.ph-duotone.ph-tilde:before {\n content: '\\eda8';\n opacity: 0.2;\n}\n.ph-duotone.ph-tilde:after {\n content: '\\eda9';\n margin-left: -1em;\n}\n.ph-duotone.ph-timer:before {\n content: '\\e492';\n opacity: 0.2;\n}\n.ph-duotone.ph-timer:after {\n content: '\\e493';\n margin-left: -1em;\n}\n.ph-duotone.ph-tip-jar:before {\n content: '\\e7e2';\n opacity: 0.2;\n}\n.ph-duotone.ph-tip-jar:after {\n content: '\\e7e9';\n margin-left: -1em;\n}\n.ph-duotone.ph-tipi:before {\n content: '\\ed30';\n opacity: 0.2;\n}\n.ph-duotone.ph-tipi:after {\n content: '\\ed31';\n margin-left: -1em;\n}\n.ph-duotone.ph-tire:before {\n content: '\\edd2';\n opacity: 0.2;\n}\n.ph-duotone.ph-tire:after {\n content: '\\edd3';\n margin-left: -1em;\n}\n.ph-duotone.ph-toggle-left:before {\n content: '\\e674';\n opacity: 0.2;\n}\n.ph-duotone.ph-toggle-left:after {\n content: '\\e675';\n margin-left: -1em;\n}\n.ph-duotone.ph-toggle-right:before {\n content: '\\e676';\n opacity: 0.2;\n}\n.ph-duotone.ph-toggle-right:after {\n content: '\\e677';\n margin-left: -1em;\n}\n.ph-duotone.ph-toilet:before {\n content: '\\e79a';\n opacity: 0.2;\n}\n.ph-duotone.ph-toilet:after {\n content: '\\e79b';\n margin-left: -1em;\n}\n.ph-duotone.ph-toilet-paper:before {\n content: '\\e79c';\n opacity: 0.2;\n}\n.ph-duotone.ph-toilet-paper:after {\n content: '\\e79d';\n margin-left: -1em;\n}\n.ph-duotone.ph-toolbox:before {\n content: '\\eca0';\n opacity: 0.2;\n}\n.ph-duotone.ph-toolbox:after {\n content: '\\eca1';\n margin-left: -1em;\n}\n.ph-duotone.ph-tooth:before {\n content: '\\e9cc';\n opacity: 0.2;\n}\n.ph-duotone.ph-tooth:after {\n content: '\\e9cd';\n margin-left: -1em;\n}\n.ph-duotone.ph-tornado:before {\n content: '\\e88c';\n opacity: 0.2;\n}\n.ph-duotone.ph-tornado:after {\n content: '\\e88d';\n margin-left: -1em;\n}\n.ph-duotone.ph-tote:before {\n content: '\\e494';\n opacity: 0.2;\n}\n.ph-duotone.ph-tote:after {\n content: '\\e495';\n margin-left: -1em;\n}\n.ph-duotone.ph-tote-simple:before {\n content: '\\e678';\n opacity: 0.2;\n}\n.ph-duotone.ph-tote-simple:after {\n content: '\\e679';\n margin-left: -1em;\n}\n.ph-duotone.ph-towel:before {\n content: '\\ede6';\n opacity: 0.2;\n}\n.ph-duotone.ph-towel:after {\n content: '\\ede7';\n margin-left: -1em;\n}\n.ph-duotone.ph-tractor:before {\n content: '\\ec6e';\n opacity: 0.2;\n}\n.ph-duotone.ph-tractor:after {\n content: '\\ec6f';\n margin-left: -1em;\n}\n.ph-duotone.ph-trademark:before {\n content: '\\e9f0';\n opacity: 0.2;\n}\n.ph-duotone.ph-trademark:after {\n content: '\\e9f1';\n margin-left: -1em;\n}\n.ph-duotone.ph-trademark-registered:before {\n content: '\\e3f4';\n opacity: 0.2;\n}\n.ph-duotone.ph-trademark-registered:after {\n content: '\\e415';\n margin-left: -1em;\n}\n.ph-duotone.ph-traffic-cone:before {\n content: '\\e9a8';\n opacity: 0.2;\n}\n.ph-duotone.ph-traffic-cone:after {\n content: '\\e9a9';\n margin-left: -1em;\n}\n.ph-duotone.ph-traffic-sign:before {\n content: '\\e67a';\n opacity: 0.2;\n}\n.ph-duotone.ph-traffic-sign:after {\n content: '\\e67b';\n margin-left: -1em;\n}\n.ph-duotone.ph-traffic-signal:before {\n content: '\\e9aa';\n opacity: 0.2;\n}\n.ph-duotone.ph-traffic-signal:after {\n content: '\\e9ab';\n margin-left: -1em;\n}\n.ph-duotone.ph-train:before {\n content: '\\e496';\n opacity: 0.2;\n}\n.ph-duotone.ph-train:after {\n content: '\\e497';\n margin-left: -1em;\n}\n.ph-duotone.ph-train-regional:before {\n content: '\\e49e';\n opacity: 0.2;\n}\n.ph-duotone.ph-train-regional:after {\n content: '\\e49f';\n margin-left: -1em;\n}\n.ph-duotone.ph-train-simple:before {\n content: '\\e4a0';\n opacity: 0.2;\n}\n.ph-duotone.ph-train-simple:after {\n content: '\\e4a1';\n margin-left: -1em;\n}\n.ph-duotone.ph-tram:before {\n content: '\\e9ec';\n opacity: 0.2;\n}\n.ph-duotone.ph-tram:after {\n content: '\\e9ed';\n margin-left: -1em;\n}\n.ph-duotone.ph-translate:before {\n content: '\\e4a2';\n opacity: 0.2;\n}\n.ph-duotone.ph-translate:after {\n content: '\\e4a3';\n margin-left: -1em;\n}\n.ph-duotone.ph-trash:before {\n content: '\\e4a6';\n opacity: 0.2;\n}\n.ph-duotone.ph-trash:after {\n content: '\\e4a7';\n margin-left: -1em;\n}\n.ph-duotone.ph-trash-simple:before {\n content: '\\e4a8';\n opacity: 0.2;\n}\n.ph-duotone.ph-trash-simple:after {\n content: '\\e4a9';\n margin-left: -1em;\n}\n.ph-duotone.ph-tray:before {\n content: '\\e4aa';\n opacity: 0.2;\n}\n.ph-duotone.ph-tray:after {\n content: '\\e4ab';\n margin-left: -1em;\n}\n.ph-duotone.ph-tray-arrow-down:before {\n content: '\\e010';\n opacity: 0.2;\n}\n.ph-duotone.ph-tray-arrow-down:after {\n content: '\\e011';\n margin-left: -1em;\n}\n.ph-duotone.ph-tray-arrow-up:before {\n content: '\\ee52';\n opacity: 0.2;\n}\n.ph-duotone.ph-tray-arrow-up:after {\n content: '\\ee53';\n margin-left: -1em;\n}\n.ph-duotone.ph-treasure-chest:before {\n content: '\\ede2';\n opacity: 0.2;\n}\n.ph-duotone.ph-treasure-chest:after {\n content: '\\ede3';\n margin-left: -1em;\n}\n.ph-duotone.ph-tree:before {\n content: '\\e6da';\n opacity: 0.2;\n}\n.ph-duotone.ph-tree:after {\n content: '\\e6db';\n margin-left: -1em;\n}\n.ph-duotone.ph-tree-evergreen:before {\n content: '\\e6dc';\n opacity: 0.2;\n}\n.ph-duotone.ph-tree-evergreen:after {\n content: '\\e6dd';\n margin-left: -1em;\n}\n.ph-duotone.ph-tree-palm:before {\n content: '\\e91a';\n opacity: 0.2;\n}\n.ph-duotone.ph-tree-palm:after {\n content: '\\e91b';\n margin-left: -1em;\n}\n.ph-duotone.ph-tree-structure:before {\n content: '\\e67c';\n opacity: 0.2;\n}\n.ph-duotone.ph-tree-structure:after {\n content: '\\e67d';\n margin-left: -1em;\n}\n.ph-duotone.ph-tree-view:before {\n content: '\\ee48';\n opacity: 0.2;\n}\n.ph-duotone.ph-tree-view:after {\n content: '\\ee49';\n margin-left: -1em;\n}\n.ph-duotone.ph-trend-down:before {\n content: '\\e4ac';\n opacity: 0.2;\n}\n.ph-duotone.ph-trend-down:after {\n content: '\\e4ad';\n margin-left: -1em;\n}\n.ph-duotone.ph-trend-up:before {\n content: '\\e4ae';\n opacity: 0.2;\n}\n.ph-duotone.ph-trend-up:after {\n content: '\\e4af';\n margin-left: -1em;\n}\n.ph-duotone.ph-triangle:before {\n content: '\\e4b0';\n opacity: 0.2;\n}\n.ph-duotone.ph-triangle:after {\n content: '\\e4b1';\n margin-left: -1em;\n}\n.ph-duotone.ph-triangle-dashed:before {\n content: '\\e4b2';\n opacity: 0.2;\n}\n.ph-duotone.ph-triangle-dashed:after {\n content: '\\e4b3';\n margin-left: -1em;\n}\n.ph-duotone.ph-trolley:before {\n content: '\\e5b2';\n opacity: 0.2;\n}\n.ph-duotone.ph-trolley:after {\n content: '\\e5b3';\n margin-left: -1em;\n}\n.ph-duotone.ph-trolley-suitcase:before {\n content: '\\e5b4';\n opacity: 0.2;\n}\n.ph-duotone.ph-trolley-suitcase:after {\n content: '\\e5b5';\n margin-left: -1em;\n}\n.ph-duotone.ph-trophy:before {\n content: '\\e67e';\n opacity: 0.2;\n}\n.ph-duotone.ph-trophy:after {\n content: '\\e67f';\n margin-left: -1em;\n}\n.ph-duotone.ph-truck:before {\n content: '\\e4b4';\n opacity: 0.2;\n}\n.ph-duotone.ph-truck:after {\n content: '\\e4b5';\n margin-left: -1em;\n}\n.ph-duotone.ph-truck-trailer:before {\n content: '\\e4b6';\n opacity: 0.2;\n}\n.ph-duotone.ph-truck-trailer:after {\n content: '\\e4b7';\n margin-left: -1em;\n}\n.ph-duotone.ph-tumblr-logo:before {\n content: '\\e8d4';\n opacity: 0.2;\n}\n.ph-duotone.ph-tumblr-logo:after {\n content: '\\e8d5';\n margin-left: -1em;\n}\n.ph-duotone.ph-twitch-logo:before {\n content: '\\e5ce';\n opacity: 0.2;\n}\n.ph-duotone.ph-twitch-logo:after {\n content: '\\e5cf';\n margin-left: -1em;\n}\n.ph-duotone.ph-twitter-logo:before {\n content: '\\e4ba';\n opacity: 0.2;\n}\n.ph-duotone.ph-twitter-logo:after {\n content: '\\e4bb';\n margin-left: -1em;\n}\n.ph-duotone.ph-umbrella:before {\n content: '\\e684';\n opacity: 0.2;\n}\n.ph-duotone.ph-umbrella:after {\n content: '\\e685';\n margin-left: -1em;\n}\n.ph-duotone.ph-umbrella-simple:before {\n content: '\\e686';\n opacity: 0.2;\n}\n.ph-duotone.ph-umbrella-simple:after {\n content: '\\e687';\n margin-left: -1em;\n}\n.ph-duotone.ph-union:before {\n content: '\\edbe';\n opacity: 0.2;\n}\n.ph-duotone.ph-union:after {\n content: '\\edbf';\n margin-left: -1em;\n}\n.ph-duotone.ph-unite:before {\n content: '\\e87e';\n opacity: 0.2;\n}\n.ph-duotone.ph-unite:after {\n content: '\\e87f';\n margin-left: -1em;\n}\n.ph-duotone.ph-unite-square:before {\n content: '\\e878';\n opacity: 0.2;\n}\n.ph-duotone.ph-unite-square:after {\n content: '\\e879';\n margin-left: -1em;\n}\n.ph-duotone.ph-upload:before {\n content: '\\e4be';\n opacity: 0.2;\n}\n.ph-duotone.ph-upload:after {\n content: '\\e4bf';\n margin-left: -1em;\n}\n.ph-duotone.ph-upload-simple:before {\n content: '\\e4c0';\n opacity: 0.2;\n}\n.ph-duotone.ph-upload-simple:after {\n content: '\\e4c1';\n margin-left: -1em;\n}\n.ph-duotone.ph-usb:before {\n content: '\\e956';\n opacity: 0.2;\n}\n.ph-duotone.ph-usb:after {\n content: '\\e957';\n margin-left: -1em;\n}\n.ph-duotone.ph-user:before {\n content: '\\e4c2';\n opacity: 0.2;\n}\n.ph-duotone.ph-user:after {\n content: '\\e4c3';\n margin-left: -1em;\n}\n.ph-duotone.ph-user-check:before {\n content: '\\eafa';\n opacity: 0.2;\n}\n.ph-duotone.ph-user-check:after {\n content: '\\eafb';\n margin-left: -1em;\n}\n.ph-duotone.ph-user-circle:before {\n content: '\\e4c4';\n opacity: 0.2;\n}\n.ph-duotone.ph-user-circle:after {\n content: '\\e4c5';\n margin-left: -1em;\n}\n.ph-duotone.ph-user-circle-check:before {\n content: '\\ec38';\n opacity: 0.2;\n}\n.ph-duotone.ph-user-circle-check:after {\n content: '\\ec39';\n margin-left: -1em;\n}\n.ph-duotone.ph-user-circle-dashed:before {\n content: '\\ec36';\n opacity: 0.2;\n}\n.ph-duotone.ph-user-circle-dashed:after {\n content: '\\ec37';\n margin-left: -1em;\n}\n.ph-duotone.ph-user-circle-gear:before {\n content: '\\e4c6';\n opacity: 0.2;\n}\n.ph-duotone.ph-user-circle-gear:after {\n content: '\\e4c7';\n margin-left: -1em;\n}\n.ph-duotone.ph-user-circle-minus:before {\n content: '\\e4c8';\n opacity: 0.2;\n}\n.ph-duotone.ph-user-circle-minus:after {\n content: '\\e4c9';\n margin-left: -1em;\n}\n.ph-duotone.ph-user-circle-plus:before {\n content: '\\e4ca';\n opacity: 0.2;\n}\n.ph-duotone.ph-user-circle-plus:after {\n content: '\\e4cb';\n margin-left: -1em;\n}\n.ph-duotone.ph-user-focus:before {\n content: '\\e6fc';\n opacity: 0.2;\n}\n.ph-duotone.ph-user-focus:after {\n content: '\\e6fd';\n margin-left: -1em;\n}\n.ph-duotone.ph-user-gear:before {\n content: '\\e4cc';\n opacity: 0.2;\n}\n.ph-duotone.ph-user-gear:after {\n content: '\\e4cd';\n margin-left: -1em;\n}\n.ph-duotone.ph-user-list:before {\n content: '\\e73c';\n opacity: 0.2;\n}\n.ph-duotone.ph-user-list:after {\n content: '\\e73d';\n margin-left: -1em;\n}\n.ph-duotone.ph-user-minus:before {\n content: '\\e4ce';\n opacity: 0.2;\n}\n.ph-duotone.ph-user-minus:after {\n content: '\\e4cf';\n margin-left: -1em;\n}\n.ph-duotone.ph-user-plus:before {\n content: '\\e4d0';\n opacity: 0.2;\n}\n.ph-duotone.ph-user-plus:after {\n content: '\\e4d1';\n margin-left: -1em;\n}\n.ph-duotone.ph-user-rectangle:before {\n content: '\\e4d2';\n opacity: 0.2;\n}\n.ph-duotone.ph-user-rectangle:after {\n content: '\\e4d3';\n margin-left: -1em;\n}\n.ph-duotone.ph-user-sound:before {\n content: '\\eca8';\n opacity: 0.2;\n}\n.ph-duotone.ph-user-sound:after {\n content: '\\eca9';\n margin-left: -1em;\n}\n.ph-duotone.ph-user-square:before {\n content: '\\e4d4';\n opacity: 0.2;\n}\n.ph-duotone.ph-user-square:after {\n content: '\\e4d5';\n margin-left: -1em;\n}\n.ph-duotone.ph-user-switch:before {\n content: '\\e756';\n opacity: 0.2;\n}\n.ph-duotone.ph-user-switch:after {\n content: '\\e757';\n margin-left: -1em;\n}\n.ph-duotone.ph-users:before {\n content: '\\e4d6';\n opacity: 0.2;\n}\n.ph-duotone.ph-users:after {\n content: '\\e4d7';\n margin-left: -1em;\n}\n.ph-duotone.ph-users-four:before {\n content: '\\e68c';\n opacity: 0.2;\n}\n.ph-duotone.ph-users-four:after {\n content: '\\e68d';\n margin-left: -1em;\n}\n.ph-duotone.ph-users-three:before {\n content: '\\e68e';\n opacity: 0.2;\n}\n.ph-duotone.ph-users-three:after {\n content: '\\e68f';\n margin-left: -1em;\n}\n.ph-duotone.ph-van:before {\n content: '\\e826';\n opacity: 0.2;\n}\n.ph-duotone.ph-van:after {\n content: '\\e827';\n margin-left: -1em;\n}\n.ph-duotone.ph-vault:before {\n content: '\\e76e';\n opacity: 0.2;\n}\n.ph-duotone.ph-vault:after {\n content: '\\e76f';\n margin-left: -1em;\n}\n.ph-duotone.ph-vector-three:before {\n content: '\\ee62';\n opacity: 0.2;\n}\n.ph-duotone.ph-vector-three:after {\n content: '\\ee63';\n margin-left: -1em;\n}\n.ph-duotone.ph-vector-two:before {\n content: '\\ee64';\n opacity: 0.2;\n}\n.ph-duotone.ph-vector-two:after {\n content: '\\ee65';\n margin-left: -1em;\n}\n.ph-duotone.ph-vibrate:before {\n content: '\\e4d8';\n opacity: 0.2;\n}\n.ph-duotone.ph-vibrate:after {\n content: '\\e4d9';\n margin-left: -1em;\n}\n.ph-duotone.ph-video:before {\n content: '\\e740';\n opacity: 0.2;\n}\n.ph-duotone.ph-video:after {\n content: '\\e741';\n margin-left: -1em;\n}\n.ph-duotone.ph-video-camera:before {\n content: '\\e4da';\n opacity: 0.2;\n}\n.ph-duotone.ph-video-camera:after {\n content: '\\e4db';\n margin-left: -1em;\n}\n.ph-duotone.ph-video-camera-slash:before {\n content: '\\e4dc';\n opacity: 0.2;\n}\n.ph-duotone.ph-video-camera-slash:after {\n content: '\\e4dd';\n margin-left: -1em;\n}\n.ph-duotone.ph-video-conference:before {\n content: '\\edce';\n opacity: 0.2;\n}\n.ph-duotone.ph-video-conference:after {\n content: '\\edcf';\n margin-left: -1em;\n}\n.ph-duotone.ph-vignette:before {\n content: '\\eba2';\n opacity: 0.2;\n}\n.ph-duotone.ph-vignette:after {\n content: '\\eba3';\n margin-left: -1em;\n}\n.ph-duotone.ph-vinyl-record:before {\n content: '\\ecac';\n opacity: 0.2;\n}\n.ph-duotone.ph-vinyl-record:after {\n content: '\\ecad';\n margin-left: -1em;\n}\n.ph-duotone.ph-virtual-reality:before {\n content: '\\e7b8';\n opacity: 0.2;\n}\n.ph-duotone.ph-virtual-reality:after {\n content: '\\e7b9';\n margin-left: -1em;\n}\n.ph-duotone.ph-virus:before {\n content: '\\e7d6';\n opacity: 0.2;\n}\n.ph-duotone.ph-virus:after {\n content: '\\e7d7';\n margin-left: -1em;\n}\n.ph-duotone.ph-visor:before {\n content: '\\ee2a';\n opacity: 0.2;\n}\n.ph-duotone.ph-visor:after {\n content: '\\ee2b';\n margin-left: -1em;\n}\n.ph-duotone.ph-voicemail:before {\n content: '\\e4de';\n opacity: 0.2;\n}\n.ph-duotone.ph-voicemail:after {\n content: '\\e4df';\n margin-left: -1em;\n}\n.ph-duotone.ph-volleyball:before {\n content: '\\e726';\n opacity: 0.2;\n}\n.ph-duotone.ph-volleyball:after {\n content: '\\e727';\n margin-left: -1em;\n}\n.ph-duotone.ph-wall:before {\n content: '\\e688';\n opacity: 0.2;\n}\n.ph-duotone.ph-wall:after {\n content: '\\e689';\n margin-left: -1em;\n}\n.ph-duotone.ph-wallet:before {\n content: '\\e68a';\n opacity: 0.2;\n}\n.ph-duotone.ph-wallet:after {\n content: '\\e68b';\n margin-left: -1em;\n}\n.ph-duotone.ph-warehouse:before {\n content: '\\ecd4';\n opacity: 0.2;\n}\n.ph-duotone.ph-warehouse:after {\n content: '\\ecd5';\n margin-left: -1em;\n}\n.ph-duotone.ph-warning:before {\n content: '\\e4e0';\n opacity: 0.2;\n}\n.ph-duotone.ph-warning:after {\n content: '\\e4e1';\n margin-left: -1em;\n}\n.ph-duotone.ph-warning-circle:before {\n content: '\\e4e2';\n opacity: 0.2;\n}\n.ph-duotone.ph-warning-circle:after {\n content: '\\e4e3';\n margin-left: -1em;\n}\n.ph-duotone.ph-warning-diamond:before {\n content: '\\e7fc';\n opacity: 0.2;\n}\n.ph-duotone.ph-warning-diamond:after {\n content: '\\e7fd';\n margin-left: -1em;\n}\n.ph-duotone.ph-warning-octagon:before {\n content: '\\e4e4';\n opacity: 0.2;\n}\n.ph-duotone.ph-warning-octagon:after {\n content: '\\e4e5';\n margin-left: -1em;\n}\n.ph-duotone.ph-washing-machine:before {\n content: '\\ede8';\n opacity: 0.2;\n}\n.ph-duotone.ph-washing-machine:after {\n content: '\\ede9';\n margin-left: -1em;\n}\n.ph-duotone.ph-watch:before {\n content: '\\e4e6';\n opacity: 0.2;\n}\n.ph-duotone.ph-watch:after {\n content: '\\e4e7';\n margin-left: -1em;\n}\n.ph-duotone.ph-wave-sawtooth:before {\n content: '\\ea9c';\n opacity: 0.2;\n}\n.ph-duotone.ph-wave-sawtooth:after {\n content: '\\ea9d';\n margin-left: -1em;\n}\n.ph-duotone.ph-wave-sine:before {\n content: '\\ea9a';\n opacity: 0.2;\n}\n.ph-duotone.ph-wave-sine:after {\n content: '\\ea9b';\n margin-left: -1em;\n}\n.ph-duotone.ph-wave-square:before {\n content: '\\ea9e';\n opacity: 0.2;\n}\n.ph-duotone.ph-wave-square:after {\n content: '\\ea9f';\n margin-left: -1em;\n}\n.ph-duotone.ph-wave-triangle:before {\n content: '\\eaa0';\n opacity: 0.2;\n}\n.ph-duotone.ph-wave-triangle:after {\n content: '\\eaa1';\n margin-left: -1em;\n}\n.ph-duotone.ph-waveform:before {\n content: '\\e802';\n opacity: 0.2;\n}\n.ph-duotone.ph-waveform:after {\n content: '\\e803';\n margin-left: -1em;\n}\n.ph-duotone.ph-waveform-slash:before {\n content: '\\e800';\n opacity: 0.2;\n}\n.ph-duotone.ph-waveform-slash:after {\n content: '\\e801';\n margin-left: -1em;\n}\n.ph-duotone.ph-waves:before {\n content: '\\e6de';\n opacity: 0.2;\n}\n.ph-duotone.ph-waves:after {\n content: '\\e6df';\n margin-left: -1em;\n}\n.ph-duotone.ph-webcam:before {\n content: '\\e9b2';\n opacity: 0.2;\n}\n.ph-duotone.ph-webcam:after {\n content: '\\e9b3';\n margin-left: -1em;\n}\n.ph-duotone.ph-webcam-slash:before {\n content: '\\ecdc';\n opacity: 0.2;\n}\n.ph-duotone.ph-webcam-slash:after {\n content: '\\ecdd';\n margin-left: -1em;\n}\n.ph-duotone.ph-webhooks-logo:before {\n content: '\\ecae';\n opacity: 0.2;\n}\n.ph-duotone.ph-webhooks-logo:after {\n content: '\\ecaf';\n margin-left: -1em;\n}\n.ph-duotone.ph-wechat-logo:before {\n content: '\\e8d2';\n opacity: 0.2;\n}\n.ph-duotone.ph-wechat-logo:after {\n content: '\\e8d3';\n margin-left: -1em;\n}\n.ph-duotone.ph-whatsapp-logo:before {\n content: '\\e5d0';\n opacity: 0.2;\n}\n.ph-duotone.ph-whatsapp-logo:after {\n content: '\\e5d1';\n margin-left: -1em;\n}\n.ph-duotone.ph-wheelchair:before {\n content: '\\e4e8';\n opacity: 0.2;\n}\n.ph-duotone.ph-wheelchair:after {\n content: '\\e4e9';\n margin-left: -1em;\n}\n.ph-duotone.ph-wheelchair-motion:before {\n content: '\\e89a';\n opacity: 0.2;\n}\n.ph-duotone.ph-wheelchair-motion:after {\n content: '\\e89b';\n margin-left: -1em;\n}\n.ph-duotone.ph-wifi-high:before {\n content: '\\e4ea';\n opacity: 0.2;\n}\n.ph-duotone.ph-wifi-high:after {\n content: '\\e4eb';\n margin-left: -1em;\n}\n.ph-duotone.ph-wifi-low:before {\n content: '\\e4ec';\n opacity: 0.2;\n}\n.ph-duotone.ph-wifi-low:after {\n content: '\\e4ed';\n margin-left: -1em;\n}\n.ph-duotone.ph-wifi-medium:before {\n content: '\\e4ee';\n opacity: 0.2;\n}\n.ph-duotone.ph-wifi-medium:after {\n content: '\\e4ef';\n margin-left: -1em;\n}\n.ph-duotone.ph-wifi-none:before {\n content: '\\e4f0';\n color: #444;\n}\n.ph-duotone.ph-wifi-slash:before {\n content: '\\e4f2';\n opacity: 0.2;\n}\n.ph-duotone.ph-wifi-slash:after {\n content: '\\e4f3';\n margin-left: -1em;\n}\n.ph-duotone.ph-wifi-x:before {\n content: '\\e4f4';\n opacity: 0.2;\n}\n.ph-duotone.ph-wifi-x:after {\n content: '\\e4f5';\n margin-left: -1em;\n}\n.ph-duotone.ph-wind:before {\n content: '\\e5d2';\n opacity: 0.2;\n}\n.ph-duotone.ph-wind:after {\n content: '\\e5d3';\n margin-left: -1em;\n}\n.ph-duotone.ph-windmill:before {\n content: '\\e9f8';\n opacity: 0.2;\n}\n.ph-duotone.ph-windmill:after {\n content: '\\e9f9';\n margin-left: -1em;\n}\n.ph-duotone.ph-windows-logo:before {\n content: '\\e692';\n opacity: 0.2;\n}\n.ph-duotone.ph-windows-logo:after {\n content: '\\e693';\n margin-left: -1em;\n}\n.ph-duotone.ph-wine:before {\n content: '\\e6b2';\n opacity: 0.2;\n}\n.ph-duotone.ph-wine:after {\n content: '\\e6b3';\n margin-left: -1em;\n}\n.ph-duotone.ph-wrench:before {\n content: '\\e5d4';\n opacity: 0.2;\n}\n.ph-duotone.ph-wrench:after {\n content: '\\e5d5';\n margin-left: -1em;\n}\n.ph-duotone.ph-x:before {\n content: '\\e4f6';\n opacity: 0.2;\n}\n.ph-duotone.ph-x:after {\n content: '\\e4f7';\n margin-left: -1em;\n}\n.ph-duotone.ph-x-circle:before {\n content: '\\e4f8';\n opacity: 0.2;\n}\n.ph-duotone.ph-x-circle:after {\n content: '\\e4f9';\n margin-left: -1em;\n}\n.ph-duotone.ph-x-logo:before {\n content: '\\e4bc';\n opacity: 0.2;\n}\n.ph-duotone.ph-x-logo:after {\n content: '\\e4bd';\n margin-left: -1em;\n}\n.ph-duotone.ph-x-square:before {\n content: '\\e4fa';\n opacity: 0.2;\n}\n.ph-duotone.ph-x-square:after {\n content: '\\e4fb';\n margin-left: -1em;\n}\n.ph-duotone.ph-yarn:before {\n content: '\\ed9a';\n opacity: 0.2;\n}\n.ph-duotone.ph-yarn:after {\n content: '\\ed9b';\n margin-left: -1em;\n}\n.ph-duotone.ph-yin-yang:before {\n content: '\\e92a';\n opacity: 0.2;\n}\n.ph-duotone.ph-yin-yang:after {\n content: '\\e92b';\n margin-left: -1em;\n}\n.ph-duotone.ph-youtube-logo:before {\n content: '\\e4fc';\n opacity: 0.2;\n}\n.ph-duotone.ph-youtube-logo:after {\n content: '\\e4fd';\n margin-left: -1em;\n}\n","import { Component, Host, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'sula-icon',\n styleUrl: 'sula-icon.scss',\n shadow: false,\n})\nexport class SulaIcon {\n /**\n * The icon name\n */\n @Prop() icon: string;\n\n /**\n * Custom class to be applied to the icon\n */\n @Prop() customClass?: string = '';\n\n render() {\n return (\n <Host>\n <i class={`${this.icon} ${this.customClass} sula-icon`}></i>\n </Host>\n );\n }\n}\n","(typeof document !== \"undefined\") && (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 var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\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 for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n\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 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 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 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 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 if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\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 this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\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 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 switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n default:\n value = 1.1;\n break;\n }\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n return arr;\n }\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n if (type === 'int16') {\n return new Int16Array(len);\n }\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n return createRegularArray(type, len);\n }\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n return createRegularArray;\n }();\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(o) { \"@babel/helpers - typeof\"; return _typeof$6 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$6(o); }\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 (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 for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n function ProjectInterface$1() {\n return {};\n }\n BMMath.random = Math.random;\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n return absArr;\n }\n return Math.abs(val);\n };\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n return value;\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 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 function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\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 function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\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 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 switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n default:\n break;\n }\n return [r, g, b];\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 switch (max) {\n case min:\n h = 0;\n break;\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n default:\n break;\n }\n return [h, s, v];\n }\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\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 if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n if (g < 0) {\n g = 0;\n }\n if (b < 0) {\n b = 0;\n }\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\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(o) { \"@babel/helpers - typeof\"; return _typeof$5 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$5(o); }\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 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 });\n // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n workerFn = fn;\n return workerProxy;\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 for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\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 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 if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\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 function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\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);\n // 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 completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n i += 1;\n }\n return null;\n }\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n return JSON.parse(JSON.stringify(comp.layers));\n }\n return null;\n }\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\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 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 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 function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\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 function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n return null;\n }\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\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 function iterateLayers(layers) {\n var i;\n var len = layers.length;\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\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 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 for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\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 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 var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\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 var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\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 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 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 function iterateLayers(layers) {\n var i;\n var len = layers.length;\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\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 var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\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 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 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 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 for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\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 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 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 if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\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 function completeData(animationData) {\n if (animationData.__complete) {\n return;\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 function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {\n // data.singleShape = true;\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 if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\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 if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n return null;\n }\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest();\n // set responseType after calling open or IE will break.\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\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 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 xhr.send();\n }\n return {\n load: loadAsset\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 _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 _workerSelf.dataManager.completeData(animation);\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 workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\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 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 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 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 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 function imageLoaded() {\n this.loadedAssets += 1;\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n return path;\n }\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n if (box.width || _count > 500) {\n this._imageLoaded();\n clearInterval(intervalId);\n }\n _count += 1;\n }.bind(this), 50);\n }\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\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 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 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 this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\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 function setPath(path) {\n this.path = path || '';\n }\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n i += 1;\n }\n return null;\n }\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\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 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 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 BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\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 this._cbs[eventName].push(callback);\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 while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n i -= 1;\n len -= 1;\n }\n i += 1;\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 for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n if (keysCount === 0) {\n throw new Error();\n }\n return keys;\n }\n return function (_markers) {\n var markers = [];\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 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 markers.push(markerData);\n }\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\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 return this.compositions[i].compInterface;\n }\n i += 1;\n }\n return null;\n }\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n function getRenderer(key) {\n return renderers[key];\n }\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n }\n // Returns any renderer that is registered\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n return '';\n }\n\n function _typeof$4(o) { \"@babel/helpers - typeof\"; return _typeof$4 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$4(o); }\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 extendPrototype([BaseEvent], AnimationItem);\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n var animType = 'svg';\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\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 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 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 if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\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 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 AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\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 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 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 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 if (prerender === 'false') {\n params.prerender = false;\n }\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\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 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 for (j = 0; j < jLen; j += 1) {\n i = 0;\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n i += 1;\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 if (data.assets) {\n len = data.assets.length;\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n this.loadNextSegment();\n };\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\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 AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n this.loadNextSegment();\n };\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\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 AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n try {\n this.animationData = animData;\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 this.renderer.configAnimation(animData);\n if (!animData.assets) {\n animData.assets = [];\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 if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\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 if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n if (this.autoplay) {\n this.play();\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 var _height = typeof height === 'number' ? height : undefined;\n this.renderer.updateContainerSize(_width, _height);\n };\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\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 this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\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 AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n return null;\n };\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n var numValue = Number(value);\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\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 this.pause();\n };\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n var numValue = Number(value);\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\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 this.play();\n };\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false;\n // 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 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 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 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 if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\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 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 this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n this.trigger('segmentStart');\n };\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\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 this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n if (this.isPaused) {\n this.play();\n }\n };\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n if (forceFlag) {\n this.checkSegments(0);\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 return false;\n };\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\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 AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n this.audioController.setVolume(val);\n };\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n this.audioController.mute();\n };\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n this.audioController.unmute();\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 AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n return path;\n };\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n i += 1;\n }\n return null;\n };\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\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) {\n // TODO: decide how to handle catch case\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 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 case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n default:\n this.triggerEvent(name);\n }\n }\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\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 function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n i += 1;\n }\n }\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n var i = 0;\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n i += 1;\n }\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n return animations;\n }\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\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 function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n function setSpeed(val, animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n function setDirection(val, animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n function play(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n initTime = nowTime;\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n function pause(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n function goToAndStop(value, isFrame, animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n function stop(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n function togglePause(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n function destroy(animation) {\n var i;\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\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 for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n registerAnimation(animElements[i], animationData);\n }\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\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 function resize() {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n function freeze() {\n _isFrozen = true;\n }\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n function setVolume(val, animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n function mute(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n function unmute(animation) {\n var i;\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\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;\n // moduleOb.start = start;\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 /**\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n *\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\n * Usage:\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\n *\n */\n\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n if (beziers[str]) {\n return beziers[str];\n }\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n }\n\n // These values are established by empiricism with tests (tradeoff: performance VS precision)\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 function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n function C(aA1) {\n return 3.0 * aA1;\n }\n\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n }\n\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\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 function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\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 return currentT;\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 return aGuessT;\n }\n\n /**\n * points is an array of [ mX1, mY1, mX2, mY2 ]\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 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 if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n\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 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 for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n /**\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\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 for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\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 if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n if (initialSlope === 0.0) {\n return guessForT;\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 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 function newElement() {\n var element;\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n return element;\n }\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n if (_release) {\n _release(element);\n }\n pool[_length] = element;\n _length += 1;\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 return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n function release(element) {\n var i;\n var len = element.lengths.length;\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n element.lengths.length = 0;\n }\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\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 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 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 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 return diffDist > -0.0001 && diffDist < 0.0001;\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 for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\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 if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n lastPoint[i] = point[i];\n }\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n lengthData.addedLength = addedLength;\n return lengthData;\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 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 if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\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 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 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 var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\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 if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n return storedData[bezierName];\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 if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\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 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 flag = false;\n }\n }\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\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 var bezierSegmentPoints = createTypedArray('float32', 8);\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 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 var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\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 var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\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 var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\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 var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n var t1t1t1 = t1 * t1 * t1;\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 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 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 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 return bezierSegmentPoints;\n }\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\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 while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n iterationIndex = 0;\n break;\n }\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\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 if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n var bezierData = keyframeMetadata.bezierData;\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n }\n // caching._lastKeyframeIndex = -1;\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 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 while (flag) {\n addedLength += bezierData.points[j].partialLength;\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\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 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 break;\n }\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\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 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 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 perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\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 if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n caching.lastIndex = iterationIndex;\n return newValue;\n }\n\n // based on @Toji's https://github.com/toji/gl-matrix/\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 if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\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 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 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 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 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 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 var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n function setVValue(val) {\n var multipliedValue;\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\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 while (i < len) {\n multipliedValue = val[i] * this.mult;\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n i += 1;\n }\n }\n }\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n if (this.lock) {\n this.setVValue(this.pv);\n return;\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 for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\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 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 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 this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\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 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 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 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 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 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 for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\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 var p;\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 case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n default:\n break;\n }\n }\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n return p;\n }\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\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 for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\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 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 ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\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 ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n this._length = len;\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 ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n case 'i':\n arr = this.i;\n break;\n case 'o':\n arr = this.o;\n break;\n default:\n arr = [];\n break;\n }\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n arr[pos][0] = x;\n arr[pos][1] = y;\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 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 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 var cnt = this._length - 1;\n var len = this._length;\n var i;\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 return newPath;\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 function release(shapePath) {\n var len = shapePath._length;\n var i;\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 shapePath._length = 0;\n shapePath.c = false;\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 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 return cloned;\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 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 this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\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 function newShapeCollection() {\n var shapeCollection;\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n return shapeCollection;\n }\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n shapeCollection._length = 0;\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n pool[_length] = shapeCollection;\n _length += 1;\n }\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\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 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){\n keyPropS = kf[kf.length - 1].s[0];\n }else{\n keyPropS = kf[kf.length - 2].e[0];\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 while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\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 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 perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n keyPropS = keyData.s[0];\n }\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\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 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 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 function resetShape() {\n this.paths = this.localShapeCollection;\n }\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n var i;\n var len = shape1._length;\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 return true;\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 function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n this.lock = true;\n this._mdf = false;\n var finalValue;\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 var i;\n var len = this.effectsSequence.length;\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\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 function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\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 KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\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 if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\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 var _cw = this.d !== 3;\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 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 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 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 if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\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;\n this.v.i.length = numPts;\n this.v.o.length = numPts; */\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 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\n /* this.v.v[i] = [x,y];\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\n this.v._length = numPts; */\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 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 this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\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 if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\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 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 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 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 this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n function getShapeProp(elem, data, type) {\n var prop;\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\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 if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n return prop;\n }\n function getConstructorFunction() {\n return ShapeProperty;\n }\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\n Transformation Matrix v2.0\n (c) Epistemex 2014-2015\n www.epistemex.com\n By Ken Fyrstenberg\n Contributions by leeoniya.\n License: MIT, header required.\n */\n\n /**\n * 2D transformation matrix object initialized with identity matrix.\n *\n * The matrix can synchronize a canvas context by supplying the context\n * as an argument, or later apply current absolute transform to an\n * existing context.\n *\n * All values are handled as floating point values.\n *\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\n * @prop {number} a - scale x\n * @prop {number} b - shear y\n * @prop {number} c - shear x\n * @prop {number} d - scale y\n * @prop {number} e - translate x\n * @prop {number} f - translate y\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\n * @constructor\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 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 function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n var mCos = _cos(angle);\n var mSin = _sin(angle);\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n var mCos = _cos(angle);\n var mSin = _sin(angle);\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n var mCos = _cos(angle);\n var mSin = _sin(angle);\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n var mCos = _cos(angle);\n var mSin = _sin(angle);\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n var mSin = _sin(angle);\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);\n // 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 function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\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 function translate(tx, ty, tz) {\n tz = tz || 0;\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 return this;\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 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 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\n /* matrix order (canvas compatible):\n * ace\n * bdf\n * 001\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 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 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 return this._identity;\n }\n function equals(matr) {\n var i = 0;\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n i += 1;\n }\n return true;\n }\n function clone(matr) {\n var i;\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n return matr;\n }\n function cloneFromProps(props) {\n var i;\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\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 {\n x: x * me.a + y * me.c + me.e,\n y: x * me.b + y * me.d + me.f\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 function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\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 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 function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n return retPts;\n }\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\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 return arr;\n }\n function applyToPointArray(x, y, z) {\n var arr;\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 return arr;\n }\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\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 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 /* if(this.isIdentity()) {\n return '';\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n return cssValue;\n }\n function roundMatrixProperty(val) {\n var v = 10000;\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n return val;\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 /* if(this.isIdentity()) {\n return '';\n } */\n var props = this.props;\n var _a = roundMatrixProperty(props[0]);\n var _b = roundMatrixProperty(props[1]);\n var _c = roundMatrixProperty(props[4]);\n var _d = roundMatrixProperty(props[5]);\n var _e = roundMatrixProperty(props[12]);\n var _f = roundMatrixProperty(props[13]);\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\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(o) { \"@babel/helpers - typeof\"; return _typeof$3 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$3(o); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n function setLocation(href) {\n setLocationHref(href);\n }\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n return animationManager.loadAnimation(params);\n }\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n case 'matrix':\n return Matrix;\n default:\n return null;\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;\n // lottie.start = start;\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.13.0';\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n return null;\n }\n var queryString = '';\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 renderer = getQueryVariable('renderer');\n }\n var readyStateCheckInterval = setInterval(checkReady, 100);\n\n // this adds bodymovin to the window object for backwards compatibility\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\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n return ob;\n }();\n function ShapeModifier() {}\n ShapeModifier.prototype.initModifierProperties = function () {};\n ShapeModifier.prototype.addShapeToModifier = function () {};\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 if (this._isAnimated) {\n data.setAsAnimated();\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 if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n extendPrototype([ShapeModifier], TrimModifier);\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 TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\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 var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n return shapeSegments;\n };\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n pathsData.length = 0;\n return pathsData;\n };\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n if (o < 0) {\n o += 1;\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 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 if (s > e) {\n var _s = s;\n s = e;\n e = _s;\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 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 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 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 for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\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 if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\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 shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes();\n // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\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 jLen = edges.length;\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\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 var newShapesData = this.addShapes(shapeData, segments[0]);\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 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 this.addPaths(newShapesData, localShapeCollection);\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 TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\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 if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\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 if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\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 if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n shapes.push(shapePath);\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 for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\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);\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n newShape = false;\n shapePath.c = false;\n }\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\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);\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\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 if (addedLength > shapeSegment.e) {\n break;\n }\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\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 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 for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\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 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 return clonedPath;\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 if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\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 for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\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 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 function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n this.iterateDynamicProperties();\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\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 if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\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 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 this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\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 this.frameId = this.elem.globalData.frameId;\n }\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\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 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 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 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 function autoOrient() {\n //\n // var prevP = this.getValueAtTime();\n }\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\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();\n // Precalculated matrix with non animated properties\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\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 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 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 if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\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 this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this);\n // sh Indicates it needs to be capped between -180 and 180\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\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 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);\n // 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 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 this._isDirty = true;\n if (!this.dynamicProperties.length) {\n this.getValue(true);\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 function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n extendPrototype([ShapeModifier], RepeaterModifier);\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 if (!this.dynamicProperties.length) {\n this.getValue(true);\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 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 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 while (pos > 0) {\n pos -= 1;\n // this._elements.unshift(arr.splice(pos,1)[0]);\n this._elements.unshift(arr[pos]);\n }\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\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 RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\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 if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\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 this._groups.splice(0, 0, group);\n this._currentCopies += 1;\n }\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n cont = 0;\n var renderFlag;\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 if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\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 cont += 1;\n }\n this._currentCopies = copies;\n /// /\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 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 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 if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\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 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 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 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 for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n this.matrix.reset();\n } else {\n this.matrix.reset();\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\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 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 return hasReloaded;\n };\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n extendPrototype([ShapeModifier], RoundCornersModifier);\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 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 for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\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;\n clonedPath.o[index] = currentO;\n clonedPath.i[index] = currentI; */\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 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 if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\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 return clonedPath;\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 if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\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 for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection;\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 function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c;\n // Complex roots\n if (s < 0) return [];\n var singleRoot = -b / (2 * a);\n // 1 root\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a);\n // 2 roots\n return [singleRoot - delta, singleRoot + delta];\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 function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\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 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 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 PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\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 if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\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 function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n }\n // Derivative roots to find min/max\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\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 return {\n min: min,\n max: max\n };\n }\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\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 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 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 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 function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\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 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 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 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 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 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 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 function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n extendPrototype([ShapeModifier], ZigZagModifier);\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 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 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 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 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 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 return direction;\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 if (!path.c) {\n count -= 1;\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 for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n return clonedPath;\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 if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\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 for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection;\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 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 function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0];\n\n // Bevel\n if (lineJoin === 3) return p0;\n\n // Connected, they don't need a joint\n if (pointEqual(p0, p1)) return p0;\n\n // Round\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 }\n\n // Miter\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 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 return p0;\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 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 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 if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n return [outa, outb];\n }\n function pruneIntersections(segments) {\n var e;\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 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 return segments;\n }\n function offsetSegmentSplit(segment, amount) {\n /*\n We split each bezier segment into smaller pieces based\n on inflection points, this ensures the control point\n polygon is convex.\n (A cubic bezier can have none, one, or two inflection points)\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\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 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 function OffsetPathModifier() {}\n extendPrototype([ShapeModifier], OffsetPathModifier);\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 OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n if (!inputBezier.c) {\n count -= 1;\n }\n var i;\n var j;\n var segment;\n var multiSegments = [];\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\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 multiSegments = pruneIntersections(multiSegments);\n\n // Add bezier segments to the output and apply line joints\n var lastPoint = null;\n var lastSeg = null;\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 for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\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 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 if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\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 if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\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 for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n shapeData.shape.paths = shapeData.localShapeCollection;\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 for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n case 'bold':\n fWeight = '700';\n break;\n case 'black':\n fWeight = '900';\n break;\n case 'medium':\n fWeight = '500';\n break;\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n default:\n break;\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 = [];\n // Hindi characters\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 function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\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 return enabledFamilies.join(',');\n }\n function setUpNode(font, family) {\n var parentNode = createTag('span');\n // Node is invisible to screen readers.\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span');\n // Characters that vary significantly among different fonts\n node.innerText = 'giItT1WQy@!-/#';\n // Visible - so we can measure it - but not on the screen\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px';\n // Large font size makes even subtle changes obvious\n parentNode.style.fontSize = '300px';\n // Reset any font properties\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);\n\n // Remember width with no applied web font\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 function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\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 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 if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\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 if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px';\n // tHelper.style.fontFamily = fontData.fFamily;\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 if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\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 function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n return helper.measureText(text).width;\n }\n return {\n measureText: measure\n };\n }\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\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 var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\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 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 if (loadedSelector.length > 0) {\n shouldLoadFont = false;\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 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 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 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 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 fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\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 function addChars(chars) {\n if (!chars) {\n return;\n }\n if (!this.chars) {\n this.chars = [];\n }\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\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 j += 1;\n }\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\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 i += 1;\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 return emptyChar;\n }\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName);\n // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n var index = _char2;\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\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 return fontData.cache[index] * size;\n }\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n i += 1;\n }\n return this.fonts[0];\n }\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return codePoint;\n }\n\n // Skin tone modifiers\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n }\n\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 function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n }\n\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 function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n return false;\n }\n\n // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n }\n\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 function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n var count = 0;\n index += 2;\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n count += 1;\n index += 2;\n }\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n function setIsLoaded() {\n this.isLoaded = true;\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 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 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 return data;\n };\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false;\n // layer's display state\n this.hidden = false;\n // If layer's transparency equals 0, it can be hidden\n this.isTransparent = false;\n // list of animated components\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 * @function\n * Initializes frame related properties.\n *\n * @param {number} num\n * current frame number in Layer's time\n *\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 for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\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 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 function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\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 for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\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 for (i = 0; i < len; i += 1) {\n eff = null;\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n var i = 0;\n var len = this.data.masksProperties.length;\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n i += 1;\n }\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n if (!expressionsInterfaces) {\n return;\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 if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\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();\n\n // Stretch factor for old animations missing this property.\n if (!this.data.sr) {\n this.data.sr = 1;\n }\n // effects manager\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 /**\n * @file\n * Handles element's layer frame update.\n * Checks layer in point and out point\n *\n */\n\n function FrameElement() {}\n FrameElement.prototype = {\n /**\n * @function\n * Initializes frame related properties.\n *\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false;\n // list of animated properties\n this.dynamicProperties = [];\n // If layer has been modified in current tick this will be true\n this._mdf = false;\n },\n /**\n * @function\n * Calculates all dynamic values\n *\n * @param {number} num\n * current frame number in Layer's time\n * @param {boolean} isVisible\n * if layers is currently in range\n *\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\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 FootageElement.prototype.prepareFrame = function () {};\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n FootageElement.prototype.renderFrame = function () {};\n FootageElement.prototype.destroy = function () {};\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n if (!expressionsInterfaces) {\n return;\n }\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\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 AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\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 this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\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 AudioElement.prototype.show = function () {\n // this.audio.play()\n };\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\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 AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n AudioElement.prototype.destroy = function () {};\n AudioElement.prototype.sourceRectAtTime = function () {};\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\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 this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n this.checkPendingElements();\n };\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n case 0:\n return this.createComp(layer);\n case 1:\n return this.createSolid(layer);\n case 3:\n return this.createNull(layer);\n case 4:\n return this.createShape(layer);\n case 5:\n return this.createText(layer);\n case 6:\n return this.createAudio(layer);\n case 13:\n return this.createCamera(layer);\n case 15:\n return this.createFootage(layer);\n default:\n return this.createNull(layer);\n }\n };\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n this.checkPendingElements();\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 for (i = 0; i < len; i += 1) {\n j = 0;\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n j += 1;\n }\n }\n };\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\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 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 if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n i += 1;\n }\n };\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\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 BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n return null;\n };\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\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 if (path.length === 0) {\n return element;\n }\n return element.getElementByPath(path);\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 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 if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n }\n\n // TODO: check TYPE 11: Guided elements\n if (this.data.ty !== 11) {\n // 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 if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length;\n // Checking if any of the transformation matrices in the hierarchy chain has changed.\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 i += 1;\n }\n }\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n if (!this.localTransforms || this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\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 if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\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 i += 1;\n }\n }\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n localMat.multiply(this.finalTransform.mat);\n }\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\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 if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\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 while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n var i;\n var len = transforms.length;\n var ptNew;\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0);\n // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\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 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 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 path = createNS('path');\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 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 }\n\n // TODO move this to a factory or to a constructor\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 if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\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 if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n }\n // TODO move this to a factory or to a constructor\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 if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\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 if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\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 if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\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 if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\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 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 this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\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 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 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 }\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 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 }\n // pathNodes.__renderedString = pathString;\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n viewData.lastPath = pathString;\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 function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\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 return fil;\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 return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true,\n svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\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 if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\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 for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\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 if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n return effects;\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 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;\n // If this layer acts as a mask for the following layer\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 if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\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 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 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 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 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 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 if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\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 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 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 this.globalData.defs.appendChild(maskGroup);\n }\n this.matteMasks[matteType] = id;\n }\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\n * @file\n * Handles AE's layer parenting property.\n *\n */\n\n function HierarchyElement() {}\n HierarchyElement.prototype = {\n /**\n * @function\n * Initializes hierarchy properties\n *\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = [];\n // if element is parent of another layer _isParent will be true\n this._isParent = false;\n this.checkParenting();\n },\n /**\n * @function\n * Sets layer's hierarchy.\n * @param {array} hierarch\n * layer's parent list\n *\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n /**\n * @function\n * Sets layer as parent.\n *\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n /**\n * @function\n * Searches layer's parenting chain\n *\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 (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 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 this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\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 if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\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 extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\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 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 IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\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 while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n var i;\n var len = this.shapes.length;\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame);\n // 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 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 while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n i += 1;\n }\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n while (i) {\n i -= 1;\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\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;\n // 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 this._isAnimated = !!shape.k;\n // TODO: commenting this for now since all shapes are animated\n var i = 0;\n var len = transformers.length;\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n i += 1;\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 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 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 if (!this.k) {\n this.getValue(true);\n }\n this._isAnimated = this.k;\n }\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n if (this.renderer === 'svg') {\n this.dashStr = '';\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 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 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 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 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 GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n if (diff > 0.01) {\n return false;\n }\n i += 1;\n }\n return true;\n };\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n return true;\n };\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\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 if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n if (this.o.length) {\n len = this.prop.v.length;\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 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 this._mdf = !forceRender;\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 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 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 for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\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 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 maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\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 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 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 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 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 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 return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n var _matrixHelper = new Matrix();\n var ob = {\n createRenderFunction: createRenderFunction\n };\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n case 'gf':\n return renderGradient;\n case 'gs':\n return renderGradientStroke;\n case 'st':\n return renderStroke;\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n case 'tr':\n return renderContentTransform;\n case 'no':\n return renderNoop;\n default:\n return null;\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 if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n function renderNoop() {}\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 for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\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 while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\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 paths = itemData.sh.paths;\n jLen = paths._length;\n if (redraw) {\n pathStringTransformed = '';\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\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 if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\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 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 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 if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n var stops;\n var i;\n var len;\n var stop;\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\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 if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n len = stops.length;\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\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 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 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 if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n if (itemData.s._mdf || 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 var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\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 if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n }\n // gfill.setAttribute('fy','200');\n }\n }\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\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 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 if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = [];\n // Full shape data\n this.shapesData = data.shapes;\n // List of styles that will be applied to shapes\n this.stylesList = [];\n // List of modifiers that will be applied to shapes\n this.shapeModifiers = [];\n // List of items in shape tree\n this.itemsData = [];\n // List of items in previous shape tree\n this.processedElements = [];\n // List of animated components\n this.animatedContents = [];\n this.initElement(data, globalData, comp);\n // 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 this.prevViewData = [];\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n\n /*\n This method searches for multiple shapes that affect a single element and one of them is animated\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 for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\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 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 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 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 if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n return elementData;\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 SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\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 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 SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n i += 1;\n }\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n for (j = 0; j < jLen; j += 1) {\n if (arr.indexOf(this.stylesList[j]) === -1 && !this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n this.renderModifiers();\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 for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\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 = arr[i].hd;\n }\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\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 for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\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 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 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 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 ownModifiers.push(modifier);\n }\n this.addProcessedElement(arr[i], i + 1);\n }\n len = ownStyles.length;\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n len = ownModifiers.length;\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n this.renderShape();\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);\n // Adding M0 0 fixes same mask bug on all browsers\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\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 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 if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\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 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 if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\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 if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n TextProperty.prototype.defaultBoxWidth = [0, 0];\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 return obj;\n };\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n return this.kf;\n };\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\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 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 if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\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 while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n i += 1;\n }\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n return this.data.d.k[this.keysIndex].s;\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 while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true;\n // 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);\n // It's a surrogate pair (this is the Low surrogate)\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 if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n i += currentChars.length;\n }\n return charactersArray;\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 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 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 for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\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 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 if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r');\n // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n currentHeight += fontData.ascent * documentData.finalSize / 100;\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 lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\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 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 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 if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\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 index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\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 currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n default:\n documentData.justifyOffset = 0;\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 for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n ind = 0;\n based = animatorData.s.b;\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\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 ind += 1;\n }\n }\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\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 letterData.anIndexes[j] = newInd;\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 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 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 TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\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 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 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 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 if (!this.dynamicProperties.length) {\n this.getValue();\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 var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\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 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 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 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 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 if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\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;\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\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 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 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 mult = easer(mult);\n }\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 if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n var threshold = 0.5 - smoothness * 0.5;\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n if (mult > 1) {\n mult = 1;\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 if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\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 if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\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 TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\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 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 this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\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 if (this._hasMaskedPath) {\n mask = this._pathData.m;\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n if (this._pathData.r.v) {\n paths = paths.reverse();\n }\n // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\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 i = len;\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 this._pathData.pi = pathInfo;\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 if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\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 //\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 for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\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 isNewLine = false;\n }\n }\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\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 if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\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 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 case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n default:\n break;\n }\n currentLine = letters[i].line;\n }\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\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 if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n flag = true;\n // Force alignment only works with a single line for now\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 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 if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\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 if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\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);\n\n // Grouping alignment\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\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 if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\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 if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\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 for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\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 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 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 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 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 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 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 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 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 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 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 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 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 for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\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 if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\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 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 if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\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 if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\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 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 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 case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n default:\n break;\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 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 letterO = elemOpacity;\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 TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\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 ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\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 return shapeStr;\n };\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\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 matrixHelper.translate(0, -documentData.ls, 0);\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n default:\n break;\n }\n matrixHelper.translate(xPos, yPos, 0);\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 ITextElement.prototype.emptyProp = new LetterProps();\n ITextElement.prototype.destroy = function () {};\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 function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\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 i += 1;\n }\n textContents.push(currentTextContent);\n return textContents;\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 if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n return data;\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 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 if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\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 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 if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n case 2:\n justify = 'middle';\n break;\n default:\n justify = 'start';\n break;\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 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 if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\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 if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\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 if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n tSpan.style.display = 'inherit';\n }\n matrixHelper.reset();\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 this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0;\n // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n xPos += trackingOffset;\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;\n // t === 1 means the character has been replaced with an animated shaped\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n glyphElement = new SVGShapeElement(data, this.globalData, this);\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 this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement);\n // 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 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 tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n }\n //\n }\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n this._sizeChanged = true;\n };\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\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 return this.bbox;\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 for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\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 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 if (glyphElement) {\n glyphElement.renderFrame();\n }\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\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 extendPrototype([IImageElement], ISolidElement);\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect');\n /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\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 NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n NullElement.prototype.renderFrame = function () {};\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n NullElement.prototype.destroy = function () {};\n NullElement.prototype.sourceRectAtTime = function () {};\n NullElement.prototype.hide = function () {};\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n extendPrototype([BaseRenderer], SVGRendererBase);\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\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 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 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 if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio);\n // 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 this.animationItem.wrapper.appendChild(this.svgElement);\n // Mask animation\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 SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\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 this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n SVGRendererBase.prototype.updateContainerSize = function () {};\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n return -1;\n };\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n element.initExpressions();\n }\n this.appendElementInPos(element, pos);\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n if (elementIndex === -1) {\n return;\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 SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\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 i += 1;\n }\n }\n }\n };\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n }\n // console.log('-------');\n // console.log('FRAME ',num);\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 if (!this.completeLayers) {\n this.checkLayers(num);\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 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 SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n if (!newElement) {\n return;\n }\n var i = 0;\n var nextElement;\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 i += 1;\n }\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\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 if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n this.hide();\n };\n\n /* ICompElement.prototype.hide = function(){\n if(!this.hidden){\n this.hideElement();\n var i,len = this.elements.length;\n for( i = 0; i < len; i+=1 ){\n if(this.elements[i]){\n this.elements[i].hide();\n }\n }\n }\n }; */\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n var i;\n var len = this.elements.length;\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n }\n // This iteration needs to be backwards because of how expressions connect between each other\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 if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\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 extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\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 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 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 if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\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 extendPrototype([SVGRendererBase], SVGRenderer);\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 ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n var sequence = this.sequences[key];\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 return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n i += 1;\n }\n if (_mdf) {\n sequence.finalTransform.reset();\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\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;\n\n // 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 var svgString = [\n '<svg xmlns=\"http://www.w3.org/2000/svg\">',\n '<filter id=\"' + id + '\">',\n '<feColorMatrix type=\"matrix\" color-interpolation-filters=\"sRGB\" values=\"',\n '0.3, 0.3, 0.3, 0, 0, ',\n '0.3, 0.3, 0.3, 0, 0, ',\n '0.3, 0.3, 0.3, 0, 0, ',\n '0.3, 0.3, 0.3, 0, 0',\n '\"/>',\n '</filter>',\n '</svg>',\n ].join('');\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\n var url = URL.createObjectURL(blob);\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\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 _svg.appendChild(fil);\n _svg.setAttribute('id', id + '_svg');\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n return _svg;\n }\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d');\n // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height;\n // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\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 function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n this.filters = [];\n var filterManager;\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n return effects;\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 for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n this.hasMasks = hasMasks;\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\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 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 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 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 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 this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\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 if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\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 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);\n // on the first buffer we store the current state of the global drawing\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n // 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 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];\n // 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 var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n // We clear the canvas again\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n // We draw the mask\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true);\n // We draw the second buffer (that contains the content of this layer)\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n\n // 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 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);\n // we repaint the context with the mask applied to it\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0);\n // 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 this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform);\n // We reset the globalCompositeOperation to source-over, the standard type of operation\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n if (this.data.td === 1 && !forceRender) {\n return;\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 if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\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 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 this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\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 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 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 CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\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 if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\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 elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\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 this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\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 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 CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\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 CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\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 for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\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 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 for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\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 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 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 ownModifiers.push(modifier);\n }\n this.addProcessedElement(arr[i], i + 1);\n }\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\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 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 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 for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type;\n\n // 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 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 if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd);\n // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n renderer.ctxLineWidth(currentStyle.wi);\n // ctx.lineWidth = currentStyle.wi;\n renderer.ctxLineCap(currentStyle.lc);\n // ctx.lineCap = currentStyle.lc;\n renderer.ctxLineJoin(currentStyle.lj);\n // ctx.lineJoin = currentStyle.lj;\n renderer.ctxMiterLimit(currentStyle.ml || 0);\n // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd);\n // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n renderer.ctxOpacity(currentStyle.coOp);\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n nodes = elems[j].trNodes;\n kLen = nodes.length;\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 if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n renderer.restore();\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 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 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 for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\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 shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\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 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 styledShape.trNodes = shapeNodes;\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 for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\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 if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\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 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 if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\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 var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\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 grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n styleElem.grd = grd;\n }\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\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 if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\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 extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\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 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 this.fill = hasFill;\n var hasStroke = false;\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\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;\n // this.tHelper.font = this.values.fValue;\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 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 if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\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 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 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 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 if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n cnt += 1;\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');\n // ctx.lineCap = 'butt';\n this.globalData.renderer.ctxLineJoin('miter');\n // ctx.lineJoin = 'miter';\n this.globalData.renderer.ctxMiterLimit(4);\n // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\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 for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc;\n // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill);\n // ctx.fillStyle = this.values.fill;\n }\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\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 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 this.globalData.canvasContext.closePath();\n renderer.ctxFill();\n // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw);\n // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth);\n // ctx.lineWidth = this.values.sWidth;\n }\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc);\n // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke);\n // ctx.strokeStyle = this.values.stroke;\n }\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\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 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 this.globalData.canvasContext.closePath();\n renderer.ctxStroke();\n // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\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 extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\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 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 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 CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\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 extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc);\n // ctx.fillStyle = this.data.sc;\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh);\n // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n extendPrototype([BaseRenderer], CanvasRendererBase);\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\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 this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n this.contextData.reset();\n };\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n this.contextData.restore(actionFlag);\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 if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\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 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 CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\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 this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n var elementRel;\n var animationRel;\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 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 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 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 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;\n for(i=0;i<len;i+=1){\n if(this.elements[i] && this.elements[i].data.ty === 0){\n this.elements[i].resize(this.globalData.transformCanvas);\n }\n } */\n this.ctxTransform(this.transformCanvas.props);\n this.canvasContext.beginPath();\n this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n this.canvasContext.closePath();\n this.canvasContext.clip();\n this.renderFrame(this.renderedFrame, true);\n };\n CanvasRendererBase.prototype.destroy = function () {\n if (this.renderConfig.clearCanvas && this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n var i;\n var len = this.layers ? this.layers.length : 0;\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\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 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;\n\n // console.log('--------');\n // console.log('NEW: ',num);\n var i;\n var len = this.layers.length;\n if (!this.completeLayers) {\n this.checkLayers(num);\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 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 for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\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){\n element.resize(this.globalData.transformCanvas);\n } */\n };\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\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 function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\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 CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n this._length = newLength;\n };\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\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 for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\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 this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\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 CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n var props = this.cTr.props;\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n var currentStack = this.stack[this.cArrPos];\n var i;\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\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 CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\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 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 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 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 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 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 CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props);\n // Taking the last transform value from the stored stack of transforms\n var currentTransform = this.cTr;\n // Applying the last transform value after the new transform to respect the order of transformations\n this.transformMat.multiply(currentTransform);\n // Storing the new transformed value in the stored transform\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props;\n // Applying the new transform to the canvas\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n this.stack[this.cArrPos].opacity = currentOpacity;\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 this.nativeContext.fill(rule);\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 this.nativeContext.fillRect(x, y, w, h);\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 if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\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 extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\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 for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n this.layers = null;\n this.elements = null;\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 if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\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 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 extendPrototype([CanvasRendererBase], CanvasRenderer);\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\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 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 if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\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 if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\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 this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n if (this.matteElement) {\n this.matteElement = null;\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 extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n HSolidElement.prototype.createContent = function () {\n var rect;\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 this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = [];\n // Full shape data\n this.shapesData = data.shapes;\n // List of styles that will be applied to shapes\n this.stylesList = [];\n // List of modifiers that will be applied to shapes\n this.shapeModifiers = [];\n // List of items in shape tree\n this.itemsData = [];\n // List of items in previous shape tree\n this.processedElements = [];\n // List of animated components\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp);\n // 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 this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\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 this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n return point;\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 if (len <= 1) {\n return;\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 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 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 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 HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\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 a |= 0; // eslint-disable-line no-bitwise\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {\n //\n } else if (a === 0) {\n t = -c / b;\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 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 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 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 HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\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 HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n if (kfw > width) {\n width = kfw;\n }\n }\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\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 HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\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;\n // var tempBoundingBox = this.shapeCont.getBBox();\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n var changed = false;\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 if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\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 extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\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 this.checkParenting();\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 if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\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 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 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 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 }\n // tSpan.setAttribute('visibility', 'hidden');\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 if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n matrixHelper.reset();\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 if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\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 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 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 if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\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 this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\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 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 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 }\n /// /textSpan.setAttribute('opacity',renderedLetter.o);\n textSpan.style.opacity = renderedLetter.o;\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n var margin = 1;\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 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 if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\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 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 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;\n\n // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n this.finalTransform = {\n mProp: this\n };\n }\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\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 for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\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 HCameraElement.prototype.createElements = function () {};\n HCameraElement.prototype.hide = function () {};\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n if (this.hierarchy) {\n len = this.hierarchy.length;\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\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 if (this.hierarchy) {\n len = this.hierarchy.length - 1;\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 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 if (this.a) {\n var diffVector;\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 var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2));\n // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\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 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 if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\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 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 this.mat.clone(this._prevMat);\n }\n }\n this._isFirstFrame = false;\n };\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n HCameraElement.prototype.destroy = function () {};\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 extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\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 img.crossOrigin = 'anonymous';\n img.src = assetPath;\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 extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n if (!newDOMElement) {\n return;\n }\n var layer = this.layers[pos];\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 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 i += 1;\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 HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n return new HShapeElement(data, this.globalData, this);\n };\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n return new HTextElement(data, this.globalData, this);\n };\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n return new HImageElement(data, this.globalData, this);\n };\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n return new HSolidElement(data, this.globalData, this);\n };\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n i += 1;\n }\n return null;\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 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 perspectiveElem.appendChild(container);\n // this.resizerElem.appendChild(perspectiveElem);\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 HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\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 lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n len = this.threeDElements.length;\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n j += 1;\n }\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n break;\n }\n i += 1;\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 if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\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;\n // Mask animation\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 HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\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 this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\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 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 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 HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\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 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 HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\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 extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements();\n // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\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 HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n j += 1;\n }\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\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 extendPrototype([HybridRendererBase], HybridRenderer);\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\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 while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n i += 1;\n }\n return null;\n // return {active:false};\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(o) { \"@babel/helpers - typeof\"; return _typeof$2 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$2(o); }\n /* eslint-disable */\n /*\n Copyright 2014 David Bau.\n\n Permission is hereby granted, free of charge, to any person obtaining\n a copy of this software and associated documentation files (the\n \"Software\"), to deal in the Software without restriction, including\n without limitation the rights to use, copy, modify, merge, publish,\n distribute, sublicense, and/or sell copies of the Software, and to\n permit persons to whom the Software is furnished to do so, subject to\n the following conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n */\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 //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {};\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // 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 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 while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n prng[\"double\"] = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\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 }\n // Only provide the .state method if requested via options.state.\n prng.state = function () {\n return copy(arc4, {});\n };\n }\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 if (is_math_call) {\n math[rngname] = prng;\n return seed;\n }\n\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 math['seed' + rngname] = seedrandom;\n\n //\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 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 = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) {\n key = [keylen++];\n }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\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 }\n\n // The \"g\" method returns the next (count) outputs as one number.\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 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 me.i = i;\n me.j = j;\n return r;\n // 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\n //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\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\n //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\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 return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n }\n\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 function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n return tostring(key);\n }\n\n //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\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\n //\n // tostring()\n // Converts an array of charcodes to a string\n //\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n }\n\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 mixkey(math.random(), pool);\n\n //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n\n // End anonymous scope, and pass initial values.\n }\n ;\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(o) { \"@babel/helpers - typeof\"; return _typeof$1 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$1(o); }\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 function resetFrame() {\n _lottieGlobal = {};\n }\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n return retArr;\n }\n if (a.propType) {\n return a.v;\n }\n return -a;\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 function sum(a, b) {\n var tOfA = _typeof$1(a);\n var tOfB = _typeof$1(b);\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\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 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 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 i += 1;\n }\n return retArr;\n }\n return 0;\n }\n var add = sum;\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n var tOfB = _typeof$1(b);\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n return a - b;\n }\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\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 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 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 i += 1;\n }\n return retArr;\n }\n return 0;\n }\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n var tOfB = _typeof$1(b);\n var arr;\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n var i;\n var len;\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n return arr;\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n return arr;\n }\n return 0;\n }\n function div(a, b) {\n var tOfA = _typeof$1(a);\n var tOfB = _typeof$1(b);\n var arr;\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n var i;\n var len;\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n return arr;\n }\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n return arr;\n }\n return 0;\n }\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n return a % b;\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 function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n return Math.min(Math.max(num, min), max);\n }\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n var radians_to_degrees = radiansToDegrees;\n function degreesToRadians(val) {\n return val * degToRads;\n }\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\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 if (!arr2) {\n arr2 = helperLengthArray;\n }\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n return Math.sqrt(addedLength);\n }\n function normalize(vec) {\n return div(vec, length(vec));\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 if (max === min) {\n h = 0; // achromatic\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return [h, s, l, val[3]];\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 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 if (s === 0) {\n r = l; // achromatic\n b = l; // achromatic\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 return [r, g, b, val[3]];\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 if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n if (t <= tMin) {\n return value1;\n }\n if (t >= tMax) {\n return value2;\n }\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n return arr;\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 if (max.length) {\n var i;\n var len = max.length;\n if (!min) {\n min = createTypedArray('float32', len);\n }\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n return arr;\n }\n if (min === undefined) {\n min = 0;\n }\n var rndm = BMMath.random();\n return min + rndm * (max - min);\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 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 return path;\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 if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n var _needsRandom = val.indexOf('random') !== -1;\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._name = elem.data.nm;\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;\n // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\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 while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random();\n // addedAmps[j] += -amp + amp*2*rnd;\n }\n iWiggle += 1;\n }\n // var rnd2 = BMMath.random();\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\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;\n // 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 return arr;\n }\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\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 function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\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 if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n var mult = fn(t);\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n return arr;\n }\n return (val2 - val1) * mult + val1;\n }\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\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 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 break;\n }\n }\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\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 for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n return obKey;\n }\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n return fr / fps;\n }\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n return t * fps;\n }\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n return value.substring(init, end);\n }\n return '';\n }\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n return value.substr(init, end);\n }\n return '';\n }\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\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 function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\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 if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\n rotation = transform.rotation;\n scale = transform.scale; */\n }\n }\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n if (!effect) {\n effect = thisLayer(4);\n }\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n expression_function();\n this.frameExpressionId = elem.globalData.frameId;\n\n // 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 scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n }\n // Bundlers will see these as dead code and unless we reference them\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 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 function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n function pushExpression() {\n stackCount += 1;\n }\n function popExpression() {\n stackCount -= 1;\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n function releaseInstances() {\n var i;\n var len = registers.length;\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n registers.length = 0;\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 return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\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 return this._mask.op.v * 100;\n }\n });\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n var i;\n var len = maskManager.viewData.length;\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n var maskFunction = function maskFunction(name) {\n i = 0;\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n i += 1;\n }\n return null;\n };\n return maskFunction;\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 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 expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n var value = '';\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 var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\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 expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\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 expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n val = property.v * mult;\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n expressionValue.value = val;\n expressionValue[0] = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n return expressionValue;\n };\n }\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\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 for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n return expressionValue;\n };\n }\n\n // TODO: try to avoid using this getter\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\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 case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n default:\n return null;\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 var _px;\n var _py;\n var _pz;\n var _transformFactory;\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\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 if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n return toWorldMat;\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 function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\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 function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\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 for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\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 for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n return matrix.inversePoint(arr);\n }\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n return toWorldMat.inversePoint(arr);\n }\n return toWorldMat.inversePoint(arr);\n }\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n return function (elem) {\n var transformInterface;\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\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 case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n default:\n return null;\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 if (val <= 0) {\n return interfaceFunction;\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 function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n if (val <= 0) {\n return interfaceFunction;\n }\n return propertyGroup(val - 1);\n }\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\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 for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n var effects = elem.data.ef || [];\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n i += 1;\n }\n return null;\n };\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n return null;\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 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 return effectElements[i]();\n }\n i += 1;\n }\n throw new Error();\n }\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n var effectElements = [];\n var i;\n var len = data.ef.length;\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 if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\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 function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n return expressionProperty();\n }\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n return interfaceFunction;\n }\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\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 return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\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 return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\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 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') {\n // 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 return arr;\n }\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\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 i += 1;\n }\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n return null;\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 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 default:\n return interfaceFunction.transform;\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 });\n // interfaceFunction.content = interfaceFunction;\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 function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n return null;\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 function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n return null;\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 function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n return interfaceFunction;\n }\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n return null;\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 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 if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\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 function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\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 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 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 function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\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 function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\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 if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\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 function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\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 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 return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\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 function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n return null;\n }\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\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 return function (shapes, view, propertyGroup) {\n var interfaces;\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n if (value === 0) {\n return propertyGroup;\n }\n return interfaces[value - 1];\n }\n var i = 0;\n var len = interfaces.length;\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n i += 1;\n }\n return null;\n }\n function parentGroupWrapper() {\n return propertyGroup;\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 function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n default:\n return null;\n }\n }\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\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 _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n return currentProperty;\n }\n var propertyNameIndex = value.indexOf(currentPropertyName);\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n return currentProperty;\n }\n return '';\n }\n return init;\n };\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n return null;\n }\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n return null;\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 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 function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\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 return this._cachingAtTime.value;\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 if (v1.length) {\n var i;\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n return speed;\n }\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n var delta = -0.001;\n // frameNum += this.elem.data.st;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\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 return velocity;\n }\n function getStaticValueAtTime() {\n return this.pv;\n }\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\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 type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n var cycleDuration;\n var firstKeyFrame;\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\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 firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n var i;\n var len;\n var ret;\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\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 var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n return ret;\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 if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\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 return ret;\n }\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n var cycleDuration;\n var lastKeyFrame;\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\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 lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n var i;\n var len;\n var ret;\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\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 if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n return ret;\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 if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n return ret;\n }\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n if (samples <= 1) {\n return this.pv;\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 if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n var sampleValue;\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\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 i += 1;\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 return value;\n }\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n }\n /// /\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\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 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 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 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 if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\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 return matrix;\n /// /\n }\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n var propertyGetProp = PropertyFactory.getProp;\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container);\n // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\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 if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n return prop;\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 frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\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 return this._cachingAtTime.shapeValue;\n }\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n function ShapeExpressions() {}\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n var shapePath = this.v;\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\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 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 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 if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\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 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 i += 1;\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 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 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 if (magnitude === 0) {\n return [0, 0];\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 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 if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n return prop;\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 return null;\n }\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\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 return currentValue;\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 TextProperty.prototype.searchExpressions = searchExpressions;\n }\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\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 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 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 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 extendPrototype([SVGComposableEffect], SVGTintFilter);\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 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 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 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 groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\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 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 while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\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 while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n var i;\n var len = this.paths.length;\n var mask;\n var path;\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 if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\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 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 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 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 path.setAttribute('stroke-dasharray', dasharrayValue);\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 if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\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 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');\n\n // Red\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 }\n // Green\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 }\n // Blue\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 }\n // Alpha\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 }\n // RGB\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\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 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 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 while (cnt <= 256) {\n perc = cnt / 256;\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 table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n return table.join(' ');\n };\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\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 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 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 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 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 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 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 if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\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 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 SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n i += 1;\n }\n return null;\n };\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n if (!parentNode) {\n return;\n }\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n i += 1;\n }\n var nextChild;\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\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 _svgMatteSymbols.push(mask);\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 elem.setMatte(mask.layerId);\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 while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n i += 1;\n }\n this.initialized = true;\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 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;\n\n // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY);\n\n // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\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 TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\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 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 extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n extendPrototype([TransformEffect], CVTransformEffect);\n\n // Registering renderers\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer);\n\n // Registering shape modifiers\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);\n\n // Registering expression plugin\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize();\n\n // Registering svg effects\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",":host {\n display: block;\n}\n","import { Component, Element, Host, Prop, State, h } from '@stencil/core';\nimport lottie, { AnimationItem } from 'lottie-web';\nimport loaderAnimation from '../assets/lottie/loader.json';\nimport { SulaLoaderSize } from './model/sula-loader.model';\n\n@Component({\n tag: 'sula-loader',\n styleUrl: 'sula-loader.scss',\n shadow: true,\n})\nexport class SulaLoader {\n @Element() el: HTMLElement;\n\n /**\n * Tamanho predefinido (small, medium, large)\n */\n @Prop() size: SulaLoaderSize = SulaLoaderSize.Medium;\n\n @State() animationInstance: AnimationItem;\n\n containerRef: HTMLDivElement;\n\n componentDidLoad() {\n this.initLottie();\n }\n\n disconnectedCallback() {\n if (this.animationInstance) {\n this.animationInstance.destroy();\n }\n }\n\n initLottie() {\n if (!this.containerRef) return;\n\n try {\n const animationData = loaderAnimation;\n\n this.animationInstance = lottie.loadAnimation({\n container: this.containerRef,\n renderer: 'svg',\n loop: true,\n autoplay: true,\n animationData: animationData,\n });\n\n this.animationInstance.setSpeed(1);\n } catch (error) {\n console.error('Erro ao carregar animação Lottie:', error);\n }\n }\n\n getDimensions() {\n const sizes = {\n small: '24px',\n medium: '32px',\n large: '104px',\n };\n return { width: sizes[this.size], height: sizes[this.size] };\n }\n\n render() {\n const { width, height } = this.getDimensions();\n\n return (\n <Host>\n <div\n ref={el => (this.containerRef = el)}\n style={{\n width: width,\n height: height,\n }}\n ></div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.sula-menu-select-list {\n box-shadow: 0px 8px 16px 0px #0000000a;\n}\n","import { Component, Event, EventEmitter, Host, Prop, h } from '@stencil/core';\nimport { SulaMenuListItem } from './model/sula-menu-select-list.model';\n\n@Component({\n tag: 'sula-menu-select-list',\n styleUrl: 'sula-menu-select-list.scss',\n shadow: true,\n})\nexport class SulaMenuSelectList {\n /**\n * Items for list\n */\n @Prop({ mutable: true })\n items: SulaMenuListItem[] = [];\n\n /**\n * Menu is full width\n */\n @Prop()\n fullWidth = false;\n\n /**\n * Event emitted when item is selected\n */\n @Event()\n itemSelected: EventEmitter<SulaMenuListItem>;\n\n handleClick = (item: SulaMenuListItem) => {\n this.itemSelected.emit(item);\n };\n\n render() {\n return (\n <Host>\n <ul\n class={{\n 'bg-surface-body border border-line-general sula-menu-select-list rounded-sm py-12 max-h-[260px] overflow-auto': true,\n 'w-300': !this.fullWidth,\n 'w-full': this.fullWidth,\n }}\n >\n {this.items.map(item => (\n <li class=\"w-full px-24 py-16 text-base leading-4 text-text-primary hover:bg-states-empty-bg-hover cursor-pointer\" key={item.id} onClick={() => this.handleClick(item)}>\n {item.title}\n </li>\n ))}\n </ul>\n </Host>\n );\n }\n}\n","export enum SulaProgressBarAppearance {\n Primary = 'primary',\n Secondary = 'secondary',\n OnPrimary = 'on-primary',\n Success = 'success',\n Error = 'error',\n}\n\nexport enum SulaProgressBarState {\n Default = 'default',\n Success = 'success',\n Error = 'error',\n}\n",":host {\n display: block;\n}\n","import { Component, Host, Prop, Watch, h } from '@stencil/core';\nimport { SulaProgressBarAppearance, SulaProgressBarState } from './model/sula-progress-bar.model';\n\n@Component({\n tag: 'sula-progress-bar',\n styleUrl: 'sula-progress-bar.scss',\n shadow: true,\n})\nexport class SulaProgressBar {\n /**\n * The style of the progress bar.\n */\n @Prop({ mutable: true })\n appearance: SulaProgressBarAppearance = SulaProgressBarAppearance.Primary;\n\n /**\n * The state of the progress bar.\n */\n @Prop({ mutable: true })\n state: SulaProgressBarState = SulaProgressBarState.Default;\n\n /**\n * The label displayed at the top of the progress bar.\n */\n @Prop({ mutable: true })\n topLabel: string;\n\n /**\n * The label displayed at the bottom of the progress bar.\n */\n @Prop({ mutable: true })\n bottomLabel: string;\n\n /**\n * The progress value of the progress bar.\n */\n @Prop({ mutable: true })\n progress: number;\n\n /**\n * Show progress\n */\n @Prop({ mutable: true })\n showProgress: boolean = true;\n\n @Watch('progress')\n validateProgress(newValue: number) {\n this.handleProgress(newValue);\n }\n\n componentWillLoad() {\n this.handleProgress(this.progress);\n }\n\n handleProgress(value: number) {\n if (value < 0) {\n this.progress = 0;\n console.warn('sula-progress-bar: progress cannot be less than 0. Value adjusted to 0.');\n } else if (value > 100) {\n this.progress = 100;\n console.warn('sula-progress-bar: progress cannot be greater than 100. Value adjusted to 100.');\n }\n }\n\n getProgressBarStyle() {\n const styles = {\n [SulaProgressBarAppearance.Primary]: 'bg-brand-primary',\n [SulaProgressBarAppearance.Secondary]: 'bg-neutral-300',\n [SulaProgressBarAppearance.OnPrimary]: 'bg-opacity-on-body',\n [SulaProgressBarAppearance.Success]: 'bg-feedback-success',\n [SulaProgressBarAppearance.Error]: 'bg-feedback-error',\n };\n\n return styles[this.appearance];\n }\n\n getProgressBarStateElement() {\n if (this.state === SulaProgressBarState.Default) {\n return this.showProgress && <span class=\"text-sm text-text-secondary font-bold leading-[14px]\">{this.progress}%</span>;\n } else if (this.state === SulaProgressBarState.Success) {\n return (\n <div class=\"flex justify-center items-center leading-6 h-24\">\n <sula-icon icon=\"ph ph-check-circle\" customClass=\"text-2xl text-feedback-success\"></sula-icon>\n </div>\n );\n } else {\n return (\n <div class=\"flex justify-center items-center leading-6 h-24\">\n <sula-icon icon=\"ph ph-x-circle\" customClass=\"text-2xl text-feedback-error\"></sula-icon>\n </div>\n );\n }\n }\n\n render() {\n return (\n <Host>\n <div class=\"flex flex-col w-full space-y-8\">\n <div class=\"flex justify-between items-center\">\n <label class=\"text-sm text-text-secondary leading-[14px]\">{this.topLabel}</label>\n {this.getProgressBarStateElement()}\n </div>\n <div\n style={{ width: `${this.progress}%` }}\n class={{\n 'h-12 rounded-xxl': true,\n [this.getProgressBarStyle()]: true,\n }}\n ></div>\n <label class=\"text-sm text-text-secondary leading-[14px]\">{this.bottomLabel}</label>\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.container-focus {\n outline: 1px solid var(--color-feedback-informational) !important;\n outline-offset: 1px !important;\n}\n","import { Component, Event, EventEmitter, Host, Prop, State, h } from '@stencil/core';\n\n@Component({\n tag: 'sula-radio-button',\n styleUrl: 'sula-radio-button.scss',\n shadow: true,\n})\nexport class SulaRadioButton {\n /**\n * Is radio button checked\n */\n @Prop({ mutable: true }) checked: boolean = false;\n\n /**\n * Radio button label\n */\n @Prop({ mutable: true }) label: string = '';\n\n /**\n * Is radio button disabled\n */\n @Prop({ mutable: true }) disabled: boolean = false;\n\n /**\n * Event emitted when radio button value changes.\n */\n @Event()\n valueChanged: EventEmitter<boolean>;\n\n /**\n * Event emitted when radio button is focused.\n */\n @Event()\n focusedOn: EventEmitter<void>;\n\n /**\n * Event emitted when radio button is focused out.\n */\n @Event()\n focusedOut: EventEmitter<void>;\n\n @State()\n radioIsFocus: boolean = false;\n\n handleFocus = () => {\n if (this.disabled) return;\n\n this.radioIsFocus = true;\n this.focusedOn.emit();\n };\n\n handleFocusOut = () => {\n if (this.disabled) return;\n\n this.radioIsFocus = false;\n this.focusedOut.emit();\n };\n\n handleClick = () => {\n if (this.disabled) return;\n this.checked = !this.checked;\n this.valueChanged.emit(this.checked);\n };\n\n render() {\n return (\n <Host>\n <div class={{ 'w-fit': true, 'flex items-center': !!this.label }} onClick={this.handleClick}>\n <div\n class={{\n 'min-w-[30px] min-h-[30px] rounded-full flex justify-center items-center outline-none': true,\n 'active:bg-states-empty-bg-pressed cursor-pointer': !this.disabled,\n 'bg-brand-primary': this.checked,\n 'border border-line-input': !this.checked,\n 'container-focus': this.radioIsFocus,\n 'bg-states-bg-disabled border-2 border-states-bg-disabled cursor-not-allowed': this.disabled,\n }}\n tabIndex={0}\n onFocus={this.handleFocus}\n onBlur={this.handleFocusOut}\n >\n {this.checked && <div class=\"bg-transparent border-2 border-negative-negative-1 w-[18px] h-[18px] rounded-full\"></div>}\n </div>\n {this.label && <label class={{ 'ml-16 text-base text-text-primary': true, 'cursor-pointer': !this.disabled }}>{this.label}</label>}\n </div>\n </Host>\n );\n }\n}\n","export enum SulaSearchBarStyle {\n Default = 'default',\n Highlight = 'highlight',\n}\n",":host {\n display: block;\n}\n\n.search-bar-shadow {\n box-shadow: 0px 4px 19.7px 0px #0000000f;\n}\n\n.search-bar-focus {\n outline: 2px solid var(--color-feedback-informational) !important;\n outline-offset: 2px !important;\n}\n","import { Component, Event, EventEmitter, Host, Prop, State, h } from '@stencil/core';\nimport { SulaSearchBarStyle } from './model/sula-search.bar-model';\n\n@Component({\n tag: 'sula-search-bar',\n styleUrl: 'sula-search-bar.scss',\n shadow: true,\n})\nexport class SulaSearchBar {\n /**\n * Value for the search bar.\n */\n @Prop({ mutable: true })\n value?: string;\n\n /**\n * Search bar style\n */\n @Prop({ mutable: true })\n searchBarStyle: SulaSearchBarStyle = SulaSearchBarStyle.Default;\n\n /**\n * Search bar placeholder\n */\n @Prop({ mutable: true })\n placeholder: string;\n\n /**\n * Search bar left icon\n */\n @Prop({ mutable: true })\n leftIcon: string;\n\n /**\n * Search bar right icon\n */\n @Prop({ mutable: true })\n rightIcon: string;\n\n /**\n * Event emitted when search bar value changes.\n */\n @Event()\n valueChanged: EventEmitter<string>;\n\n /**\n * Event emitted when search bar is focused.\n */\n @Event()\n focusedOn: EventEmitter<void>;\n\n /**\n * Event emitted when search bar is focused out.\n */\n @Event()\n focusedOut: EventEmitter<void>;\n\n /**\n * Event emitted when right icon is clicked\n */\n @Event()\n rightIconClicked: EventEmitter<void>;\n\n @State()\n isFocused = false;\n\n @State()\n textValue: string = '';\n\n inputElement: HTMLInputElement;\n\n componentWillLoad() {\n if (this.value && this.value.trim().length > 0) {\n this.textValue = this.value;\n }\n }\n\n getStyleClass() {\n const style = {\n [SulaSearchBarStyle.Default]: 'bg-surface-on-body hover:bg-states-empty-bg-hover',\n [SulaSearchBarStyle.Highlight]: 'bg-surface-body search-bar-shadow border border-surface-on-body',\n };\n\n return style[this.searchBarStyle];\n }\n\n handleInputFocus = () => {\n this.isFocused = true;\n this.inputElement.focus();\n this.focusedOn.emit();\n };\n\n handleInputBlur = () => {\n this.isFocused = false;\n this.inputElement.blur();\n this.focusedOut.emit();\n };\n\n handleRightIconClick = (event: MouseEvent) => {\n this.rightIconClicked.emit();\n\n event.stopPropagation();\n event.preventDefault();\n };\n\n handleValueChanges = (event: InputEvent) => {\n const newValue = (event.target as HTMLTextAreaElement).value;\n this.textValue = newValue;\n this.value = newValue;\n\n this.valueChanged.emit(newValue);\n };\n\n render() {\n return (\n <Host>\n <div\n class={{\n 'flex flex-row items-center space-x-12 px-16 rounded-xxl h-44 caret-brand-primary outline-none group': true,\n [this.getStyleClass()]: true,\n 'search-bar-focus': this.isFocused,\n }}\n tabIndex={0}\n onFocus={this.handleInputFocus}\n onClick={this.handleInputFocus}\n >\n {!this.isFocused && this.leftIcon && (\n <div class=\"flex justify-center items-center leading-6\">\n <sula-icon icon={this.leftIcon} customClass=\"text-2xl text-icon-primary group-hover:text-brand-primary\"></sula-icon>\n </div>\n )}\n\n <input\n ref={node => (this.inputElement = node)}\n type=\"text\"\n class=\"outline-none border-none w-full bg-transparent text-text-primary\"\n placeholder={this.placeholder}\n onBlur={this.handleInputBlur}\n value={this.value}\n onInput={this.handleValueChanges}\n />\n\n {this.rightIcon && (\n <div class=\"flex justify-center items-center leading-6 cursor-pointer\" onClick={this.handleRightIconClick} onMouseDown={e => e.preventDefault()}>\n <sula-icon icon={this.rightIcon} customClass=\"text-2xl text-icon-primary\"></sula-icon>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n","export enum SulaSwitchType {\n Default = 'default',\n List = 'list',\n}\n",":host {\n display: block;\n}\n\n.switch-focus {\n outline: 2px solid var(--color-feedback-informational) !important;\n outline-offset: 2px !important;\n}\n\n.container-focus {\n outline: 2px solid var(--color-feedback-informational) !important;\n outline-offset: 2px !important;\n}\n\n.switch-container {\n position: relative;\n transition: background-color 0.3s ease-in-out;\n cursor: pointer;\n overflow: hidden;\n}\n\n.switch-thumb {\n position: relative;\n transition: transform 0.3s ease-in-out;\n}\n\n.switch-on .switch-thumb {\n animation: slideFromLeft 0.3s ease-in-out forwards;\n}\n\n.switch-off .switch-thumb {\n animation: slideFromRight 0.3s ease-in-out forwards;\n}\n\n.switch-indicator {\n transition: width 0.3s ease-in-out, height 0.3s ease-in-out, background-color 0.3s ease-in-out;\n}\n\n.switch-indicator-on {\n animation: growIndicator 0.3s ease-in-out forwards;\n}\n\n.switch-indicator-off {\n animation: shrinkIndicator 0.3s ease-in-out forwards;\n}\n\n@keyframes slideFromLeft {\n 0% {\n transform: translateX(-100%);\n opacity: 0;\n }\n 50% {\n opacity: 0.7;\n }\n 100% {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@keyframes slideFromRight {\n 0% {\n transform: translateX(100%);\n opacity: 0;\n }\n 50% {\n opacity: 0.7;\n }\n 100% {\n transform: translateX(0);\n opacity: 1;\n }\n}\n\n@keyframes growIndicator {\n 0% {\n width: 10px;\n height: 4px;\n opacity: 0.5;\n }\n 100% {\n width: 12px;\n height: 12px;\n opacity: 1;\n }\n}\n\n@keyframes shrinkIndicator {\n 0% {\n width: 12px;\n height: 12px;\n opacity: 0.5;\n }\n 100% {\n width: 10px;\n height: 4px;\n opacity: 1;\n }\n}\n","import { Component, Event, EventEmitter, Host, Prop, State, h } from '@stencil/core';\nimport { SulaSwitchType } from './model/sula-switch.model';\n\n@Component({\n tag: 'sula-switch',\n styleUrl: 'sula-switch.scss',\n shadow: true,\n})\nexport class SulaSwitch {\n /**\n * Switch type\n */\n @Prop({ mutable: true }) type: SulaSwitchType = SulaSwitchType.Default;\n\n /**\n * Is switch active\n */\n @Prop({ mutable: true }) active: boolean = false;\n\n /**\n * Is switch disabled\n */\n @Prop({ mutable: true }) disabled: boolean = false;\n\n /**\n * Switch label\n */\n @Prop({ mutable: true }) label?: string;\n\n /**\n * Switch sub title (avaible when is `list` type)\n */\n @Prop({ mutable: true }) subTitle?: string;\n\n /**\n * Event emitted when switch value changes.\n */\n @Event()\n valueChanged: EventEmitter<boolean>;\n\n /**\n * Event emitted when switch is focused.\n */\n @Event()\n focusedOn: EventEmitter<void>;\n\n /**\n * Event emitted when switch is focused out.\n */\n @Event()\n focusedOut: EventEmitter<void>;\n\n @State()\n isFocus: boolean = false;\n\n handleClick = () => {\n if (!this.disabled) {\n this.active = !this.active;\n this.valueChanged.emit(this.active);\n }\n };\n\n handleFocus = () => {\n if (!this.disabled) {\n this.isFocus = true;\n this.focusedOn.emit();\n }\n };\n\n handleBlur = () => {\n if (!this.disabled) {\n this.focusedOut.emit();\n this.isFocus = false;\n }\n };\n\n render() {\n return (\n <Host>\n <div\n class={{\n 'outline-none': true,\n 'flex items-center space-x-12': !!this.label && this.type === SulaSwitchType.Default,\n 'flex items-center justify-between bg-surface-on-body rounded-md w-[280px] min-h-[85px] px-24 py-16': this.type === SulaSwitchType.List,\n 'hover:bg-states-empty-bg-hover active:bg-states-empty-bg-pressed cursor-pointer': this.type === SulaSwitchType.List && !this.disabled,\n 'container-focus': this.isFocus && this.type === SulaSwitchType.List,\n }}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n onClick={this.handleClick}\n tabIndex={0}\n >\n {this.type === SulaSwitchType.List && (\n <div class=\"flex flex-col flex-1 mr-16 overflow-hidden\">\n {!!this.label && <label class=\"text-text-primary font-bold text-base cursor-pointer break-words\">{this.label}</label>}\n {!!this.subTitle && <span class=\"text-text-secondary text-base break-words\">{this.subTitle}</span>}\n </div>\n )}\n <div\n class={{\n 'switch-container w-56 h-32 flex items-center rounded-xxl p-2 outline-none': true,\n 'switch-on bg-brand-primary justify-end': this.active,\n 'switch-off bg-neutral-neutral-3 justify-start': !this.active,\n 'cursor-not-allowed bg-states-bg-disabled': this.disabled,\n 'switch-focus': this.isFocus && this.type === SulaSwitchType.Default,\n }}\n tabIndex={0}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n >\n <div\n class={{\n 'switch-thumb w-[28px] h-[28px] rounded-full flex justify-center items-center': true,\n 'bg-negative-negative-1': !this.disabled,\n 'bg-states-bg-disabled shadow-md': this.disabled,\n }}\n >\n <div\n class={{\n 'switch-indicator rounded-full': true,\n 'switch-indicator-on w-12 h-12 bg-brand-primary': this.active,\n 'switch-indicator-off w-[10px] h-4 bg-neutral-neutral-4': !this.active,\n 'shadow-sm bg-states-bg-disabled': this.disabled,\n }}\n ></div>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n","export enum SulaTagSize {\n Small = 'small',\n Default = 'default',\n}\n\nexport enum SulaTagIconStatus {\n Success = 'success',\n Warning = 'warning',\n Error = 'error',\n Info = 'info',\n}\n\nexport enum SulaTagAppearance {\n Brand = 'brand',\n Bordered = 'bordered',\n LightBlue = 'light-blue', \n LightBrand = 'light-brand',\n Negative = 'negative',\n OpacityGrey = 'opacity-grey',\n OpacityWhite = 'opacity-white',\n}\n\nexport enum SulaTagFontWeight {\n Normal = 'normal',\n Bold = 'bold',\n}\n",":host {\n display: block;\n}\n","import { Component, Host, Prop, h } from '@stencil/core';\nimport { SulaTagAppearance, SulaTagFontWeight, SulaTagIconStatus, SulaTagSize } from './model/sula-tag.model';\n\n@Component({\n tag: 'sula-tag',\n styleUrl: 'sula-tag.scss',\n shadow: true,\n})\nexport class SulaTag {\n /**\n * Tag label\n */\n @Prop({ mutable: true })\n label: string = '';\n\n /**\n * Tag icon\n */\n @Prop({ mutable: true })\n icon: string = '';\n\n /**\n * Tag icon status\n */\n @Prop({ mutable: true })\n iconStatus: SulaTagIconStatus = SulaTagIconStatus.Success;\n\n /**\n * Tag size\n */\n @Prop({ mutable: true })\n size: SulaTagSize = SulaTagSize.Default;\n\n /**\n * Tag appearance\n */\n @Prop({ mutable: true })\n appearance: SulaTagAppearance = SulaTagAppearance.Bordered;\n\n /**\n * Tag font weight\n */\n @Prop({ mutable: true })\n fontWeight: SulaTagFontWeight = SulaTagFontWeight.Normal;\n\n getSizeClass() {\n const sizeStyles = {\n [SulaTagSize.Small]: 'px-8 py-4',\n [SulaTagSize.Default]: 'px-12 py-8',\n };\n\n return sizeStyles[this.size];\n }\n\n getAppearanceClass() {\n const appearanceStyles = {\n [SulaTagAppearance.Brand]: 'bg-brand-primary',\n [SulaTagAppearance.Bordered]: 'border-line-general border bg-transparent',\n [SulaTagAppearance.LightBlue]: 'bg-surface-on-body-blue',\n [SulaTagAppearance.LightBrand]: 'bg-surface-on-body-brand',\n [SulaTagAppearance.Negative]: 'bg-negative-negative-1',\n [SulaTagAppearance.OpacityGrey]: 'bg-opacity-on-body',\n [SulaTagAppearance.OpacityWhite]: 'bg-opacity-body',\n };\n return appearanceStyles[this.appearance];\n }\n\n getTextColorClass() {\n if (this.appearance === SulaTagAppearance.Brand) {\n return 'text-negative-negative-1';\n } else if (this.appearance === SulaTagAppearance.Negative) {\n return 'text-negative-negative-2';\n }\n\n return 'text-text-primary';\n }\n\n getTextWeightClass() {\n const fontWeightStyles = {\n [SulaTagFontWeight.Bold]: 'font-bold',\n [SulaTagFontWeight.Normal]: 'font-normal',\n };\n return fontWeightStyles[this.fontWeight];\n }\n\n getIconStatusClass() {\n const iconStatusStyles = {\n [SulaTagIconStatus.Success]: 'bg-feedback-success',\n [SulaTagIconStatus.Warning]: 'bg-feedback-alert',\n [SulaTagIconStatus.Error]: 'bg-feedback-error',\n [SulaTagIconStatus.Info]: 'bg-feedback-informational',\n };\n return iconStatusStyles[this.iconStatus];\n }\n\n render() {\n return (\n <Host>\n <div\n class={{\n 'flex items-center rounded-xxl w-fit': true,\n [this.getSizeClass()]: true,\n [this.getAppearanceClass()]: true,\n }}\n >\n {this.icon && (\n <div\n class={{\n 'flex justify-center items-center mr-8 rounded-full leading-4 px-2 py-1': true,\n [this.getIconStatusClass()]: true,\n }}\n >\n <sula-icon icon={this.icon} custom-class=\"text-base text-negative-negative-1 leading-4\"></sula-icon>\n </div>\n )}\n <span\n class={{\n 'text-base leading-4': true,\n [this.getTextColorClass()]: true,\n [this.getTextWeightClass()]: true,\n }}\n >\n {this.label}\n </span>\n </div>\n </Host>\n );\n }\n}\n","export enum SulaTextareaStatus {\n Default = 'default',\n Error = 'error',\n}\n",":host {\n display: block;\n width: 100%;\n}\n\n.textarea-focus {\n outline: 2px solid var(--color-feedback-informational) !important;\n outline-offset: 2px !important;\n}\n\n.textarea-error {\n outline: 2px solid var(--color-feedback-error) !important;\n outline-offset: 2px !important;\n}\n\n.active-label {\n width: calc(100% - 3rem);\n}\n\n.from-down {\n animation: from-down 0.2s ease-in-out;\n}\n\n.from-up {\n animation: from-up 0.2s ease-in-out;\n}\n\n@keyframes from-down {\n from {\n transform: translateY(75%);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n@keyframes from-up {\n from {\n transform: translateY(-75%);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n","import { Component, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { SulaTextareaStatus } from './model/sula-textarea.model';\n\n@Component({\n tag: 'sula-textarea',\n styleUrl: 'sula-textarea.scss',\n shadow: true,\n})\nexport class SulaTextarea {\n /**\n * Value for the textarea.\n */\n @Prop({ mutable: true })\n value?: string;\n\n /**\n * The textarea status\n */\n @Prop({ mutable: true }) status: SulaTextareaStatus = SulaTextareaStatus.Default;\n\n /**\n * The textarea label\n */\n @Prop() label: string;\n\n /**\n * The textarea placeholder\n */\n @Prop() placeholder: string;\n\n /**\n * The textarea is disabled\n */\n @Prop({ mutable: true }) disabled: boolean;\n\n /**\n * The help text for textarea\n */\n @Prop() helpText?: string;\n\n /**\n * The textarea max length\n */\n @Prop() maxLength?: number;\n\n /**\n * The textarea rows (height)\n */\n @Prop() rows: number = 4;\n\n /**\n * Event emitted when textarea value changes.\n */\n @Event()\n valueChanged: EventEmitter<string>;\n\n /**\n * Event emitted when textarea is focused.\n */\n @Event()\n focusedOn: EventEmitter<void>;\n\n /**\n * Event emitted when textarea is focused out.\n */\n @Event()\n focusedOut: EventEmitter<void>;\n\n @State()\n isActive = false;\n\n @State()\n textValue: string = '';\n\n @State()\n textareaIsFocused = false;\n\n @State()\n labelPadding: number = 6;\n\n @Watch('value')\n watchValueHandler(newValue: string) {\n this.textValue = newValue;\n\n if (this.textareaElement && this.textareaElement.value !== newValue) {\n const cursorPosition = this.textareaElement.selectionStart;\n this.textareaElement.value = newValue || '';\n\n if (this.textareaIsFocused && cursorPosition !== null) {\n const newPosition = Math.min(cursorPosition, (newValue || '').length);\n this.textareaElement.setSelectionRange(newPosition, newPosition);\n }\n }\n\n if (newValue && newValue.trim().length > 0) {\n this.setLabelUp();\n } else if (!this.textareaIsFocused) {\n this.setLabelDown();\n }\n }\n\n textareaElement: HTMLTextAreaElement;\n\n node?: HTMLElement;\n\n activeLabelElement: HTMLLabelElement;\n labelElement: HTMLLabelElement;\n\n @Listen('click', { target: 'document' })\n handleClick(event: Event) {\n if (!this.node || !this.textareaIsFocused) return;\n\n const clickInside = this.node.contains(event.target as Node);\n\n if (!clickInside && (!this.textValue || this.textValue.trim().length === 0)) {\n this.setLabelDown();\n this.focusedOut.emit();\n this.textareaIsFocused = false;\n }\n }\n\n focusOnTextarea() {\n setTimeout(() => {\n this.textareaElement.focus();\n }, 0);\n }\n\n componentWillLoad() {\n if (this.value && this.value.trim().length > 0) {\n this.textValue = this.value;\n this.isActive = true;\n this.updateLabelPadding();\n }\n }\n\n componentDidLoad() {\n if (this.value && this.value.trim().length > 0) {\n this.changeElementsStyle();\n }\n }\n\n setLabelUp() {\n if (!this.isActive) {\n this.isActive = true;\n }\n this.changeElementsStyle();\n this.updateLabelPadding();\n }\n\n setLabelDown() {\n if (this.isActive && (!this.textValue || this.textValue.trim().length === 0)) {\n this.isActive = false;\n }\n this.changeElementsStyle();\n }\n\n updateLabelPadding() {\n setTimeout(() => {\n if (this.activeLabelElement) {\n const labelHeight = this.activeLabelElement.offsetHeight;\n\n this.labelPadding = labelHeight;\n }\n });\n }\n\n changeElementsStyle() {\n if (!this.labelElement || !this.activeLabelElement) return;\n\n this.activeLabelElement.style.display = this.isActive ? 'flex' : 'none';\n this.labelElement.style.display = this.isActive ? 'none' : 'block';\n if (!this.isActive) {\n this.labelElement.classList.add('from-up');\n }\n }\n\n handleTextareaClick = () => {\n if (this.disabled) return;\n this.setLabelUp();\n this.focusOnTextarea();\n };\n\n handleTextareaChanges = (event: InputEvent) => {\n const newValue = (event.target as HTMLTextAreaElement).value;\n this.textValue = newValue;\n this.value = newValue;\n\n if (newValue.length > 0 || this.textareaIsFocused) {\n this.setLabelUp();\n }\n\n this.valueChanged.emit(newValue);\n };\n\n handleFocus = () => {\n if (this.disabled) return;\n\n this.setLabelUp();\n this.focusOnTextarea();\n };\n\n handleBlur = () => {\n if (!this.textValue || this.textValue.trim().length === 0) {\n this.setLabelDown();\n }\n\n this.focusedOut.emit();\n this.textareaIsFocused = false;\n };\n\n handleTextareaFocus = () => {\n this.focusedOn.emit();\n this.textareaIsFocused = true;\n this.setLabelUp();\n };\n\n render() {\n const containerHeight = this.rows * 24 + 48;\n\n return (\n <Host ref={node => (this.node = node)}>\n <div>\n <div\n id=\"textarea-container\"\n class={{\n 'relative border rounded-sm px-16 py-12 outline-none caret-brand-primary': true,\n 'textarea-focus': this.textareaIsFocused && !this.disabled && this.status === SulaTextareaStatus.Default,\n 'textarea-error': this.status === SulaTextareaStatus.Error && !this.disabled,\n 'bg-states-bg-disabled border-line-general cursor-not-allowed': this.disabled,\n 'bg-surface-body border-line-input cursor-text': !this.disabled,\n }}\n style={{ height: `${containerHeight}px` }}\n tabIndex={0}\n onFocus={this.handleFocus}\n onClick={this.handleTextareaClick}\n >\n <label\n class={{\n 'text-base top-16 left-12 absolute transition-all duration-200 ease-in-out pointer-events-none z-10 w-[85%]': true,\n 'text-text-primary': !this.disabled && (this.isActive || this.status === SulaTextareaStatus.Default),\n 'text-text-disabled': this.disabled,\n 'bg-surface-body': !this.disabled && this.isActive,\n }}\n ref={node => (this.labelElement = node)}\n >\n {this.label}\n </label>\n\n <label\n class={{\n 'absolute font-bold transition-all duration-200 ease-in-out pointer-events-none z-10 active-label hidden from-down': true,\n 'text-sm top-12 left-16': this.isActive,\n 'text-text-primary': !this.disabled && (this.isActive || this.status === SulaTextareaStatus.Default),\n 'text-text-disabled': this.disabled,\n 'bg-surface-body': !this.disabled && this.isActive,\n }}\n ref={node => (this.activeLabelElement = node)}\n >\n {this.label}\n </label>\n\n <textarea\n ref={node => (this.textareaElement = node)}\n placeholder={this.isActive ? this.placeholder : ''}\n rows={this.rows}\n maxLength={this.maxLength}\n disabled={this.disabled}\n class={{\n 'w-full h-full outline-none text-base bg-transparent border-none resize-none': true,\n 'text-text-primary': !this.disabled,\n 'text-text-disabled cursor-not-allowed overflow-hidden': this.disabled,\n }}\n style={{ paddingTop: this.isActive ? `${this.labelPadding}px` : '0' }}\n onInput={this.handleTextareaChanges}\n onFocus={this.handleTextareaFocus}\n onBlur={this.handleBlur}\n value={this.textValue}\n />\n </div>\n\n {(this.helpText || this.maxLength) && (\n <div class=\"flex justify-between items-center px-16 mt-4 text-sm\">\n {this.helpText && (\n <div\n id=\"textarea-help-text\"\n class={{\n 'text-text-primary': this.status === SulaTextareaStatus.Default && !this.disabled,\n 'text-feedback-error': this.status === SulaTextareaStatus.Error && !this.disabled,\n 'text-text-disabled': this.disabled,\n }}\n >\n {this.helpText}\n </div>\n )}\n {this.maxLength && (\n <div\n id=\"max-length-container\"\n class={{\n 'text-text-primary': this.status === SulaTextareaStatus.Default && !this.disabled,\n 'text-feedback-error': this.status === SulaTextareaStatus.Error && !this.disabled,\n 'text-text-disabled': this.disabled,\n }}\n >\n {this.textValue ? this.textValue.length : 0}/{this.maxLength}\n </div>\n )}\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n","export enum SulaTextfieldType {\n Text = 'text',\n Password = 'password',\n}\n\nexport enum SulaTextfieldStatus {\n Default = 'default',\n Error = 'error',\n}\n","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.VMasker = factory();\n }\n}(this, function() {\n var DIGIT = \"9\",\n ALPHA = \"A\",\n ALPHANUM = \"S\",\n BY_PASS_KEYS = [9, 16, 17, 18, 36, 37, 38, 39, 40, 91, 92, 93],\n isAllowedKeyCode = function(keyCode) {\n for (var i = 0, len = BY_PASS_KEYS.length; i < len; i++) {\n if (keyCode == BY_PASS_KEYS[i]) {\n return false;\n }\n }\n return true;\n },\n mergeMoneyOptions = function(opts) {\n opts = opts || {};\n opts = {\n delimiter: opts.delimiter || \".\",\n lastOutput: opts.lastOutput,\n precision: opts.hasOwnProperty(\"precision\") ? opts.precision : 2,\n separator: opts.separator || \",\",\n showSignal: opts.showSignal,\n suffixUnit: opts.suffixUnit && (\" \" + opts.suffixUnit.replace(/[\\s]/g,'')) || \"\",\n unit: opts.unit && (opts.unit.replace(/[\\s]/g,'') + \" \") || \"\",\n zeroCents: opts.zeroCents\n };\n opts.moneyPrecision = opts.zeroCents ? 0 : opts.precision;\n return opts;\n },\n // Fill wildcards past index in output with placeholder\n addPlaceholdersToOutput = function(output, index, placeholder) {\n for (; index < output.length; index++) {\n if(output[index] === DIGIT || output[index] === ALPHA || output[index] === ALPHANUM) {\n output[index] = placeholder;\n }\n }\n return output;\n }\n ;\n\n var VanillaMasker = function(elements) {\n this.elements = elements;\n };\n\n VanillaMasker.prototype.unbindElementToMask = function() {\n for (var i = 0, len = this.elements.length; i < len; i++) {\n this.elements[i].lastOutput = \"\";\n this.elements[i].onkeyup = false;\n this.elements[i].onkeydown = false;\n\n if (this.elements[i].value.length) {\n this.elements[i].value = this.elements[i].value.replace(/\\D/g, '');\n }\n }\n };\n\n VanillaMasker.prototype.bindElementToMask = function(maskFunction) {\n var that = this,\n onType = function(e) {\n e = e || window.event;\n var source = e.target || e.srcElement;\n\n if (isAllowedKeyCode(e.keyCode)) {\n setTimeout(function() {\n that.opts.lastOutput = source.lastOutput;\n source.value = VMasker[maskFunction](source.value, that.opts);\n source.lastOutput = source.value;\n if (source.setSelectionRange && that.opts.suffixUnit) {\n source.setSelectionRange(source.value.length, (source.value.length - that.opts.suffixUnit.length));\n }\n }, 0);\n }\n }\n ;\n for (var i = 0, len = this.elements.length; i < len; i++) {\n this.elements[i].lastOutput = \"\";\n this.elements[i].onkeyup = onType;\n if (this.elements[i].value.length) {\n this.elements[i].value = VMasker[maskFunction](this.elements[i].value, this.opts);\n }\n }\n };\n\n VanillaMasker.prototype.maskMoney = function(opts) {\n this.opts = mergeMoneyOptions(opts);\n this.bindElementToMask(\"toMoney\");\n };\n\n VanillaMasker.prototype.maskNumber = function() {\n this.opts = {};\n this.bindElementToMask(\"toNumber\");\n };\n \n VanillaMasker.prototype.maskAlphaNum = function() {\n this.opts = {};\n this.bindElementToMask(\"toAlphaNumeric\");\n };\n\n VanillaMasker.prototype.maskPattern = function(pattern) {\n this.opts = {pattern: pattern};\n this.bindElementToMask(\"toPattern\");\n };\n\n VanillaMasker.prototype.unMask = function() {\n this.unbindElementToMask();\n };\n\n var VMasker = function(el) {\n if (!el) {\n throw new Error(\"VanillaMasker: There is no element to bind.\");\n }\n var elements = (\"length\" in el) ? (el.length ? el : []) : [el];\n return new VanillaMasker(elements);\n };\n\n VMasker.toMoney = function(value, opts) {\n opts = mergeMoneyOptions(opts);\n if (opts.zeroCents) {\n opts.lastOutput = opts.lastOutput || \"\";\n var zeroMatcher = (\"(\"+ opts.separator +\"[0]{0,\"+ opts.precision +\"})\"),\n zeroRegExp = new RegExp(zeroMatcher, \"g\"),\n digitsLength = value.toString().replace(/[\\D]/g, \"\").length || 0,\n lastDigitLength = opts.lastOutput.toString().replace(/[\\D]/g, \"\").length || 0\n ;\n value = value.toString().replace(zeroRegExp, \"\");\n if (digitsLength < lastDigitLength) {\n value = value.slice(0, value.length - 1);\n }\n }\n var number = value.toString().replace(/[\\D]/g, \"\"),\n clearDelimiter = new RegExp(\"^(0|\\\\\"+ opts.delimiter +\")\"),\n clearSeparator = new RegExp(\"(\\\\\"+ opts.separator +\")$\"),\n money = number.substr(0, number.length - opts.moneyPrecision),\n masked = money.substr(0, money.length % 3),\n cents = new Array(opts.precision + 1).join(\"0\")\n ;\n money = money.substr(money.length % 3, money.length);\n for (var i = 0, len = money.length; i < len; i++) {\n if (i % 3 === 0) {\n masked += opts.delimiter;\n }\n masked += money[i];\n }\n masked = masked.replace(clearDelimiter, \"\");\n masked = masked.length ? masked : \"0\";\n var signal = \"\";\n if(opts.showSignal === true) {\n signal = value < 0 || (value.startsWith && value.startsWith('-')) ? \"-\" : \"\";\n }\n if (!opts.zeroCents) {\n var beginCents = number.length - opts.precision,\n centsValue = number.substr(beginCents, opts.precision),\n centsLength = centsValue.length,\n centsSliced = (opts.precision > centsLength) ? opts.precision : centsLength\n ;\n cents = (cents + centsValue).slice(-centsSliced);\n }\n var output = opts.unit + signal + masked + opts.separator + cents;\n return output.replace(clearSeparator, \"\") + opts.suffixUnit;\n };\n\n VMasker.toPattern = function(value, opts) {\n var pattern = (typeof opts === 'object' ? opts.pattern : opts),\n patternChars = pattern.replace(/\\W/g, ''),\n output = pattern.split(\"\"),\n values = value.toString().replace(/\\W/g, \"\"),\n charsValues = values.replace(/\\W/g, ''),\n index = 0,\n i,\n outputLength = output.length,\n placeholder = (typeof opts === 'object' ? opts.placeholder : undefined)\n ;\n \n for (i = 0; i < outputLength; i++) {\n // Reached the end of input\n if (index >= values.length) {\n if (patternChars.length == charsValues.length) {\n return output.join(\"\");\n }\n else if ((placeholder !== undefined) && (patternChars.length > charsValues.length)) {\n return addPlaceholdersToOutput(output, i, placeholder).join(\"\");\n }\n else {\n break;\n }\n }\n // Remaining chars in input\n else{\n if ((output[i] === DIGIT && values[index].match(/[0-9]/)) ||\n (output[i] === ALPHA && values[index].match(/[a-zA-Z]/)) ||\n (output[i] === ALPHANUM && values[index].match(/[0-9a-zA-Z]/))) {\n output[i] = values[index++];\n } else if (output[i] === DIGIT || output[i] === ALPHA || output[i] === ALPHANUM) {\n if(placeholder !== undefined){\n return addPlaceholdersToOutput(output, i, placeholder).join(\"\");\n }\n else{\n return output.slice(0, i).join(\"\");\n }\n }\n }\n }\n return output.join(\"\").substr(0, i);\n };\n\n VMasker.toNumber = function(value) {\n return value.toString().replace(/(?!^-)[^0-9]/g, \"\");\n };\n \n VMasker.toAlphaNumeric = function(value) {\n return value.toString().replace(/[^a-z0-9 ]+/i, \"\");\n };\n\n return VMasker;\n}));\n",":host {\n display: block;\n}\n\n.button-focus {\n outline: 2px solid var(--color-feedback-informational) !important;\n outline-offset: 2px !important;\n}\n\n.button-error {\n outline: 2px solid var(--color-feedback-error) !important;\n outline-offset: 2px !important;\n}\n\n.from-down {\n animation: from-down 0.2s ease-in-out;\n}\n\n.from-up {\n animation: from-up 0.2s ease-in-out;\n}\n\n@keyframes from-down {\n from {\n transform: translateY(75%);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n@keyframes from-up {\n from {\n transform: translateY(-75%);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n","import { Component, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { SulaTextfieldStatus, SulaTextfieldType } from './model/sula-textfield.model';\nimport VMasker from 'vanilla-masker';\n\n@Component({\n tag: 'sula-textfield',\n styleUrl: 'sula-textfield.scss',\n shadow: true,\n})\nexport class SulaTextfield {\n /**\n * Value for the input.\n */\n @Prop({ mutable: true })\n value?: string;\n\n /**\n * The textfield type\n */\n @Prop() type: SulaTextfieldType = SulaTextfieldType.Text;\n\n /**\n * The textfield status\n */\n @Prop({ mutable: true }) status: SulaTextfieldStatus = SulaTextfieldStatus.Default;\n\n /**\n * The textfield label\n */\n @Prop() label: string;\n\n /**\n * The textfield placeholder\n */\n @Prop() placeholder: string;\n\n /**\n * The textfield is disabled\n */\n @Prop({ mutable: true }) disabled: boolean;\n\n /**\n * The help text for textfield\n */\n @Prop() helpText?: string;\n\n /**\n * The textfield max length\n */\n @Prop() maxLength?: number;\n\n /**\n * The textfield icon\n */\n @Prop() icon?: string;\n\n /**\n * Event emitted when input value changes.\n */\n @Event()\n valueChanged: EventEmitter<string>;\n\n /**\n * The textfield mask pattern\n * The mask pattern should follow the VMasker pattern format\n * More info: https://github.com/vanilla-masker/vanilla-masker?tab=readme-ov-file#custom-pattern\n */\n @Prop()\n maskPattern?: string;\n\n /**\n * Event emitted when input is focused.\n */\n @Event()\n focusedOn: EventEmitter<void>;\n\n /**\n * Event emitted when input is focused out.\n */\n @Event()\n focusedOut: EventEmitter<void>;\n\n @State()\n inputIsOpen = false;\n\n @State()\n textValue: string = '';\n\n @State()\n showPassword = false;\n\n @State()\n inputIsFocused = false;\n\n @Watch('value')\n watchValueHandler(newValue: string) {\n this.textValue = newValue;\n\n if (this.inputElement && this.inputElement.value !== newValue) {\n const cursorPosition = this.inputElement.selectionStart;\n this.inputElement.value = newValue || '';\n\n if (this.inputIsFocused && cursorPosition !== null) {\n const newPosition = Math.min(cursorPosition, (newValue || '').length);\n this.inputElement.setSelectionRange(newPosition, newPosition);\n }\n }\n\n if (newValue && newValue.trim().length > 0) {\n this.inputIsOpen = true;\n this.changeElementsStyle();\n } else if (!this.inputIsFocused) {\n this.inputIsOpen = false;\n this.changeElementsStyle();\n }\n }\n\n inputContainer: HTMLDivElement;\n inputElement: HTMLInputElement;\n labelElement: HTMLDivElement;\n\n node?: HTMLElement;\n\n @Listen('click', { target: 'document' })\n handleClick(event: Event) {\n if (!this.node || !this.inputIsFocused) return;\n\n const clickInside = this.node.contains(event.target as Node);\n\n if (!clickInside) {\n this.toggleOptions(false);\n this.focusedOut.emit();\n this.inputIsFocused = false;\n }\n }\n\n componentWillLoad() {\n if (this.value && this.value.trim().length > 0) {\n this.textValue = this.value;\n this.inputIsOpen = true;\n }\n }\n\n componentDidLoad() {\n if (this.textValue && this.textValue.trim().length > 0) {\n this.changeElementsStyle();\n }\n\n if (this.maskPattern && this.inputElement) {\n this.handleInputMask();\n }\n }\n\n handleInputClick = () => {\n this.toggleOptions(true);\n };\n\n toggleOptions(inputIsOpen: boolean) {\n if ((this.inputIsOpen && this.textValue && this.textValue.length > 0) || this.disabled) return;\n\n this.inputIsOpen = inputIsOpen;\n this.changeElementsStyle();\n this.inputElement.focus();\n }\n\n changeElementsStyle() {\n if (!this.inputContainer || !this.labelElement) return;\n\n this.inputContainer.style.display = this.inputIsOpen ? 'flex' : 'none';\n this.labelElement.style.display = this.inputIsOpen ? 'none' : 'block';\n if (!this.inputIsOpen) {\n this.labelElement.classList.add('from-up');\n }\n }\n\n handleInputChanges = (event: InputEvent) => {\n if (this.maskPattern && this.inputElement) {\n this.handleInputMask();\n }\n const newValue = (event.target as HTMLInputElement).value;\n this.textValue = newValue;\n this.value = newValue;\n\n this.valueChanged.emit(newValue);\n };\n\n handleFocus = () => {\n if (this.disabled) return;\n this.toggleOptions(true);\n this.inputElement.focus();\n };\n\n handleBlur = () => {\n this.toggleOptions(false);\n\n this.focusedOut.emit();\n this.inputIsFocused = false;\n };\n\n handleInputFocus = () => {\n this.focusedOn.emit();\n this.inputIsFocused = true;\n };\n\n handleIconClick = (event: MouseEvent) => {\n if (this.type === SulaTextfieldType.Password) {\n event.stopPropagation();\n this.handlePasswordIconClicked();\n }\n };\n\n handleInputMask() {\n VMasker(this.inputElement).maskPattern(this.maskPattern);\n }\n\n handlePasswordIconClicked() {\n const cursorPosition = this.inputElement.selectionStart;\n const inputValue = this.inputElement.value;\n const inputType = this.showPassword ? SulaTextfieldType.Password : SulaTextfieldType.Text;\n\n this.inputElement.setAttribute('type', inputType);\n this.showPassword = !this.showPassword;\n\n setTimeout(() => {\n this.inputElement.value = inputValue;\n\n this.inputElement.setSelectionRange(cursorPosition, cursorPosition);\n }, 0);\n }\n\n getInputIcon() {\n if (this.type === SulaTextfieldType.Password) {\n return this.showPassword ? 'ph ph-eye' : 'ph ph-eye-slash';\n }\n\n return this.icon;\n }\n\n render() {\n return (\n <Host ref={node => (this.node = node)}>\n <div>\n <div\n id=\"button-container\"\n class={{\n 'flex items-center border rounded-sm px-16 outline-none h-[72px] caret-brand-primary': true,\n 'flex-row justify-between': !!this.icon || this.type === SulaTextfieldType.Password,\n 'button-focus': this.inputIsFocused && !this.disabled && this.status === SulaTextfieldStatus.Default,\n 'button-error': this.status === SulaTextfieldStatus.Error && !this.disabled,\n 'bg-states-bg-disabled border-line-general cursor-not-allowed': this.disabled,\n 'bg-surface-body border-line-input cursor-pointer': !this.disabled,\n }}\n tabIndex={0}\n onFocus={this.handleFocus}\n onClick={this.handleInputClick}\n >\n {!this.disabled && (\n <div class={{ 'hidden flex-col w-full': true, 'pr-12': !!this.icon }} ref={node => (this.inputContainer = node)}>\n <label class=\"font-bold text-sm text-text-primary from-down\">{this.label}</label>\n <input\n type={this.type}\n ref={node => (this.inputElement = node)}\n placeholder={this.placeholder}\n class=\"outline-none text-base text-text-primary bg-transparent\"\n onInput={this.handleInputChanges}\n onFocus={this.handleInputFocus}\n value={this.textValue}\n />\n </div>\n )}\n\n <div\n id=\"textfield-label\"\n class={{ 'text-base flex items-center': true, 'text-text-primary': !this.disabled, 'text-text-disabled': this.disabled }}\n ref={node => (this.labelElement = node)}\n >\n {this.label}\n </div>\n\n {(!!this.icon || this.type === SulaTextfieldType.Password) && (\n <div class=\"flex items-center justify-center\" onClick={this.handleIconClick}>\n <sula-icon icon={this.getInputIcon()} customClass={`text-2xl ${this.disabled ? 'text-icon-disabled' : 'text-icon-primary'}`} />\n </div>\n )}\n </div>\n\n {(this.helpText || this.maxLength) && !this.disabled && (\n <div class=\"flex justify-between items-center px-16 mt-4 text-sm\">\n {this.helpText && (\n <div\n id=\"textfield-help-text\"\n class={{ 'text-text-primary': this.status === SulaTextfieldStatus.Default, 'text-feedback-error': this.status === SulaTextfieldStatus.Error }}\n >\n {this.helpText}\n </div>\n )}\n {this.maxLength && (\n <div\n id=\"max-length-container\"\n class={{ 'text-text-primary': this.status === SulaTextfieldStatus.Default, 'text-feedback-error': this.status === SulaTextfieldStatus.Error }}\n >\n {this.textValue ? this.textValue.length : 0}/{this.maxLength}\n </div>\n )}\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n","export enum SulaTilesType {\n Rounded = 'rounded',\n Square = 'square',\n}\n\nexport enum SulaTilesSize {\n Default = 'default',\n Large = 'large',\n}\n",":host {\n display: block;\n}\n","import { Component, Event, EventEmitter, Host, Prop, h } from '@stencil/core';\nimport { SulaTilesSize, SulaTilesType } from './model/sula-tiles.model';\n\n@Component({\n tag: 'sula-tiles',\n styleUrl: 'sula-tiles.scss',\n shadow: true,\n})\nexport class SulaTiles {\n /**\n * Tiles type\n */\n @Prop() type: SulaTilesType = SulaTilesType.Rounded;\n\n /**\n * Tiles size\n */\n @Prop() size: SulaTilesSize = SulaTilesSize.Default;\n\n /**\n * Use ellipsis on tiles text\n */\n @Prop() ellipsis: boolean = false;\n\n /**\n * Tiles icon\n */\n @Prop() icon: string = '';\n\n /**\n * Tiles text\n */\n @Prop() text: string = '';\n\n /**\n * Tiles subtext\n */\n @Prop() subText: string = '';\n\n /**\n * Tiles is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Event emitted when tile is clicked.\n * @note If tile is disabled event won't be emitted\n */\n @Event()\n tileClicked: EventEmitter<void>;\n\n private readonly TILE_SIZES = {\n [SulaTilesSize.Default]: 'w-80 h-80',\n [SulaTilesSize.Large]: 'w-120 h-120',\n } as const;\n\n private readonly BASE_CLASSES = {\n container: 'flex w-[167px]',\n roundedContainer: 'flex-col justify-center items-center',\n squareContainer: 'rounded-md p-20',\n interactiveBackground:\n 'bg-surface-on-body hover:bg-states-empty-bg-hover active:bg-states-empty-bg-pressed outline-2 outline-offset-2 outline-feedback-informational cursor-pointer',\n disabledBackground: 'bg-states-bg-disabled',\n iconContainer: 'flex justify-center items-center leading-4',\n roundedIcon: 'rounded-full',\n textContainer: 'flex',\n ellipsisText: 'truncate overflow-hidden whitespace-nowrap',\n } as const;\n\n private get isRounded(): boolean {\n return this.type === SulaTilesType.Rounded;\n }\n\n private get isSquare(): boolean {\n return this.type === SulaTilesType.Square;\n }\n\n private get hasSubText(): boolean {\n return !!this.subText;\n }\n\n private get isInteractive(): boolean {\n return !this.disabled;\n }\n\n private getRoundedTileSize(): string {\n return this.TILE_SIZES[this.size] || this.TILE_SIZES[SulaTilesSize.Default];\n }\n\n private getContainerClasses(): Record<string, boolean> {\n return {\n [this.BASE_CLASSES.container]: true,\n [this.BASE_CLASSES.roundedContainer]: this.isRounded,\n [this.BASE_CLASSES.squareContainer]: this.isSquare,\n [this.BASE_CLASSES.interactiveBackground]: this.isSquare && this.isInteractive,\n [this.BASE_CLASSES.disabledBackground]: this.disabled && this.isSquare,\n 'items-center': this.isSquare && !this.hasSubText,\n 'flex-col items-start justify-end': this.isSquare && this.hasSubText,\n };\n }\n\n private getIconContainerClasses(): Record<string, boolean> {\n return {\n [this.BASE_CLASSES.iconContainer]: true,\n [this.BASE_CLASSES.roundedIcon]: this.isRounded,\n [this.BASE_CLASSES.interactiveBackground]: this.isRounded && this.isInteractive,\n [this.BASE_CLASSES.disabledBackground]: this.isRounded && this.disabled,\n [this.getRoundedTileSize()]: this.isRounded,\n };\n }\n\n private getTextContainerClasses(): Record<string, boolean> {\n return {\n [this.BASE_CLASSES.textContainer]: true,\n 'mt-8': this.isRounded,\n 'ml-12': this.isSquare && !this.hasSubText,\n 'flex-col mt-36 space-y-4': this.isSquare && this.hasSubText,\n 'max-w-full': this.ellipsis,\n };\n }\n\n private getTextClasses(isPrimary: boolean = true): Record<string, boolean> {\n return {\n 'text-base leading-4': true,\n 'font-bold': isPrimary,\n 'text-text-primary': isPrimary && this.isInteractive,\n 'text-text-secondary': !isPrimary && this.isInteractive,\n 'text-icon-disabled': this.disabled,\n [this.BASE_CLASSES.ellipsisText]: this.ellipsis,\n 'whitespace-normal': !this.ellipsis,\n };\n }\n\n private getIconClasses(): string {\n const baseClass = 'text-3xl';\n const colorClass = this.disabled ? 'text-icon-disabled' : 'text-icon-primary';\n return `${baseClass} ${colorClass}`;\n }\n\n private getTabIndex(condition: boolean): number | null {\n return condition && this.isInteractive ? 0 : null;\n }\n\n private renderIcon() {\n return (\n <div class={this.getIconContainerClasses()} tabIndex={this.getTabIndex(this.isRounded)}>\n <sula-icon icon={this.icon} customClass={this.getIconClasses()} />\n </div>\n );\n }\n\n private renderText() {\n return (\n <div class={this.getTextContainerClasses()}>\n <span class={this.getTextClasses(true)} title={this.ellipsis ? this.text : undefined}>\n {this.text}\n </span>\n {this.hasSubText && (\n <span class={this.getTextClasses(false)} title={this.ellipsis ? this.subText : undefined}>\n {this.subText}\n </span>\n )}\n </div>\n );\n }\n\n handleClick = () => {\n if (this.disabled) return;\n\n this.tileClicked.emit();\n };\n\n render() {\n return (\n <Host>\n <div class={this.getContainerClasses()} tabIndex={this.getTabIndex(this.isSquare)} onClick={this.handleClick}>\n {this.renderIcon()}\n {this.renderText()}\n </div>\n </Host>\n );\n }\n}\n","export interface SulaTimelineListItem {\n weekdayText?: SulaTimelineListItemWeekdayText;\n iconStatus?: SulaTimelineListItemIconStatus;\n title: string;\n message?: string;\n hasLink?: boolean;\n}\n\nexport interface SulaTimelineListItemWeekdayText {\n weekday: string;\n day: number;\n}\n\nexport enum SulaTimelineListItemIconStatus {\n Success = 'success',\n Error = 'error',\n Warning = 'warning',\n}\n",":host {\n display: block;\n}\n","import { Component, Event, EventEmitter, Host, Prop, h } from '@stencil/core';\nimport { SulaTimelineListItem, SulaTimelineListItemIconStatus } from './model/sula-timeline-list.model';\n\n@Component({\n tag: 'sula-timeline-list',\n styleUrl: 'sula-timeline-list.scss',\n shadow: true,\n})\nexport class SulaTimelineList {\n /**\n * Timeline list. (Can be use with weekday text or icon with status)\n */\n @Prop({ mutable: true })\n sulaTimelineList: SulaTimelineListItem[] = [];\n\n /**\n * Event emitted when item is clicked.\n */\n @Event()\n itemClicked: EventEmitter<SulaTimelineListItem>;\n\n handleItemClick = (item: SulaTimelineListItem) => {\n if (!item.hasLink) return;\n this.itemClicked.emit(item);\n };\n\n getIconBackgroundColorByStatus(status: SulaTimelineListItemIconStatus) {\n const iconColorByStatus = {\n [SulaTimelineListItemIconStatus.Success]: 'bg-surface-on-body-feedback-success',\n [SulaTimelineListItemIconStatus.Warning]: 'bg-surface-on-body-feedback-alert',\n [SulaTimelineListItemIconStatus.Error]: 'bg-surface-on-body-feedback-error',\n };\n\n return iconColorByStatus[status];\n }\n\n getIconByStatus(status: SulaTimelineListItemIconStatus) {\n const iconByStatus = {\n [SulaTimelineListItemIconStatus.Success]: 'ph ph-check-circle',\n [SulaTimelineListItemIconStatus.Warning]: 'ph ph-warning',\n [SulaTimelineListItemIconStatus.Error]: 'ph ph-warning-circle',\n };\n\n return iconByStatus[status];\n }\n\n getIconColorByStatus(status: SulaTimelineListItemIconStatus) {\n const iconByStatus = {\n [SulaTimelineListItemIconStatus.Success]: 'text-feedback-success',\n [SulaTimelineListItemIconStatus.Warning]: 'text-feedback-alert',\n [SulaTimelineListItemIconStatus.Error]: 'text-feedback-error',\n };\n\n return iconByStatus[status];\n }\n\n render() {\n return (\n <Host>\n <div class=\"flex flex-col bg-surface-on-body px-24 py-32 w-fit rounded-md\">\n {this.sulaTimelineList.map((item, index) => {\n const isLastItem = index === this.sulaTimelineList.length - 1;\n\n return (\n <div\n class={{\n 'relative timeline-item': true,\n 'cursor-pointer group': item.hasLink,\n }}\n onClick={() => this.handleItemClick(item)}\n >\n <div class=\"flex space-x-24 items-center justify-between flex-row w-full\">\n <div class=\"relative flex flex-row space-x-24 items-center\">\n <div class=\"relative\">\n <div\n class={{\n 'rounded-full h-56 w-56 bg-surface-body flex justify-center items-center relative z-10': true,\n 'p-6': !!item.iconStatus,\n }}\n >\n {item.weekdayText && (\n <div class=\"flex flex-col justify-center items-center space-y-4\">\n <span class=\"text-text-secondary text-xs leading-3\">{item.weekdayText.weekday}</span>\n <span class=\"text-xl leading-5 text-text-primary\">{item.weekdayText.day}</span>\n </div>\n )}\n\n {item.iconStatus && (\n <div\n class={{\n 'flex justify-center items-center w-44 h-44 rounded-full': true,\n [this.getIconBackgroundColorByStatus(item.iconStatus)]: true,\n }}\n >\n <div class=\"flex justify-center items-center leading-6 w-44\">\n <sula-icon icon={this.getIconByStatus(item.iconStatus)} customClass={`${this.getIconColorByStatus(item.iconStatus)} text-2xl`}></sula-icon>\n </div>\n </div>\n )}\n </div>\n </div>\n\n <div class=\"flex flex-col\">\n <span class=\"text-text-primary font-bold text-base leading-4\">{item.title}</span>\n {item.message && <span class=\"text-text-secondary text-base leading-4 mt-4\">{item.message}</span>}\n </div>\n </div>\n\n {item.hasLink && (\n <div\n class={{\n 'px-[6px] py-2 rounded-full leading-6 flex items-center justify-center margin-left': true,\n 'group-hover:bg-states-empty-bg-hover transition': item.hasLink,\n }}\n >\n <sula-icon icon=\"ph ph-caret-right\" customClass=\"text-2xl text-text-primary\"></sula-icon>\n </div>\n )}\n </div>\n\n {!isLastItem && <div class=\"absolute bg-surface-body left-[28px] top-56 w-2 h-full\"></div>}\n\n {!isLastItem && <div class=\"h-24\"></div>}\n </div>\n );\n })}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtqhBD,MAAMgoD,gBAAgB;;MCUTC,aAAU;EALvB,WAAAvvF,CAAAC;;;;eAWUC,KAAAC,OAAuByD,eAAexD;AA4D/C;EAtDC,gBAAAwB;IACE1B,KAAKsvF;;EAGP,oBAAAC;IACE,IAAIvvF,KAAKwvF,mBAAmB;MAC1BxvF,KAAKwvF,kBAAkBjxE;;;EAI3B,UAAA+wE;IACE,KAAKtvF,KAAKyvF,cAAc;IAExB;MACE,MAAM93E,IAAgB+3E;MAEtB1vF,KAAKwvF,oBAAoBpoD,OAAOvsB,cAAc;QAC5CqI,WAAWljB,KAAKyvF;QAChBztE,UAAU;QACVD,MAAM;QACND,UAAU;QACVnK,eAAeA;;MAGjB3X,KAAKwvF,kBAAkB5nE,SAAS;MAChC,OAAOxN;MACPiiC,QAAQjiC,MAAM,qCAAqCA;;;EAIvD,aAAAu1E;IACE,MAAMC,IAAQ;MACZC,OAAO;MACPC,QAAQ;MACRC,OAAO;;IAET,OAAO;MAAEv0E,OAAOo0E,EAAM5vF,KAAKC;MAAOwb,QAAQm0E,EAAM5vF,KAAKC;;;EAGvD,MAAAE;IACE,OAAMqb,OAAEA,GAAKC,QAAEA,KAAWzb,KAAK2vF;IAE/B,OACEvvF,IAACC,MAAI;MAAAC,KAAA;OACHF,IAAA;MAAAE,KAAA;MACE8C,KAAKC,KAAOrD,KAAKyvF,eAAepsF;MAChCqM,OAAO;QACL8L,OAAOA;QACPC,QAAQA;;;;;;;;;;;ACtEpB,MAAMu0E,wBAAwB;;MCQjBC,qBAAkB;EAL/B,WAAAnwF,CAAAC;;;;;eAUEC,KAAKmH,QAAuB;;;eAM5BnH,KAASiE,YAAG;IAQZjE,KAAAkE,cAAeuD;MACbzH,KAAKkwF,aAAa9rF,KAAKqD;AAAK;AAsB/B;EAnBC,MAAAtH;IACE,OACEC,IAACC,MAAI;MAAAC,KAAA;OACHF,IAAA;MAAAE,KAAA;MACEC,OAAO;QACL,iHAAiH;QACjH,UAAUP,KAAKiE;QACf,UAAUjE,KAAKiE;;OAGhBjE,KAAKmH,MAAMgpF,KAAI1oF,KACdrH,IAAA;MAAIG,OAAM;MAAyGD,KAAKmH,EAAKlC;MAAII,SAAS,MAAM3F,KAAKkE,YAAYuD;OAC9JA,EAAKmB;;;;;;AC3CpB,IAAYwnF;;CAAZ,SAAYA;EACVA,EAAA;EACAA,EAAA;EACAA,EAAA;EACAA,EAAA;EACAA,EAAA;AACD,EAND,CAAYA,0DAMX;;AAED,IAAYC;;CAAZ,SAAYA;EACVA,EAAA;EACAA,EAAA;EACAA,EAAA;AACD,EAJD,CAAYA,gDAIX;;ACZD,MAAMC,qBAAqB;;MCQdC,kBAAe;EAL5B,WAAAzwF,CAAAC;;;;eAUEC,KAAA6D,aAAwCusF,0BAA0BtsF;;;eAMlE9D,KAAA01E,QAA8B2a,qBAAqB/uF;;;eAwBnDtB,KAAYwwF,eAAY;AAuEzB;EApEC,gBAAAC,CAAiB17D;IACf/0B,KAAK0wF,eAAe37D;;EAGtB,iBAAApsB;IACE3I,KAAK0wF,eAAe1wF,KAAK2wF;;EAG3B,cAAAD,CAAehoF;IACb,IAAIA,IAAQ,GAAG;MACb1I,KAAK2wF,WAAW;MAChBt0C,QAAQC,KAAK;WACR,IAAI5zC,IAAQ,KAAK;MACtB1I,KAAK2wF,WAAW;MAChBt0C,QAAQC,KAAK;;;EAIjB,mBAAAs0C;IACE,MAAMj5C,IAAS;MACb,CAACy4C,0BAA0BtsF,UAAU;MACrC,CAACssF,0BAA0B5rF,YAAY;MACvC,CAAC4rF,0BAA0BS,YAAY;MACvC,CAACT,0BAA0BntF,UAAU;MACrC,CAACmtF,0BAA0BrtF,QAAQ;;IAGrC,OAAO40C,EAAO33C,KAAK6D;;EAGrB,0BAAAitF;IACE,IAAI9wF,KAAK01E,UAAU2a,qBAAqB/uF,SAAS;MAC/C,OAAOtB,KAAKwwF,gBAAgBpwF,IAAM;QAAAG,OAAM;SAAwDP,KAAK2wF,UAAQ;WACxG,IAAI3wF,KAAK01E,UAAU2a,qBAAqBptF,SAAS;MACtD,OACE7C,IAAA;QAAKG,OAAM;SACTH,IAAW;QAAAW,MAAK;QAAqBoC,aAAY;;WAGhD;MACL,OACE/C,IAAA;QAAKG,OAAM;SACTH,IAAW;QAAAW,MAAK;QAAiBoC,aAAY;;;;EAMrD,MAAAhD;IACE,OACEC,IAACC,MAAI;MAAAC,KAAA;OACHF,IAAK;MAAAE,KAAA;MAAAC,OAAM;OACTH,IAAK;MAAAE,KAAA;MAAAC,OAAM;OACTH,IAAA;MAAAE,KAAA;MAAOC,OAAM;OAA8CP,KAAK+wF,WAC/D/wF,KAAK8wF,+BAER1wF,IAAA;MAAAE,KAAA;MACEoP,OAAO;QAAE8L,OAAO,GAAGxb,KAAK2wF;;MACxBpwF,OAAO;QACL,oBAAoB;QACpB,CAACP,KAAK4wF,wBAAwB;;QAGlCxwF,IAAO;MAAAE,KAAA;MAAAC,OAAM;OAA8CP,KAAKgxF;;;;;;;;;;;AC7G1E,MAAMC,qBAAqB;;MCOdC,kBAAe;EAL5B,WAAApxF,CAAAC;;;;;;;eAS2BC,KAAOiG,UAAY;;;eAKnBjG,KAAK0G,QAAW;;;eAKhB1G,KAAQqF,WAAY;IAqB7CrF,KAAYmxF,eAAY;IAExBnxF,KAAWqG,cAAG;MACZ,IAAIrG,KAAKqF,UAAU;MAEnBrF,KAAKmxF,eAAe;MACpBnxF,KAAKsG,UAAUlC;AAAM;IAGvBpE,KAAcoxF,iBAAG;MACf,IAAIpxF,KAAKqF,UAAU;MAEnBrF,KAAKmxF,eAAe;MACpBnxF,KAAKwG,WAAWpC;AAAM;IAGxBpE,KAAWkE,cAAG;MACZ,IAAIlE,KAAKqF,UAAU;MACnBrF,KAAKiG,WAAWjG,KAAKiG;MACrBjG,KAAKoG,aAAahC,KAAKpE,KAAKiG;AAAQ;AA2BvC;EAxBC,MAAA9F;IACE,OACEC,IAACC,MAAI;MAAAC,KAAA;OACHF,IAAK;MAAAE,KAAA;MAAAC,OAAO;QAAE,SAAS;QAAM,uBAAuBP,KAAK0G;;MAASf,SAAS3F,KAAKkE;OAC9E9D,IAAA;MAAAE,KAAA;MACEC,OAAO;QACL,wFAAwF;QACxF,qDAAqDP,KAAKqF;QAC1D,oBAAoBrF,KAAKiG;QACzB,6BAA6BjG,KAAKiG;QAClC,mBAAmBjG,KAAKmxF;QACxB,+EAA+EnxF,KAAKqF;;MAEtFyB,UAAU;MACVF,SAAS5G,KAAKqG;MACdQ,QAAQ7G,KAAKoxF;OAEZpxF,KAAKiG,WAAW7F,IAAA;MAAAE,KAAA;MAAKC,OAAM;SAE7BP,KAAK0G,SAAStG,IAAO;MAAAE,KAAA;MAAAC,OAAO;QAAE,qCAAqC;QAAM,mBAAmBP,KAAKqF;;OAAarF,KAAK0G;;;;;;ACnF9H,IAAY2qF;;CAAZ,SAAYA;EACVA,EAAA;EACAA,EAAA;AACD,EAHD,CAAYA,4CAGX;;ACHD,MAAMC,mBAAmB;;MCQZC,gBAAa;EAL1B,WAAAzxF,CAAAC;;;;;;;;eAgBEC,KAAAwxF,iBAAqCH,mBAAmB/vF;IA6CxDtB,KAASoH,YAAG;IAGZpH,KAASyxF,YAAW;IAmBpBzxF,KAAgB0xF,mBAAG;MACjB1xF,KAAKoH,YAAY;MACjBpH,KAAK2xF,aAAaC;MAClB5xF,KAAKsG,UAAUlC;AAAM;IAGvBpE,KAAe6xF,kBAAG;MAChB7xF,KAAKoH,YAAY;MACjBpH,KAAK2xF,aAAaG;MAClB9xF,KAAKwG,WAAWpC;AAAM;IAGxBpE,KAAA+xF,uBAAwBlqF;MACtB7H,KAAKgyF,iBAAiB5tF;MAEtByD,EAAMoqF;MACNpqF,EAAMqqF;AAAgB;IAGxBlyF,KAAAmyF,qBAAsBtqF;MACpB,MAAMktB,IAAYltB,EAAMG,OAA+BU;MACvD1I,KAAKyxF,YAAY18D;MACjB/0B,KAAK0I,QAAQqsB;MAEb/0B,KAAKoG,aAAahC,KAAK2wB;AAAS;AAyCnC;EAhFC,iBAAApsB;IACE,IAAI3I,KAAK0I,SAAS1I,KAAK0I,MAAMrG,OAAOkF,SAAS,GAAG;MAC9CvH,KAAKyxF,YAAYzxF,KAAK0I;;;EAI1B,aAAA0pF;IACE,MAAM1iF,IAAQ;MACZ,CAAC2hF,mBAAmB/vF,UAAU;MAC9B,CAAC+vF,mBAAmBgB,YAAY;;IAGlC,OAAO3iF,EAAM1P,KAAKwxF;;EA8BpB,MAAArxF;IACE,OACEC,IAACC,MAAI;MAAAC,KAAA;OACHF,IAAA;MAAAE,KAAA;MACEC,OAAO;QACL,uGAAuG;QACvG,CAACP,KAAKoyF,kBAAkB;QACxB,oBAAoBpyF,KAAKoH;;MAE3BN,UAAU;MACVF,SAAS5G,KAAK0xF;MACd/rF,SAAS3F,KAAK0xF;QAEZ1xF,KAAKoH,aAAapH,KAAK4F,YACvBxF,IAAA;MAAAE,KAAA;MAAKC,OAAM;OACTH,IAAW;MAAAE,KAAA;MAAAS,MAAMf,KAAK4F;MAAUzC,aAAY;SAIhD/C,IACE;MAAAE,KAAA;MAAA8C,KAAKpB,KAAShC,KAAK2xF,eAAe3vF;MAClCT,MAAK;MACLhB,OAAM;MACN+xF,aAAatyF,KAAKsyF;MAClBzrF,QAAQ7G,KAAK6xF;MACbnpF,OAAO1I,KAAK0I;MACZ6pF,SAASvyF,KAAKmyF;QAGfnyF,KAAK6F,aACJzF,IAAA;MAAAE,KAAA;MAAKC,OAAM;MAA4DoF,SAAS3F,KAAK+xF;MAAsBS,aAAax9E,KAAKA,EAAEk9E;OAC7H9xF,IAAA;MAAAE,KAAA;MAAWS,MAAMf,KAAK6F;MAAW1C,aAAY;;;;;;;AChJ3D,IAAYsvF;;CAAZ,SAAYA;EACVA,EAAA;EACAA,EAAA;AACD,EAHD,CAAYA,oCAGX;;ACHD,MAAMC,gBAAgB;;MCQTC,aAAU;EALvB,WAAA7yF,CAAAC;;;;;;;eAS2BC,KAAAuB,OAAuBkxF,eAAenxF;;;eAKtCtB,KAAMi8E,SAAY;;;eAKlBj8E,KAAQqF,WAAY;IA+B7CrF,KAAOkG,UAAY;IAEnBlG,KAAWkE,cAAG;MACZ,KAAKlE,KAAKqF,UAAU;QAClBrF,KAAKi8E,UAAUj8E,KAAKi8E;QACpBj8E,KAAKoG,aAAahC,KAAKpE,KAAKi8E;;;IAIhCj8E,KAAWqG,cAAG;MACZ,KAAKrG,KAAKqF,UAAU;QAClBrF,KAAKkG,UAAU;QACflG,KAAKsG,UAAUlC;;;IAInBpE,KAAUuG,aAAG;MACX,KAAKvG,KAAKqF,UAAU;QAClBrF,KAAKwG,WAAWpC;QAChBpE,KAAKkG,UAAU;;;AA2DpB;EAvDC,MAAA/F;IACE,OACEC,IAACC,MAAI;MAAAC,KAAA;OACHF,IAAA;MAAAE,KAAA;MACEC,OAAO;QACL,gBAAgB;QAChB,kCAAkCP,KAAK0G,SAAS1G,KAAKuB,SAASkxF,eAAenxF;QAC7E,sGAAsGtB,KAAKuB,SAASkxF,eAAe9rF;QACnI,mFAAmF3G,KAAKuB,SAASkxF,eAAe9rF,SAAS3G,KAAKqF;QAC9H,mBAAmBrF,KAAKkG,WAAWlG,KAAKuB,SAASkxF,eAAe9rF;;MAElEC,SAAS5G,KAAKqG;MACdQ,QAAQ7G,KAAKuG;MACbZ,SAAS3F,KAAKkE;MACd4C,UAAU;OAET9G,KAAKuB,SAASkxF,eAAe9rF,QAC5BvG,IAAA;MAAAE,KAAA;MAAKC,OAAM;SACNP,KAAK0G,SAAStG,IAAA;MAAAE,KAAA;MAAOC,OAAM;OAAoEP,KAAK0G,UACpG1G,KAAK+G,YAAY3G,IAAM;MAAAE,KAAA;MAAAC,OAAM;OAA6CP,KAAK+G,YAGtF3G,IAAA;MAAAE,KAAA;MACEC,OAAO;QACL,6EAA6E;QAC7E,0CAA0CP,KAAKi8E;QAC/C,kDAAkDj8E,KAAKi8E;QACvD,4CAA4Cj8E,KAAKqF;QACjD,gBAAgBrF,KAAKkG,WAAWlG,KAAKuB,SAASkxF,eAAenxF;;MAE/DwF,UAAU;MACVF,SAAS5G,KAAKqG;MACdQ,QAAQ7G,KAAKuG;OAEbnG,IAAA;MAAAE,KAAA;MACEC,OAAO;QACL,gFAAgF;QAChF,2BAA2BP,KAAKqF;QAChC,mCAAmCrF,KAAKqF;;OAG1CjF,IAAA;MAAAE,KAAA;MACEC,OAAO;QACL,iCAAiC;QACjC,kDAAkDP,KAAKi8E;QACvD,2DAA2Dj8E,KAAKi8E;QAChE,mCAAmCj8E,KAAKqF;;;;;;;;AC1H1D,IAAYutF;;CAAZ,SAAYA;EACVA,EAAA;EACAA,EAAA;AACD,EAHD,CAAYA,8BAGX;;AAED,IAAYC;;CAAZ,SAAYA;EACVA,EAAA;EACAA,EAAA;EACAA,EAAA;EACAA,EAAA;AACD,EALD,CAAYA,0CAKX;;AAED,IAAYC;;CAAZ,SAAYA;EACVA,EAAA;EACAA,EAAA;EACAA,EAAA;EACAA,EAAA;EACAA,EAAA;EACAA,EAAA;EACAA,EAAA;AACD,EARD,CAAYA,0CAQX;;AAED,IAAYC;;CAAZ,SAAYA;EACVA,EAAA;EACAA,EAAA;AACD,EAHD,CAAYA,0CAGX;;ACzBD,MAAMC,aAAa;;MCQNC,UAAO;EALpB,WAAAnzF,CAAAC;;;;eAUEC,KAAK0G,QAAW;;;eAMhB1G,KAAIe,OAAW;;;eAMff,KAAAkzF,aAAgCL,kBAAkB5vF;;;eAMlDjD,KAAAC,OAAoB2yF,YAAYtxF;;;eAMhCtB,KAAA6D,aAAgCivF,kBAAkBK;;;eAMlDnzF,KAAAy5C,aAAgCs5C,kBAAkBK;AAqFnD;EAnFC,YAAA9wF;IACE,MAAMC,IAAa;MACjB,CAACqwF,YAAYpyF,QAAQ;MACrB,CAACoyF,YAAYtxF,UAAU;;IAGzB,OAAOiB,EAAWvC,KAAKC;;EAGzB,kBAAAoE;IACE,MAAMC,IAAmB;MACvB,CAACwuF,kBAAkBO,QAAQ;MAC3B,CAACP,kBAAkBK,WAAW;MAC9B,CAACL,kBAAkBQ,YAAY;MAC/B,CAACR,kBAAkBS,aAAa;MAChC,CAACT,kBAAkBjuF,WAAW;MAC9B,CAACiuF,kBAAkBU,cAAc;MACjC,CAACV,kBAAkBW,eAAe;;IAEpC,OAAOnvF,EAAiBtE,KAAK6D;;EAG/B,iBAAA6vF;IACE,IAAI1zF,KAAK6D,eAAeivF,kBAAkBO,OAAO;MAC/C,OAAO;WACF,IAAIrzF,KAAK6D,eAAeivF,kBAAkBjuF,UAAU;MACzD,OAAO;;IAGT,OAAO;;EAGT,kBAAA8uF;IACE,MAAMC,IAAmB;MACvB,CAACb,kBAAkBc,OAAO;MAC1B,CAACd,kBAAkBK,SAAS;;IAE9B,OAAOQ,EAAiB5zF,KAAKy5C;;EAG/B,kBAAAq6C;IACE,MAAMC,IAAmB;MACvB,CAAClB,kBAAkB5vF,UAAU;MAC7B,CAAC4vF,kBAAkB3vF,UAAU;MAC7B,CAAC2vF,kBAAkB9vF,QAAQ;MAC3B,CAAC8vF,kBAAkB7vF,OAAO;;IAE5B,OAAO+wF,EAAiB/zF,KAAKkzF;;EAG/B,MAAA/yF;IACE,OACEC,IAACC,MAAI;MAAAC,KAAA;OACHF,IAAA;MAAAE,KAAA;MACEC,OAAO;QACL,uCAAuC;QACvC,CAACP,KAAKsC,iBAAiB;QACvB,CAACtC,KAAKqE,uBAAuB;;OAG9BrE,KAAKe,QACJX,IAAA;MAAAE,KAAA;MACEC,OAAO;QACL,0EAA0E;QAC1E,CAACP,KAAK8zF,uBAAuB;;OAG/B1zF,IAAW;MAAAE,KAAA;MAAAS,MAAMf,KAAKe;MAAmB;SAG7CX,IAAA;MAAAE,KAAA;MACEC,OAAO;QACL,uBAAuB;QACvB,CAACP,KAAK0zF,sBAAsB;QAC5B,CAAC1zF,KAAK2zF,uBAAuB;;OAG9B3zF,KAAK0G;;;;;;AC1HlB,IAAYstF;;CAAZ,SAAYA;EACVA,EAAA;EACAA,EAAA;AACD,EAHD,CAAYA,4CAGX;;ACHD,MAAMC,kBAAkB;;MCQXC,eAAY;EALzB,WAAAp0F,CAAAC;;;;;;;eAe2BC,KAAAqB,SAA6B2yF,mBAAmB1yF;;;eA8BjEtB,KAAIm0F,OAAW;IAqBvBn0F,KAAQo0F,WAAG;IAGXp0F,KAASyxF,YAAW;IAGpBzxF,KAAiBq0F,oBAAG;IAGpBr0F,KAAYs0F,eAAW;IAkGvBt0F,KAAmBu0F,sBAAG;MACpB,IAAIv0F,KAAKqF,UAAU;MACnBrF,KAAKw0F;MACLx0F,KAAKy0F;AAAiB;IAGxBz0F,KAAA00F,wBAAyB7sF;MACvB,MAAMktB,IAAYltB,EAAMG,OAA+BU;MACvD1I,KAAKyxF,YAAY18D;MACjB/0B,KAAK0I,QAAQqsB;MAEb,IAAIA,EAASxtB,SAAS,KAAKvH,KAAKq0F,mBAAmB;QACjDr0F,KAAKw0F;;MAGPx0F,KAAKoG,aAAahC,KAAK2wB;AAAS;IAGlC/0B,KAAWqG,cAAG;MACZ,IAAIrG,KAAKqF,UAAU;MAEnBrF,KAAKw0F;MACLx0F,KAAKy0F;AAAiB;IAGxBz0F,KAAUuG,aAAG;MACX,KAAKvG,KAAKyxF,aAAazxF,KAAKyxF,UAAUpvF,OAAOkF,WAAW,GAAG;QACzDvH,KAAK20F;;MAGP30F,KAAKwG,WAAWpC;MAChBpE,KAAKq0F,oBAAoB;AAAK;IAGhCr0F,KAAmB40F,sBAAG;MACpB50F,KAAKsG,UAAUlC;MACfpE,KAAKq0F,oBAAoB;MACzBr0F,KAAKw0F;AAAY;AAmGpB;EAvOC,iBAAAK,CAAkB9/D;IAChB/0B,KAAKyxF,YAAY18D;IAEjB,IAAI/0B,KAAK80F,mBAAmB90F,KAAK80F,gBAAgBpsF,UAAUqsB,GAAU;MACnE,MAAMggE,IAAiB/0F,KAAK80F,gBAAgBE;MAC5Ch1F,KAAK80F,gBAAgBpsF,QAAQqsB,KAAY;MAEzC,IAAI/0B,KAAKq0F,qBAAqBU,MAAmB,MAAM;QACrD,MAAME,IAAc9mF,KAAKS,IAAImmF,IAAiBhgE,KAAY,IAAIxtB;QAC9DvH,KAAK80F,gBAAgBI,kBAAkBD,GAAaA;;;IAIxD,IAAIlgE,KAAYA,EAAS1yB,OAAOkF,SAAS,GAAG;MAC1CvH,KAAKw0F;WACA,KAAKx0F,KAAKq0F,mBAAmB;MAClCr0F,KAAK20F;;;EAYT,WAAAzwF,CAAY2D;IACV,KAAK7H,KAAKgC,SAAShC,KAAKq0F,mBAAmB;IAE3C,MAAMvsF,IAAc9H,KAAKgC,KAAK+F,SAASF,EAAMG;IAE7C,KAAKF,OAAiB9H,KAAKyxF,aAAazxF,KAAKyxF,UAAUpvF,OAAOkF,WAAW,IAAI;MAC3EvH,KAAK20F;MACL30F,KAAKwG,WAAWpC;MAChBpE,KAAKq0F,oBAAoB;;;EAI7B,eAAAI;IACE5uE,YAAW;MACT7lB,KAAK80F,gBAAgBlD;AAAO,QAC3B;;EAGL,iBAAAjpF;IACE,IAAI3I,KAAK0I,SAAS1I,KAAK0I,MAAMrG,OAAOkF,SAAS,GAAG;MAC9CvH,KAAKyxF,YAAYzxF,KAAK0I;MACtB1I,KAAKo0F,WAAW;MAChBp0F,KAAKm1F;;;EAIT,gBAAAzzF;IACE,IAAI1B,KAAK0I,SAAS1I,KAAK0I,MAAMrG,OAAOkF,SAAS,GAAG;MAC9CvH,KAAKo1F;;;EAIT,UAAAZ;IACE,KAAKx0F,KAAKo0F,UAAU;MAClBp0F,KAAKo0F,WAAW;;IAElBp0F,KAAKo1F;IACLp1F,KAAKm1F;;EAGP,YAAAR;IACE,IAAI30F,KAAKo0F,cAAcp0F,KAAKyxF,aAAazxF,KAAKyxF,UAAUpvF,OAAOkF,WAAW,IAAI;MAC5EvH,KAAKo0F,WAAW;;IAElBp0F,KAAKo1F;;EAGP,kBAAAD;IACEtvE,YAAW;MACT,IAAI7lB,KAAKq1F,oBAAoB;QAC3B,MAAMC,IAAct1F,KAAKq1F,mBAAmBrqB;QAE5ChrE,KAAKs0F,eAAegB;;;;EAK1B,mBAAAF;IACE,KAAKp1F,KAAKu1F,iBAAiBv1F,KAAKq1F,oBAAoB;IAEpDr1F,KAAKq1F,mBAAmB3lF,MAAMI,UAAU9P,KAAKo0F,WAAW,SAAS;IACjEp0F,KAAKu1F,aAAa7lF,MAAMI,UAAU9P,KAAKo0F,WAAW,SAAS;IAC3D,KAAKp0F,KAAKo0F,UAAU;MAClBp0F,KAAKu1F,aAAaC,UAAU19B,IAAI;;;EA4CpC,MAAA33D;IACE,MAAMs1F,IAAkBz1F,KAAKm0F,OAAO,KAAK;IAEzC,OACE/zF,IAACC,MAAK;MAAAC,KAAA;MAAA8C,KAAKpB,KAAShC,KAAKgC,OAAOA;OAC9B5B,IAAA;MAAAE,KAAA;OACEF,IAAA;MAAAE,KAAA;MACEiF,IAAG;MACHhF,OAAO;QACL,2EAA2E;QAC3E,kBAAkBP,KAAKq0F,sBAAsBr0F,KAAKqF,YAAYrF,KAAKqB,WAAW2yF,mBAAmB1yF;QACjG,kBAAkBtB,KAAKqB,WAAW2yF,mBAAmBjxF,UAAU/C,KAAKqF;QACpE,gEAAgErF,KAAKqF;QACrE,kDAAkDrF,KAAKqF;;MAEzDqK,OAAO;QAAE+L,QAAQ,GAAGg6E;;MACpB3uF,UAAU;MACVF,SAAS5G,KAAKqG;MACdV,SAAS3F,KAAKu0F;OAEdn0F,IAAA;MAAAE,KAAA;MACEC,OAAO;QACL,8GAA8G;QAC9G,sBAAsBP,KAAKqF,aAAarF,KAAKo0F,YAAYp0F,KAAKqB,WAAW2yF,mBAAmB1yF;QAC5F,sBAAsBtB,KAAKqF;QAC3B,oBAAoBrF,KAAKqF,YAAYrF,KAAKo0F;;MAE5ChxF,KAAKpB,KAAShC,KAAKu1F,eAAevzF;OAEjChC,KAAK0G,QAGRtG,IAAA;MAAAE,KAAA;MACEC,OAAO;QACL,qHAAqH;QACrH,0BAA0BP,KAAKo0F;QAC/B,sBAAsBp0F,KAAKqF,aAAarF,KAAKo0F,YAAYp0F,KAAKqB,WAAW2yF,mBAAmB1yF;QAC5F,sBAAsBtB,KAAKqF;QAC3B,oBAAoBrF,KAAKqF,YAAYrF,KAAKo0F;;MAE5ChxF,KAAKpB,KAAShC,KAAKq1F,qBAAqBrzF;OAEvChC,KAAK0G,QAGRtG,IACE;MAAAE,KAAA;MAAA8C,KAAKpB,KAAShC,KAAK80F,kBAAkB9yF;MACrCswF,aAAatyF,KAAKo0F,WAAWp0F,KAAKsyF,cAAc;MAChD6B,MAAMn0F,KAAKm0F;MACXuB,WAAW11F,KAAK01F;MAChBrwF,UAAUrF,KAAKqF;MACf9E,OAAO;QACL,+EAA+E;QAC/E,sBAAsBP,KAAKqF;QAC3B,yDAAyDrF,KAAKqF;;MAEhEqK,OAAO;QAAEimF,YAAY31F,KAAKo0F,WAAW,GAAGp0F,KAAKs0F,mBAAmB;;MAChE/B,SAASvyF,KAAK00F;MACd9tF,SAAS5G,KAAK40F;MACd/tF,QAAQ7G,KAAKuG;MACbmC,OAAO1I,KAAKyxF;UAIdzxF,KAAK41F,YAAY51F,KAAK01F,cACtBt1F,IAAK;MAAAE,KAAA;MAAAC,OAAM;OACRP,KAAK41F,YACJx1F,IAAA;MAAAE,KAAA;MACEiF,IAAG;MACHhF,OAAO;QACL,qBAAqBP,KAAKqB,WAAW2yF,mBAAmB1yF,YAAYtB,KAAKqF;QACzE,uBAAuBrF,KAAKqB,WAAW2yF,mBAAmBjxF,UAAU/C,KAAKqF;QACzE,sBAAsBrF,KAAKqF;;OAG5BrF,KAAK41F,WAGT51F,KAAK01F,aACJt1F,IAAA;MAAAE,KAAA;MACEiF,IAAG;MACHhF,OAAO;QACL,qBAAqBP,KAAKqB,WAAW2yF,mBAAmB1yF,YAAYtB,KAAKqF;QACzE,uBAAuBrF,KAAKqB,WAAW2yF,mBAAmBjxF,UAAU/C,KAAKqF;QACzE,sBAAsBrF,KAAKqF;;OAG5BrF,KAAKyxF,YAAYzxF,KAAKyxF,UAAUlqF,SAAS,GAAC,KAAGvH,KAAK01F;;;;;;;;;;;AC/SrE,IAAYG;;CAAZ,SAAYA;EACVA,EAAA;EACAA,EAAA;AACD,EAHD,CAAYA,0CAGX;;AAED,IAAYC;;CAAZ,SAAYA;EACVA,EAAA;EACAA,EAAA;AACD,EAHD,CAAYA,8CAGX;;;;;;;;;;;;;;KCRA,SAASrkD,GAAMvoC;MAG0B;QACtCC,EAAAC,UAAiBF;AACrB;MALA,CAQElJ,gBAAM;MACN,IAAI+1F,IAAQ,KACRC,IAAQ,KACRC,IAAW,KACXC,IAAe,EAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAC3DC,mBAAmB,SAASC;QAC1B,KAAK,IAAIjsF,IAAI,GAAGC,IAAM8rF,EAAa3uF,QAAQ4C,IAAIC,GAAKD,KAAK;UACvD,IAAIisF,KAAWF,EAAa/rF,IAAI;YAC9B,OAAO;AACnB;AACA;QACQ,OAAO;SAETksF,oBAAoB,SAASC;QAC3BA,IAAOA,KAAQ;QACfA,IAAO;UACLC,WAAWD,EAAKC,aAAa;UAC7BC,YAAYF,EAAKE;UACjBC,WAAWH,EAAK9rF,eAAe,eAAe8rF,EAAKG,YAAY;UAC/DC,WAAWJ,EAAKI,aAAa;UAC7BC,YAAYL,EAAKK;UACjBC,YAAYN,EAAKM,cAAe,MAAMN,EAAKM,WAAWprE,QAAQ,SAAQ,OAAQ;UAC9EqrE,MAAMP,EAAKO,QAASP,EAAKO,KAAKrrE,QAAQ,SAAQ,MAAM,OAAQ;UAC5DsrE,WAAWR,EAAKQ;;QAElBR,EAAKS,iBAAiBT,EAAKQ,YAAY,IAAIR,EAAKG;QAChD,OAAOH;;;MAGTU,0BAA0B,SAASC,GAAQjuE,GAAOspE;QAChD,MAAOtpE,IAAQiuE,EAAO1vF,QAAQyhB,KAAS;UACrC,IAAGiuE,EAAOjuE,OAAW+sE,KAASkB,EAAOjuE,OAAWgtE,KAASiB,EAAOjuE,OAAWitE,GAAU;YACnFgB,EAAOjuE,KAASspE;AAC5B;AACA;QACQ,OAAO2E;AACf;MAGE,IAAIC,gBAAgB,SAAS/oD;QAC3BnuC,KAAKmuC,WAAWA;;MAGlB+oD,cAAc5sF,UAAU6sF,sBAAsB;QAC5C,KAAK,IAAIhtF,IAAI,GAAGC,IAAMpK,KAAKmuC,SAAS5mC,QAAQ4C,IAAIC,GAAKD,KAAK;UACxDnK,KAAKmuC,SAAShkC,GAAGqsF,aAAa;UAC9Bx2F,KAAKmuC,SAAShkC,GAAGitF,UAAU;UAC3Bp3F,KAAKmuC,SAAShkC,GAAGktF,YAAY;UAE7B,IAAIr3F,KAAKmuC,SAAShkC,GAAGzB,MAAMnB,QAAQ;YACjCvH,KAAKmuC,SAAShkC,GAAGzB,QAAQ1I,KAAKmuC,SAAShkC,GAAGzB,MAAM8iB,QAAQ,OAAO;AACvE;AACA;;MAGE0rE,cAAc5sF,UAAUgtF,oBAAoB,SAAS9X;QACnD,IAAI+X,IAAOv3F,MACPw3F,SAAS,SAASxiF;UAChBA,IAAIA,KAAKjJ,OAAOlE;UAChB,IAAI+hD,IAAS50C,EAAEhN,UAAUgN,EAAEyiF;UAE3B,IAAItB,iBAAiBnhF,EAAEohF,UAAU;YAC/BvwE,YAAW;cACT0xE,EAAKjB,KAAKE,aAAa5sC,EAAO4sC;cAC9B5sC,EAAOlhD,QAAQgvF,QAAQlY,GAAc51B,EAAOlhD,OAAO6uF,EAAKjB;cACxD1sC,EAAO4sC,aAAa5sC,EAAOlhD;cAC3B,IAAIkhD,EAAOsrC,qBAAqBqC,EAAKjB,KAAKM,YAAY;gBACpDhtC,EAAOsrC,kBAAkBtrC,EAAOlhD,MAAMnB,QAASqiD,EAAOlhD,MAAMnB,SAASgwF,EAAKjB,KAAKM,WAAWrvF;AAC1G;gBACe;AACf;AACA;QAEI,KAAK,IAAI4C,IAAI,GAAGC,IAAMpK,KAAKmuC,SAAS5mC,QAAQ4C,IAAIC,GAAKD,KAAK;UACxDnK,KAAKmuC,SAAShkC,GAAGqsF,aAAa;UAC9Bx2F,KAAKmuC,SAAShkC,GAAGitF,UAAUI;UAC3B,IAAIx3F,KAAKmuC,SAAShkC,GAAGzB,MAAMnB,QAAQ;YACjCvH,KAAKmuC,SAAShkC,GAAGzB,QAAQgvF,QAAQlY,GAAcx/E,KAAKmuC,SAAShkC,GAAGzB,OAAO1I,KAAKs2F;AACpF;AACA;;MAGEY,cAAc5sF,UAAUqtF,YAAY,SAASrB;QAC3Ct2F,KAAKs2F,OAAOD,kBAAkBC;QAC9Bt2F,KAAKs3F,kBAAkB;;MAGzBJ,cAAc5sF,UAAUstF,aAAa;QACnC53F,KAAKs2F,OAAO;QACZt2F,KAAKs3F,kBAAkB;;MAGzBJ,cAAc5sF,UAAUutF,eAAe;QACrC73F,KAAKs2F,OAAO;QACZt2F,KAAKs3F,kBAAkB;;MAGzBJ,cAAc5sF,UAAUwtF,cAAc,SAASC;QAC7C/3F,KAAKs2F,OAAO;UAACyB,SAASA;;QACtB/3F,KAAKs3F,kBAAkB;;MAGzBJ,cAAc5sF,UAAU0tF,SAAS;QAC/Bh4F,KAAKm3F;;MAGP,IAAIO,UAAU,SAASr0F;QACrB,KAAKA,GAAI;UACP,MAAM,IAAIN,MAAM;AACtB;QACI,IAAIorC,IAAY,YAAY9qC,IAAOA,EAAGkE,SAASlE,IAAK,KAAM,EAACA;QAC3D,OAAO,IAAI6zF,cAAc/oD;;MAG3BupD,QAAQO,UAAU,SAASvvF,GAAO4tF;QAChCA,IAAOD,kBAAkBC;QACzB,IAAIA,EAAKQ,WAAW;UAClBR,EAAKE,aAAaF,EAAKE,cAAc;UACrC,IAAI0B,IAAe,MAAK5B,EAAKI,YAAW,WAAUJ,EAAKG,YAAW,MAC9D0B,IAAa,IAAIC,OAAOF,GAAa,MACrCG,IAAe3vF,EAAMoK,WAAW0Y,QAAQ,SAAS,IAAIjkB,UAAU,GAC/D+wF,IAAkBhC,EAAKE,WAAW1jF,WAAW0Y,QAAQ,SAAS,IAAIjkB,UAAU;UAEhFmB,IAAQA,EAAMoK,WAAW0Y,QAAQ2sE,GAAY;UAC7C,IAAIE,IAAeC,GAAiB;YAClC5vF,IAAQA,EAAMiiB,MAAM,GAAGjiB,EAAMnB,SAAS;AAC9C;AACA;QACI,IAAIgxF,IAAS7vF,EAAMoK,WAAW0Y,QAAQ,SAAS,KAC3CgtE,IAAiB,IAAIJ,OAAO,WAAU9B,EAAKC,YAAW,MACtDkC,IAAiB,IAAIL,OAAO,QAAO9B,EAAKI,YAAW,OACnDgC,IAAQH,EAAOx0E,OAAO,GAAGw0E,EAAOhxF,SAAS+uF,EAAKS,iBAC9C4B,IAASD,EAAM30E,OAAO,GAAG20E,EAAMnxF,SAAS,IACxCqxF,IAAQ,IAAIvrF,MAAMipF,EAAKG,YAAY,GAAGt8E,KAAK;QAE/Cu+E,IAAQA,EAAM30E,OAAO20E,EAAMnxF,SAAS,GAAGmxF,EAAMnxF;QAC7C,KAAK,IAAI4C,IAAI,GAAGC,IAAMsuF,EAAMnxF,QAAQ4C,IAAIC,GAAKD,KAAK;UAChD,IAAIA,IAAI,MAAM,GAAG;YACfwuF,KAAUrC,EAAKC;AACvB;UACMoC,KAAUD,EAAMvuF;AACtB;QACIwuF,IAASA,EAAOntE,QAAQgtE,GAAgB;QACxCG,IAASA,EAAOpxF,SAASoxF,IAAS;QAClC,IAAIE,IAAS;QACb,IAAGvC,EAAKK,eAAe,MAAM;UAC3BkC,IAASnwF,IAAQ,KAAMA,EAAMowF,cAAcpwF,EAAMowF,WAAW,OAAQ,MAAO;AACjF;QACI,KAAKxC,EAAKQ,WAAW;UACnB,IAAIiC,IAAaR,EAAOhxF,SAAS+uF,EAAKG,WAClCuC,IAAaT,EAAOx0E,OAAOg1E,GAAYzC,EAAKG,YAC5CwC,IAAcD,EAAWzxF,QACzB2xF,IAAe5C,EAAKG,YAAYwC,IAAe3C,EAAKG,YAAYwC;UAEpEL,KAASA,IAAQI,GAAYruE,OAAOuuE;AAC1C;QACI,IAAIjC,IAASX,EAAKO,OAAOgC,IAASF,IAASrC,EAAKI,YAAYkC;QAC5D,OAAO3B,EAAOzrE,QAAQitE,GAAgB,MAAMnC,EAAKM;;MAGnDc,QAAQyB,YAAY,SAASzwF,GAAO4tF;QAClC,IAAIyB,WAAkBzB,MAAS,WAAWA,EAAKyB,UAAUzB,GACrD8C,IAAerB,EAAQvsE,QAAQ,OAAO,KACtCyrE,IAASc,EAAQ3gF,MAAM,KACvB0hB,IAASpwB,EAAMoK,WAAW0Y,QAAQ,OAAO,KACzC6tE,IAAcvgE,EAAOtN,QAAQ,OAAO,KACpCxC,IAAQ,GACR7e,GACAmvF,IAAerC,EAAO1vF,QACtB+qF,WAAsBgE,MAAS,WAAWA,EAAKhE,cAAc7uE;QAGjE,KAAKtZ,IAAI,GAAGA,IAAImvF,GAAcnvF,KAAK;;UAEjC,IAAI6e,KAAS8P,EAAOvxB,QAAQ;YAC1B,IAAI6xF,EAAa7xF,UAAU8xF,EAAY9xF,QAAQ;cAC7C,OAAO0vF,EAAO98E,KAAK;AAC7B,mBACa,IAAKm4E,MAAgB7uE,aAAe21E,EAAa7xF,SAAS8xF,EAAY9xF,QAAS;cAClF,OAAOyvF,wBAAwBC,GAAQ9sF,GAAGmoF,GAAan4E,KAAK;AACtE,mBACa;cACH;AACV;AACA;;gBAEU;YACF,IAAK88E,EAAO9sF,OAAO4rF,KAASj9D,EAAO9P,GAAOuwE,MAAM,YAC3CtC,EAAO9sF,OAAO6rF,KAASl9D,EAAO9P,GAAOuwE,MAAM,eAC3CtC,EAAO9sF,OAAO8rF,KAAYn9D,EAAO9P,GAAOuwE,MAAM,gBAAiB;cAClEtC,EAAO9sF,KAAK2uB,EAAO9P;mBACd,IAAIiuE,EAAO9sF,OAAO4rF,KAASkB,EAAO9sF,OAAO6rF,KAASiB,EAAO9sF,OAAO8rF,GAAU;cAC/E,IAAG3D,MAAgB7uE,WAAU;gBAC3B,OAAOuzE,wBAAwBC,GAAQ9sF,GAAGmoF,GAAan4E,KAAK;AACxE,qBACc;gBACF,OAAO88E,EAAOtsE,MAAM,GAAGxgB,GAAGgQ,KAAK;AAC3C;AACA;AACA;AACA;QACI,OAAO88E,EAAO98E,KAAK,IAAI4J,OAAO,GAAG5Z;;MAGnCutF,QAAQ8B,WAAW,SAAS9wF;QAC1B,OAAOA,EAAMoK,WAAW0Y,QAAQ,iBAAiB;;MAGnDksE,QAAQ+B,iBAAiB,SAAS/wF;QAChC,OAAOA,EAAMoK,WAAW0Y,QAAQ,gBAAgB;;MAGlD,OAAOksE;AACT;;;;;;;;;AC7NA,MAAMgC,mBAAmB;;MCSZC,gBAAa;EAL1B,WAAA75F,CAAAC;;;;;;;eAeUC,KAAAuB,OAA0Bs0F,kBAAkBr0F;;;eAK3BxB,KAAAqB,SAA8By0F,oBAAoBx0F;IA2D3EtB,KAAW45F,cAAG;IAGd55F,KAASyxF,YAAW;IAGpBzxF,KAAY65F,eAAG;IAGf75F,KAAc85F,iBAAG;IA6DjB95F,KAAgB+5F,mBAAG;MACjB/5F,KAAKg6F,cAAc;AAAK;IAqB1Bh6F,KAAAi6F,qBAAsBpyF;MACpB,IAAI7H,KAAK83F,eAAe93F,KAAK2xF,cAAc;QACzC3xF,KAAKk6F;;MAEP,MAAMnlE,IAAYltB,EAAMG,OAA4BU;MACpD1I,KAAKyxF,YAAY18D;MACjB/0B,KAAK0I,QAAQqsB;MAEb/0B,KAAKoG,aAAahC,KAAK2wB;AAAS;IAGlC/0B,KAAWqG,cAAG;MACZ,IAAIrG,KAAKqF,UAAU;MACnBrF,KAAKg6F,cAAc;MACnBh6F,KAAK2xF,aAAaC;AAAO;IAG3B5xF,KAAUuG,aAAG;MACXvG,KAAKg6F,cAAc;MAEnBh6F,KAAKwG,WAAWpC;MAChBpE,KAAK85F,iBAAiB;AAAK;IAG7B95F,KAAgB0xF,mBAAG;MACjB1xF,KAAKsG,UAAUlC;MACfpE,KAAK85F,iBAAiB;AAAI;IAG5B95F,KAAAm6F,kBAAmBtyF;MACjB,IAAI7H,KAAKuB,SAASs0F,kBAAkBuE,UAAU;QAC5CvyF,EAAMoqF;QACNjyF,KAAKq6F;;;AAuGV;EAvNC,iBAAAxF,CAAkB9/D;IAChB/0B,KAAKyxF,YAAY18D;IAEjB,IAAI/0B,KAAK2xF,gBAAgB3xF,KAAK2xF,aAAajpF,UAAUqsB,GAAU;MAC7D,MAAMggE,IAAiB/0F,KAAK2xF,aAAaqD;MACzCh1F,KAAK2xF,aAAajpF,QAAQqsB,KAAY;MAEtC,IAAI/0B,KAAK85F,kBAAkB/E,MAAmB,MAAM;QAClD,MAAME,IAAc9mF,KAAKS,IAAImmF,IAAiBhgE,KAAY,IAAIxtB;QAC9DvH,KAAK2xF,aAAauD,kBAAkBD,GAAaA;;;IAIrD,IAAIlgE,KAAYA,EAAS1yB,OAAOkF,SAAS,GAAG;MAC1CvH,KAAK45F,cAAc;MACnB55F,KAAKo1F;WACA,KAAKp1F,KAAK85F,gBAAgB;MAC/B95F,KAAK45F,cAAc;MACnB55F,KAAKo1F;;;EAWT,WAAAlxF,CAAY2D;IACV,KAAK7H,KAAKgC,SAAShC,KAAK85F,gBAAgB;IAExC,MAAMhyF,IAAc9H,KAAKgC,KAAK+F,SAASF,EAAMG;IAE7C,KAAKF,GAAa;MAChB9H,KAAKg6F,cAAc;MACnBh6F,KAAKwG,WAAWpC;MAChBpE,KAAK85F,iBAAiB;;;EAI1B,iBAAAnxF;IACE,IAAI3I,KAAK0I,SAAS1I,KAAK0I,MAAMrG,OAAOkF,SAAS,GAAG;MAC9CvH,KAAKyxF,YAAYzxF,KAAK0I;MACtB1I,KAAK45F,cAAc;;;EAIvB,gBAAAl4F;IACE,IAAI1B,KAAKyxF,aAAazxF,KAAKyxF,UAAUpvF,OAAOkF,SAAS,GAAG;MACtDvH,KAAKo1F;;IAGP,IAAIp1F,KAAK83F,eAAe93F,KAAK2xF,cAAc;MACzC3xF,KAAKk6F;;;EAQT,aAAAF,CAAcJ;IACZ,IAAK55F,KAAK45F,eAAe55F,KAAKyxF,aAAazxF,KAAKyxF,UAAUlqF,SAAS,KAAMvH,KAAKqF,UAAU;IAExFrF,KAAK45F,cAAcA;IACnB55F,KAAKo1F;IACLp1F,KAAK2xF,aAAaC;;EAGpB,mBAAAwD;IACE,KAAKp1F,KAAKs6F,mBAAmBt6F,KAAKu1F,cAAc;IAEhDv1F,KAAKs6F,eAAe5qF,MAAMI,UAAU9P,KAAK45F,cAAc,SAAS;IAChE55F,KAAKu1F,aAAa7lF,MAAMI,UAAU9P,KAAK45F,cAAc,SAAS;IAC9D,KAAK55F,KAAK45F,aAAa;MACrB55F,KAAKu1F,aAAaC,UAAU19B,IAAI;;;EAwCpC,eAAAoiC;IACExC,QAAQ13F,KAAK2xF,cAAcmG,YAAY93F,KAAK83F;;EAG9C,yBAAAuC;IACE,MAAMtF,IAAiB/0F,KAAK2xF,aAAaqD;IACzC,MAAMuF,IAAav6F,KAAK2xF,aAAajpF;IACrC,MAAM8xF,IAAYx6F,KAAK65F,eAAehE,kBAAkBuE,WAAWvE,kBAAkBr0F;IAErFxB,KAAK2xF,aAAa9mE,aAAa,QAAQ2vE;IACvCx6F,KAAK65F,gBAAgB75F,KAAK65F;IAE1Bh0E,YAAW;MACT7lB,KAAK2xF,aAAajpF,QAAQ6xF;MAE1Bv6F,KAAK2xF,aAAauD,kBAAkBH,GAAgBA;AAAe,QAClE;;EAGL,YAAA0F;IACE,IAAIz6F,KAAKuB,SAASs0F,kBAAkBuE,UAAU;MAC5C,OAAOp6F,KAAK65F,eAAe,cAAc;;IAG3C,OAAO75F,KAAKe;;EAGd,MAAAZ;IACE,OACEC,IAACC,MAAK;MAAAC,KAAA;MAAA8C,KAAKpB,KAAShC,KAAKgC,OAAOA;OAC9B5B,IAAA;MAAAE,KAAA;OACEF,IAAA;MAAAE,KAAA;MACEiF,IAAG;MACHhF,OAAO;QACL,uFAAuF;QACvF,8BAA8BP,KAAKe,QAAQf,KAAKuB,SAASs0F,kBAAkBuE;QAC3E,gBAAgBp6F,KAAK85F,mBAAmB95F,KAAKqF,YAAYrF,KAAKqB,WAAWy0F,oBAAoBx0F;QAC7F,gBAAgBtB,KAAKqB,WAAWy0F,oBAAoB/yF,UAAU/C,KAAKqF;QACnE,gEAAgErF,KAAKqF;QACrE,qDAAqDrF,KAAKqF;;MAE5DyB,UAAU;MACVF,SAAS5G,KAAKqG;MACdV,SAAS3F,KAAK+5F;QAEZ/5F,KAAKqF,YACLjF,IAAK;MAAAE,KAAA;MAAAC,OAAO;QAAE,0BAA0B;QAAM,WAAWP,KAAKe;;MAAQqC,KAAKpB,KAAShC,KAAKs6F,iBAAiBt4F;OACxG5B,IAAA;MAAAE,KAAA;MAAOC,OAAM;OAAiDP,KAAK0G,QACnEtG,IACE;MAAAE,KAAA;MAAAiB,MAAMvB,KAAKuB;MACX6B,KAAKpB,KAAShC,KAAK2xF,eAAe3vF;MAClCswF,aAAatyF,KAAKsyF;MAClB/xF,OAAM;MACNgyF,SAASvyF,KAAKi6F;MACdrzF,SAAS5G,KAAK0xF;MACdhpF,OAAO1I,KAAKyxF;SAKlBrxF,IAAA;MAAAE,KAAA;MACEiF,IAAG;MACHhF,OAAO;QAAE,+BAA+B;QAAM,sBAAsBP,KAAKqF;QAAU,sBAAsBrF,KAAKqF;;MAC9GjC,KAAKpB,KAAShC,KAAKu1F,eAAevzF;OAEjChC,KAAK0G,WAGJ1G,KAAKe,QAAQf,KAAKuB,SAASs0F,kBAAkBuE,aAC/Ch6F,IAAA;MAAAE,KAAA;MAAKC,OAAM;MAAmCoF,SAAS3F,KAAKm6F;OAC1D/5F,IAAW;MAAAE,KAAA;MAAAS,MAAMf,KAAKy6F;MAAgBt3F,aAAa,YAAYnD,KAAKqF,WAAW,uBAAuB;WAK1GrF,KAAK41F,YAAY51F,KAAK01F,eAAe11F,KAAKqF,YAC1CjF,IAAK;MAAAE,KAAA;MAAAC,OAAM;OACRP,KAAK41F,YACJx1F,IAAA;MAAAE,KAAA;MACEiF,IAAG;MACHhF,OAAO;QAAE,qBAAqBP,KAAKqB,WAAWy0F,oBAAoBx0F;QAAS,uBAAuBtB,KAAKqB,WAAWy0F,oBAAoB/yF;;OAErI/C,KAAK41F,WAGT51F,KAAK01F,aACJt1F,IACE;MAAAE,KAAA;MAAAiF,IAAG;MACHhF,OAAO;QAAE,qBAAqBP,KAAKqB,WAAWy0F,oBAAoBx0F;QAAS,uBAAuBtB,KAAKqB,WAAWy0F,oBAAoB/yF;;OAErI/C,KAAKyxF,YAAYzxF,KAAKyxF,UAAUlqF,SAAS,GAAC,KAAGvH,KAAK01F;;;;;;;;;;;AC7SrE,IAAYgF;;CAAZ,SAAYA;EACVA,EAAA;EACAA,EAAA;AACD,EAHD,CAAYA,kCAGX;;AAED,IAAYC;;CAAZ,SAAYA;EACVA,EAAA;EACAA,EAAA;AACD,EAHD,CAAYA,kCAGX;;ACRD,MAAMC,eAAe;;MCQRC,YAAS;EALtB,WAAA/6F,CAAAC;;;;;eASUC,KAAAuB,OAAsBm5F,cAAcI;;;eAKpC96F,KAAAC,OAAsB06F,cAAcr5F;;;eAKpCtB,KAAQ+6F,WAAY;;;eAKpB/6F,KAAIe,OAAW;;;eAKff,KAAIc,OAAW;;;eAKfd,KAAOg7F,UAAW;;;eAKlBh7F,KAAQqF,WAAY;IASXrF,KAAAi7F,aAAa;MAC5B,CAACN,cAAcr5F,UAAU;MACzB,CAACq5F,cAAcl6F,QAAQ;;IAGRT,KAAAk7F,eAAe;MAC9Bh4E,WAAW;MACXi4E,kBAAkB;MAClBC,iBAAiB;MACjBC,uBACE;MACFC,oBAAoB;MACpBC,eAAe;MACfC,aAAa;MACb78B,eAAe;MACf88B,cAAc;;IAoGhBz7F,KAAWkE,cAAG;MACZ,IAAIlE,KAAKqF,UAAU;MAEnBrF,KAAK07F,YAAYt3F;AAAM;AAa1B;EAjHC,aAAYu3F;IACV,OAAO37F,KAAKuB,SAASm5F,cAAcI;;EAGrC,YAAYc;IACV,OAAO57F,KAAKuB,SAASm5F,cAAcmB;;EAGrC,cAAYC;IACV,SAAS97F,KAAKg7F;;EAGhB,iBAAYe;IACV,QAAQ/7F,KAAKqF;;EAGP,kBAAA22F;IACN,OAAOh8F,KAAKi7F,WAAWj7F,KAAKC,SAASD,KAAKi7F,WAAWN,cAAcr5F;;EAG7D,mBAAA26F;IACN,OAAO;MACL,CAACj8F,KAAKk7F,aAAah4E,YAAY;MAC/B,CAACljB,KAAKk7F,aAAaC,mBAAmBn7F,KAAK27F;MAC3C,CAAC37F,KAAKk7F,aAAaE,kBAAkBp7F,KAAK47F;MAC1C,CAAC57F,KAAKk7F,aAAaG,wBAAwBr7F,KAAK47F,YAAY57F,KAAK+7F;MACjE,CAAC/7F,KAAKk7F,aAAaI,qBAAqBt7F,KAAKqF,YAAYrF,KAAK47F;MAC9D,gBAAgB57F,KAAK47F,aAAa57F,KAAK87F;MACvC,oCAAoC97F,KAAK47F,YAAY57F,KAAK87F;;;EAItD,uBAAAI;IACN,OAAO;MACL,CAACl8F,KAAKk7F,aAAaK,gBAAgB;MACnC,CAACv7F,KAAKk7F,aAAaM,cAAcx7F,KAAK27F;MACtC,CAAC37F,KAAKk7F,aAAaG,wBAAwBr7F,KAAK27F,aAAa37F,KAAK+7F;MAClE,CAAC/7F,KAAKk7F,aAAaI,qBAAqBt7F,KAAK27F,aAAa37F,KAAKqF;MAC/D,CAACrF,KAAKg8F,uBAAuBh8F,KAAK27F;;;EAI9B,uBAAAQ;IACN,OAAO;MACL,CAACn8F,KAAKk7F,aAAav8B,gBAAgB;MACnC,QAAQ3+D,KAAK27F;MACb,SAAS37F,KAAK47F,aAAa57F,KAAK87F;MAChC,4BAA4B97F,KAAK47F,YAAY57F,KAAK87F;MAClD,cAAc97F,KAAK+6F;;;EAIf,cAAAqB,CAAeC,IAAqB;IAC1C,OAAO;MACL,uBAAuB;MACvB,aAAaA;MACb,qBAAqBA,KAAar8F,KAAK+7F;MACvC,wBAAwBM,KAAar8F,KAAK+7F;MAC1C,sBAAsB/7F,KAAKqF;MAC3B,CAACrF,KAAKk7F,aAAaO,eAAez7F,KAAK+6F;MACvC,sBAAsB/6F,KAAK+6F;;;EAIvB,cAAAuB;IACN,MAAMC,IAAY;IAClB,MAAMC,IAAax8F,KAAKqF,WAAW,uBAAuB;IAC1D,OAAO,GAAGk3F,KAAaC;;EAGjB,WAAAC,CAAYC;IAClB,OAAOA,KAAa18F,KAAK+7F,gBAAgB,IAAI;;EAGvC,UAAAY;IACN,OACEv8F,IAAK;MAAAG,OAAOP,KAAKk8F;MAA2Bp1F,UAAU9G,KAAKy8F,YAAYz8F,KAAK27F;OAC1Ev7F,IAAA;MAAWW,MAAMf,KAAKe;MAAMoC,aAAanD,KAAKs8F;;;EAK5C,UAAAM;IACN,OACEx8F,IAAK;MAAAG,OAAOP,KAAKm8F;OACf/7F,IAAA;MAAMG,OAAOP,KAAKo8F,eAAe;MAAOxzF,OAAO5I,KAAK+6F,WAAW/6F,KAAKc,OAAO2iB;OACxEzjB,KAAKc,OAEPd,KAAK87F,cACJ17F,IAAA;MAAMG,OAAOP,KAAKo8F,eAAe;MAAQxzF,OAAO5I,KAAK+6F,WAAW/6F,KAAKg7F,UAAUv3E;OAC5EzjB,KAAKg7F;;EAahB,MAAA76F;IACE,OACEC,IAACC,MAAI;MAAAC,KAAA;OACHF,IAAK;MAAAE,KAAA;MAAAC,OAAOP,KAAKi8F;MAAuBn1F,UAAU9G,KAAKy8F,YAAYz8F,KAAK47F;MAAWj2F,SAAS3F,KAAKkE;OAC9FlE,KAAK28F,cACL38F,KAAK48F;;;;;;ACpKhB,IAAYC;;CAAZ,SAAYA;EACVA,EAAA;EACAA,EAAA;EACAA,EAAA;AACD,EAJD,CAAYA,oEAIX;;ACjBD,MAAMC,sBAAsB;;MCQfC,mBAAgB;EAL7B,WAAAj9F,CAAAC;;;;;eAUEC,KAAgBg9F,mBAA2B;IAQ3Ch9F,KAAAi9F,kBAAmBx1F;MACjB,KAAKA,EAAKy1F,SAAS;MACnBl9F,KAAKsH,YAAYlD,KAAKqD;AAAK;AA2G9B;EAxGC,8BAAA01F,CAA+B97F;IAC7B,MAAM+7F,IAAoB;MACxB,CAACP,+BAA+B55F,UAAU;MAC1C,CAAC45F,+BAA+B35F,UAAU;MAC1C,CAAC25F,+BAA+B95F,QAAQ;;IAG1C,OAAOq6F,EAAkB/7F;;EAG3B,eAAAg8F,CAAgBh8F;IACd,MAAMi8F,IAAe;MACnB,CAACT,+BAA+B55F,UAAU;MAC1C,CAAC45F,+BAA+B35F,UAAU;MAC1C,CAAC25F,+BAA+B95F,QAAQ;;IAG1C,OAAOu6F,EAAaj8F;;EAGtB,oBAAAk8F,CAAqBl8F;IACnB,MAAMi8F,IAAe;MACnB,CAACT,+BAA+B55F,UAAU;MAC1C,CAAC45F,+BAA+B35F,UAAU;MAC1C,CAAC25F,+BAA+B95F,QAAQ;;IAG1C,OAAOu6F,EAAaj8F;;EAGtB,MAAAlB;IACE,OACEC,IAACC,MAAI;MAAAC,KAAA;OACHF,IAAA;MAAAE,KAAA;MAAKC,OAAM;OACRP,KAAKg9F,iBAAiB7M,KAAI,CAAC1oF,GAAMuhB;MAChC,MAAMw0E,IAAax0E,MAAUhpB,KAAKg9F,iBAAiBz1F,SAAS;MAE5D,OACEnH,IACE;QAAAG,OAAO;UACL,0BAA0B;UAC1B,wBAAwBkH,EAAKy1F;;QAE/Bv3F,SAAS,MAAM3F,KAAKi9F,gBAAgBx1F;SAEpCrH,IAAK;QAAAG,OAAM;SACTH,IAAK;QAAAG,OAAM;SACTH,IAAK;QAAAG,OAAM;SACTH,IAAA;QACEG,OAAO;UACL,yFAAyF;UACzF,SAASkH,EAAKyrF;;SAGfzrF,EAAKg2F,eACJr9F,IAAK;QAAAG,OAAM;SACTH,IAAM;QAAAG,OAAM;SAAyCkH,EAAKg2F,YAAYC,UACtEt9F,IAAM;QAAAG,OAAM;SAAuCkH,EAAKg2F,YAAYE,OAIvEl2F,EAAKyrF,cACJ9yF,IAAA;QACEG,OAAO;UACL,2DAA2D;UAC3D,CAACP,KAAKm9F,+BAA+B11F,EAAKyrF,cAAc;;SAG1D9yF,IAAK;QAAAG,OAAM;SACTH,IAAA;QAAWW,MAAMf,KAAKq9F,gBAAgB51F,EAAKyrF;QAAa/vF,aAAa,GAAGnD,KAAKu9F,qBAAqB91F,EAAKyrF;cAOjH9yF,IAAK;QAAAG,OAAM;SACTH,IAAA;QAAMG,OAAM;SAAmDkH,EAAKmB,QACnEnB,EAAKm2F,WAAWx9F,IAAA;QAAMG,OAAM;SAAgDkH,EAAKm2F,YAIrFn2F,EAAKy1F,WACJ98F,IAAA;QACEG,OAAO;UACL,qFAAqF;UACrF,mDAAmDkH,EAAKy1F;;SAG1D98F,IAAW;QAAAW,MAAK;QAAoBoC,aAAY;aAKpDq6F,KAAcp9F,IAAA;QAAKG,OAAM;WAEzBi9F,KAAcp9F,IAAK;QAAAG,OAAM;;AACvB","ignoreList":[]}
|